test(sdk): (Re)write a test for SlidingSyncListInnner::find_rooms_in_list.

This commit is contained in:
Ivan Enderlin
2023-03-22 16:10:14 +01:00
parent 2840242331
commit f2aebcb983

View File

@@ -930,7 +930,10 @@ mod tests {
use imbl::vector;
use matrix_sdk_base::deserialized_responses::TimelineEvent;
use ruma::{assign, events::room::message::RoomMessageEventContent, room_id, serde::Raw, uint};
use ruma::{
api::client::sync::sync_events::v4::SlidingOp, assign,
events::room::message::RoomMessageEventContent, room_id, serde::Raw, uint,
};
use serde_json::json;
use super::*;
@@ -1192,77 +1195,6 @@ mod tests {
}
}
/*
#[test]
fn check_find_room_in_list() -> Result<()> {
let list = SlidingSyncList::builder().name("foo").add_range(0u32, 9u32).build().unwrap();
let full_window_update: v4::SyncOp = serde_json::from_value(json!({
"op": "SYNC",
"range": [0, 9],
"room_ids": [
"!A00000:matrix.example",
"!A00001:matrix.example",
"!A00002:matrix.example",
"!A00003:matrix.example",
"!A00004:matrix.example",
"!A00005:matrix.example",
"!A00006:matrix.example",
"!A00007:matrix.example",
"!A00008:matrix.example",
"!A00009:matrix.example"
],
}))
.unwrap();
list.handle_response(
10u32,
&vec![full_window_update],
&vec![(uint!(0), uint!(9))],
&vec![],
)
.unwrap();
let a02 = room_id!("!A00002:matrix.example").to_owned();
let a05 = room_id!("!A00005:matrix.example").to_owned();
let a09 = room_id!("!A00009:matrix.example").to_owned();
assert_eq!(list.find_room_in_list(&a02), Some(2));
assert_eq!(list.find_room_in_list(&a05), Some(5));
assert_eq!(list.find_room_in_list(&a09), Some(9));
assert_eq!(
list.find_rooms_in_list(&[a02.clone(), a05.clone(), a09.clone()]),
vec![(2, a02.clone()), (5, a05.clone()), (9, a09.clone())]
);
// we invalidate a few in the center
let update: v4::SyncOp = serde_json::from_value(json!({
"op": "INVALIDATE",
"range": [4, 7],
}))
.unwrap();
list.handle_response(
10u32,
&vec![update],
// &vec![(uint!(0), uint!(3)), (uint!(8), uint!(9))],
&vec![],
)
.unwrap();
assert_eq!(list.find_room_in_list(room_id!("!A00002:matrix.example")), Some(2));
assert_eq!(list.find_room_in_list(room_id!("!A00005:matrix.example")), None);
assert_eq!(list.find_room_in_list(room_id!("!A00009:matrix.example")), Some(9));
assert_eq!(
list.find_rooms_in_list(&[a02.clone(), a05, a09.clone()]),
vec![(2, a02), (9, a09)]
);
Ok(())
}
*/
macro_rules! assert_ranges {
(
list = $list:ident,
@@ -1498,6 +1430,120 @@ mod tests {
};
}
#[test]
fn test_sliding_sync_inner_find_rooms_in_lists() {
let mut list = SlidingSyncList::builder()
.name("foo")
.sync_mode(SlidingSyncMode::Selective)
.add_range(0u32, 2)
.add_range(5u32, 7)
.build()
.unwrap();
let room0 = room_id!("!room0:bar.org");
let room1 = room_id!("!room1:bar.org");
let room2 = room_id!("!room2:bar.org");
let room5 = room_id!("!room5:bar.org");
let room6 = room_id!("!room6:bar.org");
let room7 = room_id!("!room7:bar.org");
// Simulate a request.
let _ = list.next_request();
// A new response.
let sync0: v4::SyncOp = serde_json::from_value(json!({
"op": SlidingOp::Sync,
"range": [0, 2],
"room_ids": [
room0,
room1,
room2,
],
}))
.unwrap();
let sync1: v4::SyncOp = serde_json::from_value(json!({
"op": SlidingOp::Sync,
"range": [5, 7],
"room_ids": [
room5,
room6,
room7,
],
}))
.unwrap();
list.handle_response(
6,
&[sync0, sync1],
&[
room0.to_owned(),
room1.to_owned(),
room2.to_owned(),
room5.to_owned(),
room6.to_owned(),
],
)
.unwrap();
assert_eq!(
list.inner.find_rooms_in_list(&[
room0.to_owned(),
room1.to_owned(),
room2.to_owned(),
room5.to_owned(),
room6.to_owned(),
room7.to_owned(),
]),
[
(0, room0.to_owned()),
(1, room1.to_owned()),
(2, room2.to_owned()),
(5, room5.to_owned()),
(6, room6.to_owned()),
(7, room7.to_owned()),
]
);
// Simulate a request.
let _ = list.next_request();
// A new response.
let sync2: v4::SyncOp = serde_json::from_value(json!({
"op": SlidingOp::Invalidate,
"range": [1, 2],
"rooms_id": [
room1,
room2,
]
}))
.unwrap();
let sync3: v4::SyncOp = serde_json::from_value(json!({
"op": SlidingOp::Delete,
"index": 6,
"room_id": room6,
}))
.unwrap();
list.handle_response(
6,
&[sync2, sync3],
&[room1.to_owned(), room2.to_owned(), room6.to_owned()],
)
.unwrap();
assert_eq!(
list.inner.find_rooms_in_list(&[
room0.to_owned(),
room1.to_owned(),
room2.to_owned(),
room5.to_owned(),
room6.to_owned(),
room7.to_owned()
]),
[(0, room0.to_owned()), (5, room5.to_owned()), (7, room7.to_owned()),]
);
}
#[test]
fn test_room_list_entry_is_empty_or_invalidated() {
let room_id = room_id!("!foo:bar.org");