Skip to content

Commit e19bdbf

Browse files
committed
test(ui): Adjust tests according to the new Timeline behaviour.
1 parent 14d0cc1 commit e19bdbf

File tree

9 files changed

+210
-327
lines changed

9 files changed

+210
-327
lines changed

crates/matrix-sdk-ui/src/timeline/event_item/content/mod.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -318,11 +318,6 @@ impl TimelineItemContent {
318318
as_variant!(self, Self::UnableToDecrypt)
319319
}
320320

321-
#[cfg(test)]
322-
pub(crate) fn is_redacted(&self) -> bool {
323-
matches!(self, Self::RedactedMessage)
324-
}
325-
326321
// These constructors could also be `From` implementations, but that would
327322
// allow users to call them directly, which should not be supported
328323
pub(crate) fn message(

crates/matrix-sdk-ui/src/timeline/tests/basic.rs

Lines changed: 1 addition & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use ruma::{
2323
receipt::{Receipt, ReceiptThread, ReceiptType},
2424
room::{
2525
member::{MembershipState, RedactedRoomMemberEventContent, RoomMemberEventContent},
26-
message::{MessageType, RoomMessageEventContent},
26+
message::MessageType,
2727
name::RoomNameEventContent,
2828
topic::RedactedRoomTopicEventContent,
2929
},
@@ -280,77 +280,6 @@ async fn test_other_state() {
280280
assert_matches!(full_content, FullStateEventContent::Redacted(_));
281281
}
282282

283-
#[async_test]
284-
async fn test_dedup_pagination() {
285-
let timeline = TestTimeline::new();
286-
287-
let event = timeline
288-
.event_builder
289-
.make_sync_message_event(*ALICE, RoomMessageEventContent::text_plain("o/"));
290-
timeline.handle_live_event(SyncTimelineEvent::new(event.clone())).await;
291-
// This cast is not actually correct, sync events aren't valid
292-
// back-paginated events, as they are missing `room_id`. However, the
293-
// timeline doesn't care about that `room_id` and casts back to
294-
// `Raw<AnySyncTimelineEvent>` before attempting to deserialize.
295-
timeline.handle_back_paginated_event(event.cast()).await;
296-
297-
let timeline_items = timeline.controller.items().await;
298-
assert_eq!(timeline_items.len(), 2);
299-
assert_matches!(
300-
timeline_items[0].kind,
301-
TimelineItemKind::Virtual(VirtualTimelineItem::DateDivider(_))
302-
);
303-
assert_matches!(timeline_items[1].kind, TimelineItemKind::Event(_));
304-
}
305-
306-
#[async_test]
307-
async fn test_dedup_initial() {
308-
let timeline = TestTimeline::new();
309-
310-
let f = &timeline.factory;
311-
let event_a = f.text_msg("A").sender(*ALICE).into_sync();
312-
let event_b = f.text_msg("B").sender(*BOB).into_sync();
313-
let event_c = f.text_msg("C").sender(*CAROL).into_sync();
314-
315-
timeline
316-
.controller
317-
.add_events_at(
318-
[
319-
// two events
320-
event_a.clone(),
321-
event_b.clone(),
322-
// same events got duplicated in next sync response
323-
event_a,
324-
event_b,
325-
// … and a new event also came in
326-
event_c,
327-
]
328-
.into_iter(),
329-
TimelineNewItemPosition::End { origin: RemoteEventOrigin::Sync },
330-
)
331-
.await;
332-
333-
let timeline_items = timeline.controller.items().await;
334-
assert_eq!(timeline_items.len(), 4);
335-
336-
assert!(timeline_items[0].is_date_divider());
337-
338-
let event1 = &timeline_items[1];
339-
let event2 = &timeline_items[2];
340-
let event3 = &timeline_items[3];
341-
342-
// Make sure the order is right.
343-
assert_eq!(event1.as_event().unwrap().sender(), *ALICE);
344-
assert_eq!(event2.as_event().unwrap().sender(), *BOB);
345-
assert_eq!(event3.as_event().unwrap().sender(), *CAROL);
346-
347-
// Make sure we reused IDs when deduplicating events.
348-
assert_eq!(event1.unique_id().0, "0");
349-
assert_eq!(event2.unique_id().0, "1");
350-
assert_eq!(event3.unique_id().0, "2");
351-
assert_eq!(timeline_items[0].unique_id().0, "3");
352-
}
353-
354283
#[async_test]
355284
async fn test_internal_id_prefix() {
356285
let timeline = TestTimeline::with_internal_id_prefix("le_prefix_".to_owned());

crates/matrix-sdk-ui/src/timeline/tests/echo.rs

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use assert_matches::assert_matches;
1818
use eyeball_im::VectorDiff;
1919
use matrix_sdk::{assert_next_matches_with_timeout, send_queue::RoomSendQueueUpdate};
2020
use matrix_sdk_base::store::QueueWedgeError;
21-
use matrix_sdk_test::{async_test, event_factory::EventFactory, ALICE, BOB};
21+
use matrix_sdk_test::{async_test, ALICE, BOB};
2222
use ruma::{
2323
event_id,
2424
events::{room::message::RoomMessageEventContent, AnyMessageLikeEventContent},
@@ -187,42 +187,6 @@ async fn test_remote_echo_new_position() {
187187
assert_pending!(stream);
188188
}
189189

190-
#[async_test]
191-
async fn test_date_divider_duplication() {
192-
let timeline = TestTimeline::new();
193-
194-
// Given two remote events from one day, and a local event from another day…
195-
let f = EventFactory::new().sender(&BOB);
196-
timeline.handle_live_event(f.text_msg("A")).await;
197-
timeline.handle_live_event(f.text_msg("B")).await;
198-
timeline
199-
.handle_local_event(AnyMessageLikeEventContent::RoomMessage(
200-
RoomMessageEventContent::text_plain("C"),
201-
))
202-
.await;
203-
204-
let items = timeline.controller.items().await;
205-
assert_eq!(items.len(), 5);
206-
assert!(items[0].is_date_divider());
207-
assert!(items[1].is_remote_event());
208-
assert!(items[2].is_remote_event());
209-
assert!(items[3].is_date_divider());
210-
assert!(items[4].is_local_echo());
211-
212-
// … when the second remote event is re-received (day still the same)
213-
let event_id = items[2].as_event().unwrap().event_id().unwrap();
214-
timeline.handle_live_event(f.text_msg("B").event_id(event_id).server_ts(1)).await;
215-
216-
// … it should not impact the date dividers.
217-
let items = timeline.controller.items().await;
218-
assert_eq!(items.len(), 5);
219-
assert!(items[0].is_date_divider());
220-
assert!(items[1].is_remote_event());
221-
assert!(items[2].is_remote_event());
222-
assert!(items[3].is_date_divider());
223-
assert!(items[4].is_local_echo());
224-
}
225-
226190
#[async_test]
227191
async fn test_date_divider_removed_after_local_echo_disappeared() {
228192
let timeline = TestTimeline::new();

crates/matrix-sdk-ui/src/timeline/tests/redaction.rs

Lines changed: 1 addition & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@ use matrix_sdk_base::deserialized_responses::SyncTimelineEvent;
1919
use matrix_sdk_test::{async_test, ALICE, BOB};
2020
use ruma::events::{
2121
reaction::RedactedReactionEventContent,
22-
room::{
23-
message::{OriginalSyncRoomMessageEvent, RedactedRoomMessageEventContent},
24-
name::RoomNameEventContent,
25-
},
22+
room::{message::OriginalSyncRoomMessageEvent, name::RoomNameEventContent},
2623
FullStateEventContent,
2724
};
2825
use stream_assert::assert_next_matches;
@@ -177,56 +174,3 @@ async fn test_reaction_redaction_timeline_filter() {
177174
assert_eq!(item.reactions().len(), 0);
178175
assert_eq!(timeline.controller.items().await.len(), 2);
179176
}
180-
181-
#[async_test]
182-
async fn test_receive_unredacted() {
183-
let timeline = TestTimeline::new();
184-
185-
let f = &timeline.factory;
186-
187-
// send two events, second one redacted
188-
timeline.handle_live_event(f.text_msg("about to be redacted").sender(&ALICE)).await;
189-
timeline
190-
.handle_live_redacted_message_event(&ALICE, RedactedRoomMessageEventContent::new())
191-
.await;
192-
193-
// redact the first one as well
194-
let items = timeline.controller.items().await;
195-
assert!(items[0].is_date_divider());
196-
let fst = items[1].as_event().unwrap();
197-
timeline.handle_live_event(f.redaction(fst.event_id().unwrap()).sender(&ALICE)).await;
198-
199-
let items = timeline.controller.items().await;
200-
assert_eq!(items.len(), 3);
201-
let fst = items[1].as_event().unwrap();
202-
let snd = items[2].as_event().unwrap();
203-
204-
// make sure we have two redacted events
205-
assert!(fst.content.is_redacted());
206-
assert!(snd.content.is_redacted());
207-
208-
// send new events with the same event ID as the previous ones
209-
timeline
210-
.handle_live_event(
211-
f.text_msg("unredacted #1")
212-
.sender(*ALICE)
213-
.event_id(fst.event_id().unwrap())
214-
.server_ts(fst.timestamp()),
215-
)
216-
.await;
217-
218-
timeline
219-
.handle_live_event(
220-
f.text_msg("unredacted #2")
221-
.sender(*ALICE)
222-
.event_id(snd.event_id().unwrap())
223-
.server_ts(snd.timestamp()),
224-
)
225-
.await;
226-
227-
// make sure we still have two redacted events
228-
let items = timeline.controller.items().await;
229-
assert_eq!(items.len(), 3);
230-
assert!(items[1].as_event().unwrap().content.is_redacted());
231-
assert!(items[2].as_event().unwrap().content.is_redacted());
232-
}

0 commit comments

Comments
 (0)