Skip to content

Commit 4837add

Browse files
Hywanstefanceriu
authored andcommitted
test(base): Test that sliding sync persists the room (cached) display name.
1 parent abf0bbb commit 4837add

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

crates/matrix-sdk-base/src/sliding_sync.rs

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,8 +329,10 @@ mod tests {
329329
use super::processors::room::msc4186::cache_latest_events;
330330
use crate::{
331331
rooms::normal::{RoomHero, RoomInfoNotableUpdateReasons},
332+
store::{RoomLoadSettings, StoreConfig},
332333
test_utils::logged_in_base_client,
333334
BaseClient, EncryptionState, RequestedRequiredStates, RoomInfoNotableUpdate, RoomState,
335+
SessionMeta,
334336
};
335337
#[cfg(feature = "e2e-encryption")]
336338
use crate::{store::MemoryStore, Room};
@@ -1087,6 +1089,68 @@ mod tests {
10871089
assert!(client_room.name().is_none());
10881090
}
10891091

1092+
#[async_test]
1093+
async fn test_display_name_is_persisted_from_sliding_sync() {
1094+
let user_id = user_id!("@u:e.uk");
1095+
let room_id = room_id!("!r:e.uk");
1096+
let session_meta = SessionMeta { user_id: user_id.to_owned(), device_id: "FOOBAR".into() };
1097+
let state_store;
1098+
1099+
{
1100+
let client = {
1101+
let store = StoreConfig::new("cross-process-foo".to_owned());
1102+
state_store = store.state_store.clone();
1103+
1104+
let client = BaseClient::new(store);
1105+
client
1106+
.activate(
1107+
session_meta.clone(),
1108+
RoomLoadSettings::default(),
1109+
#[cfg(feature = "e2e-encryption")]
1110+
None,
1111+
)
1112+
.await
1113+
.expect("`activate` failed!");
1114+
1115+
client
1116+
};
1117+
1118+
// When the sliding sync response contains an explicit room name as well as an
1119+
// alias
1120+
let room = room_with_name("Hello World", user_id);
1121+
let response = response_with_room(room_id, room);
1122+
client
1123+
.process_sliding_sync(&response, &(), &RequestedRequiredStates::default())
1124+
.await
1125+
.expect("Failed to process sync");
1126+
1127+
let room = client.get_room(room_id).expect("No room found");
1128+
assert_eq!(room.cached_display_name().unwrap().to_string(), "Hello World");
1129+
}
1130+
1131+
{
1132+
let client = {
1133+
let mut store = StoreConfig::new("cross-process-foo".to_owned());
1134+
store.state_store = state_store;
1135+
let client = BaseClient::new(store);
1136+
client
1137+
.activate(
1138+
session_meta,
1139+
RoomLoadSettings::default(),
1140+
#[cfg(feature = "e2e-encryption")]
1141+
None,
1142+
)
1143+
.await
1144+
.expect("`activate` failed!");
1145+
1146+
client
1147+
};
1148+
1149+
let room = client.get_room(room_id).expect("No room found");
1150+
assert_eq!(room.cached_display_name().unwrap().to_string(), "Hello World");
1151+
}
1152+
}
1153+
10901154
#[async_test]
10911155
async fn test_compute_heroes_from_sliding_sync() {
10921156
// Given a logged-in client
@@ -2404,6 +2468,16 @@ mod tests {
24042468
room
24052469
}
24062470

2471+
fn room_with_name(name: &str, user_id: &UserId) -> http::response::Room {
2472+
let mut room = http::response::Room::new();
2473+
2474+
let name_event_content = RoomNameEventContent::new(name.to_owned());
2475+
2476+
room.required_state.push(make_state_event(user_id, "", name_event_content, None));
2477+
2478+
room
2479+
}
2480+
24072481
fn room_with_timeline(events: &[serde_json::Value]) -> http::response::Room {
24082482
let mut room = http::response::Room::new();
24092483
room.timeline.extend(

0 commit comments

Comments
 (0)