tests(event cache): make tests more resilient to the order of event cache updates

This commit is contained in:
Benjamin Bouvier
2026-03-30 11:40:19 +02:00
parent 752695c6ff
commit bdd0162831
@@ -89,6 +89,7 @@ mod tests {
use std::time::Duration;
use assert_matches::assert_matches;
use eyeball_im::VectorDiff;
use matrix_sdk_base::sleep::sleep;
use matrix_sdk_test::{BOB, JoinedRoomBuilder, async_test, event_factory::EventFactory};
use ruma::{event_id, room_id};
@@ -124,7 +125,17 @@ mod tests {
let room_id = room_id!("!omelette:fromage.fr");
let f = EventFactory::new().room(room_id).sender(*BOB);
let room = server
let room = server.sync_joined_room(&client, room_id).await;
let (room_event_cache, _drop_handles) = room.event_cache().await.unwrap();
// Starting with an empty, inactive room,
let (room_events, mut room_cache_updates) = room_event_cache.subscribe().await.unwrap();
assert!(room_events.is_empty());
assert!(room_cache_updates.is_empty());
// We get a gappy sync (so as to have a previous-batch token),
server
.sync_room(
&client,
JoinedRoomBuilder::new(room_id)
@@ -133,12 +144,14 @@ mod tests {
)
.await;
let (room_event_cache, _drop_handles) = room.event_cache().await.unwrap();
// Starting with an empty, inactive room,
let (room_events, mut room_cache_updates) = room_event_cache.subscribe().await.unwrap();
assert!(room_events.is_empty());
assert!(room_cache_updates.is_empty());
{
assert_let_timeout!(
Ok(RoomEventCacheUpdate::UpdateTimelineEvents(update)) = room_cache_updates.recv()
);
assert_eq!(update.diffs.len(), 1);
assert_matches!(update.diffs[0], VectorDiff::Clear);
assert_matches!(update.origin, EventsOrigin::Sync);
}
// Set up the mock for /messages,
server
@@ -210,9 +223,14 @@ mod tests {
)
.await;
assert_let_timeout!(
Ok(RoomEventCacheUpdate::UpdateTimelineEvents(_)) = room_cache_updates.recv()
);
{
assert_let_timeout!(
Ok(RoomEventCacheUpdate::UpdateTimelineEvents(update)) = room_cache_updates.recv()
);
assert_eq!(update.diffs.len(), 1);
assert_matches!(update.diffs[0], VectorDiff::Clear);
assert_matches!(update.origin, EventsOrigin::Sync);
}
// Set up the mock for /messages, so that it returns another prev-batch token,
server