Skip to content

Commit 2d3d483

Browse files
committed
test(sdk): Test that a None latest event value is ignored.
1 parent 3701a2d commit 2d3d483

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

crates/matrix-sdk/src/latest_events/latest_event.rs

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,8 +1106,8 @@ mod tests_latest_event_value_non_wasm {
11061106
};
11071107

11081108
use super::{
1109-
LatestEventKind, LatestEventValue, LatestEventValuesForLocalEvents, RoomEventCache,
1110-
RoomSendQueueUpdate,
1109+
LatestEvent, LatestEventKind, LatestEventValue, LatestEventValuesForLocalEvents,
1110+
RoomEventCache, RoomSendQueueUpdate,
11111111
};
11121112
use crate::{
11131113
client::WeakClient,
@@ -1117,6 +1117,50 @@ mod tests_latest_event_value_non_wasm {
11171117
Client, Error,
11181118
};
11191119

1120+
#[async_test]
1121+
async fn test_update_ignores_none_value() {
1122+
let room_id = room_id!("!r0");
1123+
1124+
let server = MatrixMockServer::new().await;
1125+
let client = server.client_builder().build().await;
1126+
let weak_client = WeakClient::from_client(&client);
1127+
1128+
// Create the room.
1129+
client.base_client().get_or_create_room(room_id, RoomState::Joined);
1130+
let weak_room = WeakRoom::new(weak_client, room_id.to_owned());
1131+
1132+
// Get a `RoomEventCache`.
1133+
let event_cache = client.event_cache();
1134+
event_cache.subscribe().unwrap();
1135+
1136+
let (room_event_cache, _) = event_cache.for_room(room_id).await.unwrap();
1137+
1138+
let mut latest_event = LatestEvent::new(room_id, None, &room_event_cache, &weak_room).await;
1139+
1140+
// First off, check the default value is `None`!
1141+
assert_matches!(latest_event.current_value.get().await, LatestEventValue::None);
1142+
1143+
// Second, set a new value.
1144+
latest_event
1145+
.update(LatestEventValue::LocalIsSending(LatestEventKind::RoomMessage(
1146+
RoomMessageEventContent::text_plain("foo"),
1147+
)))
1148+
.await;
1149+
1150+
assert_matches!(
1151+
latest_event.current_value.get().await,
1152+
LatestEventValue::LocalIsSending(_)
1153+
);
1154+
1155+
// Finally, set a new `None` value. It must be ignored.
1156+
latest_event.update(LatestEventValue::None).await;
1157+
1158+
assert_matches!(
1159+
latest_event.current_value.get().await,
1160+
LatestEventValue::LocalIsSending(_)
1161+
);
1162+
}
1163+
11201164
#[async_test]
11211165
async fn test_remote_is_scanning_event_backwards_from_event_cache() {
11221166
let room_id = room_id!("!r0");

0 commit comments

Comments
 (0)