Skip to content

Commit 9a1de1d

Browse files
committed
test(sdk): Improve tests around RoomPagination::run_backwards.
1 parent 7377971 commit 9a1de1d

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

crates/matrix-sdk/src/event_cache/pagination.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ impl RoomPagination {
115115
if let Some(outcome) = self.run_backwards_impl(batch_size).await? {
116116
match until(outcome, timeline_has_been_reset).await {
117117
ControlFlow::Continue(()) => {
118-
debug!("back-pagination continues");
118+
trace!("back-pagination continues");
119119

120120
timeline_has_been_reset = TimelineHasBeenResetWhilePaginating::No;
121121

crates/matrix-sdk/tests/integration/event_cache.rs

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,7 @@ async fn test_backpaginate_many_times_with_many_iterations() {
435435
}
436436

437437
let mut num_iterations = 0;
438+
let mut num_paginations = 0;
438439
let mut global_events = Vec::new();
439440
let mut global_reached_start = false;
440441

@@ -459,19 +460,29 @@ async fn test_backpaginate_many_times_with_many_iterations() {
459460
// Then if I backpaginate in a loop,
460461
let pagination = room_event_cache.pagination();
461462
while pagination.get_or_wait_for_token().await.is_some() {
462-
let BackPaginationOutcome { reached_start, events } =
463-
pagination.run_backwards(20, once).await.unwrap();
463+
pagination
464+
.run_backwards(20, |outcome, timeline_has_been_reset| {
465+
num_paginations += 1;
464466

465-
if !global_reached_start {
466-
global_reached_start = reached_start;
467-
}
468-
global_events.extend(events);
467+
assert_matches!(timeline_has_been_reset, TimelineHasBeenResetWhilePaginating::No);
468+
469+
if !global_reached_start {
470+
global_reached_start = outcome.reached_start;
471+
}
472+
473+
global_events.extend(outcome.events);
474+
475+
ready(ControlFlow::Break(()))
476+
})
477+
.await
478+
.unwrap();
469479

470480
num_iterations += 1;
471481
}
472482

473483
// I'll get all the previous events,
474-
assert_eq!(num_iterations, 2);
484+
assert_eq!(num_iterations, 2); // in two iterations…
485+
assert_eq!(num_paginations, 2); // … we get two paginations.
475486
assert!(global_reached_start);
476487

477488
assert_event_matches_msg(&global_events[0], "world");
@@ -540,6 +551,7 @@ async fn test_backpaginate_many_times_with_one_iteration() {
540551
}
541552

542553
let mut num_iterations = 0;
554+
let mut num_paginations = 0;
543555
let mut global_events = Vec::new();
544556
let mut global_reached_start = false;
545557

@@ -565,7 +577,11 @@ async fn test_backpaginate_many_times_with_one_iteration() {
565577
let pagination = room_event_cache.pagination();
566578
while pagination.get_or_wait_for_token().await.is_some() {
567579
pagination
568-
.run_backwards(20, |outcome, _timeline_has_been_reset| {
580+
.run_backwards(20, |outcome, timeline_has_been_reset| {
581+
num_paginations += 1;
582+
583+
assert_matches!(timeline_has_been_reset, TimelineHasBeenResetWhilePaginating::No);
584+
569585
if !global_reached_start {
570586
global_reached_start = outcome.reached_start;
571587
}
@@ -585,7 +601,8 @@ async fn test_backpaginate_many_times_with_one_iteration() {
585601
}
586602

587603
// I'll get all the previous events,
588-
assert_eq!(num_iterations, 1); // in one iteration!
604+
assert_eq!(num_iterations, 1); // in one iteration…
605+
assert_eq!(num_paginations, 2); // … we get two paginations!
589606
assert!(global_reached_start);
590607

591608
assert_event_matches_msg(&global_events[0], "world");

0 commit comments

Comments
 (0)