Skip to content

Commit 62373f9

Browse files
committed
test: Update tests according to last patches.
1 parent 52422ff commit 62373f9

File tree

10 files changed

+244
-143
lines changed

10 files changed

+244
-143
lines changed

crates/matrix-sdk-base/src/store/integration_tests.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,7 +1611,7 @@ impl StateStoreIntegrationTests for DynStateStore {
16111611
room_id,
16121612
txn0.clone(),
16131613
MilliSecondsSinceUnixEpoch::now(),
1614-
event0.into(),
1614+
event0.clone().into(),
16151615
0,
16161616
)
16171617
.await?;
@@ -1639,15 +1639,16 @@ impl StateStoreIntegrationTests for DynStateStore {
16391639
assert_matches!(dependents[0].kind, DependentQueuedRequestKind::RedactEvent);
16401640

16411641
// Update the event id.
1642+
let (event, event_type) = event0.raw();
16421643
let event_id = owned_event_id!("$1");
16431644
let num_updated = self
16441645
.mark_dependent_queued_requests_as_ready(
16451646
room_id,
16461647
&txn0,
16471648
SentRequestKey::Event {
16481649
event_id: event_id.clone(),
1649-
event: Raw::from_json_string("{}".to_string()),
1650-
event_type: "m.foo".to_string(),
1650+
event: event.clone(),
1651+
event_type: event_type.to_owned(),
16511652
},
16521653
)
16531654
.await?;
@@ -1658,9 +1659,18 @@ impl StateStoreIntegrationTests for DynStateStore {
16581659
assert_eq!(dependents.len(), 1);
16591660
assert_eq!(dependents[0].parent_transaction_id, txn0);
16601661
assert_eq!(dependents[0].own_transaction_id, child_txn);
1661-
assert_matches!(dependents[0].parent_key.as_ref(), Some(SentRequestKey::Event(eid)) => {
1662-
assert_eq!(*eid, event_id);
1663-
});
1662+
assert_matches!(
1663+
dependents[0].parent_key.as_ref(),
1664+
Some(SentRequestKey::Event {
1665+
event_id: received_event_id,
1666+
event: received_event,
1667+
event_type: received_event_type
1668+
}) => {
1669+
assert_eq!(received_event_id, &event_id);
1670+
assert_eq!(received_event.json().to_string(), event.json().to_string());
1671+
assert_eq!(received_event_type.as_str(), event_type);
1672+
}
1673+
);
16641674
assert_matches!(dependents[0].kind, DependentQueuedRequestKind::RedactEvent);
16651675

16661676
// Now remove it.

crates/matrix-sdk-ui/src/timeline/latest_event.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,7 @@ mod tests {
205205
use ruma::{
206206
MilliSecondsSinceUnixEpoch, event_id,
207207
events::{AnyMessageLikeEventContent, room::message::RoomMessageEventContent},
208-
room_id,
209-
serde::Raw,
210-
uint, user_id,
208+
room_id, uint, user_id,
211209
};
212210

213211
use super::{

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

Lines changed: 47 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,13 @@ use assert_matches::assert_matches;
1818
use assert_matches2::assert_let;
1919
use eyeball_im::VectorDiff;
2020
use futures_util::StreamExt;
21-
use matrix_sdk::{
22-
executor::spawn, ruma::MilliSecondsSinceUnixEpoch, test_utils::mocks::MatrixMockServer,
23-
};
21+
use matrix_sdk::{executor::spawn, test_utils::mocks::MatrixMockServer};
2422
use matrix_sdk_test::{JoinedRoomBuilder, async_test, event_factory::EventFactory};
2523
use matrix_sdk_ui::timeline::{EventSendState, RoomExt};
2624
use ruma::{
2725
event_id,
2826
events::room::message::{MessageType, RoomMessageEventContent},
29-
room_id, uint, user_id,
27+
room_id, user_id,
3028
};
3129
use serde_json::json;
3230
use stream_assert::{assert_next_matches, assert_pending};
@@ -82,43 +80,70 @@ async fn test_echo() {
8280
send_hdl.await.unwrap().unwrap();
8381

8482
assert_let!(Some(timeline_updates) = timeline_stream.next().await);
85-
assert_eq!(timeline_updates.len(), 1);
83+
assert_eq!(timeline_updates.len(), 5);
8684

85+
// The `EventSendState` has been updated.
8786
assert_let!(VectorDiff::Set { index: 1, value: sent_confirmation } = &timeline_updates[0]);
8887
let item = sent_confirmation.as_event().unwrap();
8988
assert_matches!(item.send_state(), Some(EventSendState::Sent { .. }));
9089
assert_eq!(item.event_id(), Some(event_id));
9190

91+
// The local event is removed.
92+
assert_matches!(&timeline_updates[1], VectorDiff::Remove { index: 1 });
93+
94+
// The new event is inserted in the Event Cache: it comes as a remote event.
95+
assert_let!(VectorDiff::PushFront { value: remote_event } = &timeline_updates[2]);
96+
let item = remote_event.as_event().unwrap();
97+
assert_let!(Some(msg) = item.content().as_message());
98+
assert_let!(MessageType::Text(text) = msg.msgtype());
99+
assert_eq!(text.body, "Hello, World!");
100+
assert_eq!(item.event_id(), Some(event_id));
101+
102+
// The date divider is adjusted.
103+
assert_let!(VectorDiff::PushFront { value: date_divider } = &timeline_updates[3]);
104+
assert!(date_divider.is_date_divider());
105+
assert_matches!(&timeline_updates[4], VectorDiff::Remove { index: 2 });
106+
107+
assert_pending!(timeline_stream);
108+
109+
let another_event_id = event_id!("$ev1");
92110
let f = EventFactory::new();
93111
server
94112
.sync_room(
95113
&client,
96-
JoinedRoomBuilder::new(room_id).add_timeline_event(
97-
f.text_msg("Hello, World!")
98-
.sender(user_id!("@example:localhost"))
99-
.event_id(event_id)
100-
.server_ts(152038280)
101-
.unsigned_transaction_id(txn_id),
102-
),
114+
JoinedRoomBuilder::new(room_id)
115+
.add_timeline_event(
116+
f.text_msg("Hello, World!")
117+
.sender(user_id!("@example:localhost"))
118+
.event_id(event_id)
119+
.server_ts(152038280)
120+
.unsigned_transaction_id(txn_id),
121+
)
122+
.add_timeline_event(
123+
f.text_msg("Raclette")
124+
.sender(user_id!("@example:localhost"))
125+
.event_id(another_event_id)
126+
.server_ts(152038281),
127+
),
103128
)
104129
.await;
105130

131+
// The Event Cache deduplicates the first event, but we receive a second one.
106132
assert_let!(Some(timeline_updates) = timeline_stream.next().await);
107-
assert_eq!(timeline_updates.len(), 4);
133+
assert_eq!(timeline_updates.len(), 5);
108134

109-
// Local echo is replaced with the remote echo.
110-
assert_let!(VectorDiff::Remove { index: 1 } = &timeline_updates[0]);
135+
assert_matches!(&timeline_updates[0], VectorDiff::Remove { index: 1 });
111136

112-
assert_let!(VectorDiff::PushFront { value: remote_echo } = &timeline_updates[1]);
113-
let item = remote_echo.as_event().unwrap();
114-
assert!(item.is_own());
115-
assert_eq!(item.timestamp(), MilliSecondsSinceUnixEpoch(uint!(152038280)));
137+
assert_let!(VectorDiff::PushFront { value: first_event } = &timeline_updates[1]);
138+
assert_eq!(first_event.as_event().unwrap().event_id(), Some(event_id));
139+
140+
assert_let!(VectorDiff::Insert { index: 1, value: second_event } = &timeline_updates[2]);
141+
assert_eq!(second_event.as_event().unwrap().event_id(), Some(another_event_id));
116142

117-
// The date divider is also replaced.
118-
assert_let!(VectorDiff::PushFront { value: date_divider } = &timeline_updates[2]);
143+
assert_let!(VectorDiff::PushFront { value: date_divider } = &timeline_updates[3]);
119144
assert!(date_divider.is_date_divider());
120145

121-
assert_let!(VectorDiff::Remove { index: 2 } = &timeline_updates[3]);
146+
assert_matches!(&timeline_updates[4], VectorDiff::Remove { index: 3 });
122147

123148
assert_pending!(timeline_stream);
124149
}

crates/matrix-sdk-ui/tests/integration/timeline/edit.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,17 +257,26 @@ async fn test_edit_local_echo() {
257257
timeline.room().send_queue().set_enabled(true);
258258

259259
assert_let!(Some(timeline_updates) = timeline_stream.next().await);
260-
assert_eq!(timeline_updates.len(), 1);
260+
assert_eq!(timeline_updates.len(), 5);
261261

262262
// Observe the event being sent, and replacing the local echo.
263263
assert_let!(VectorDiff::Set { index: 1, value: item } = &timeline_updates[0]);
264-
265264
let item = item.as_event().unwrap();
266265
assert!(item.is_local_echo());
267-
268266
let edit_message = item.content().as_message().unwrap();
269267
assert_eq!(edit_message.body(), "hello, world");
270268

269+
// Since the event is sent, it's inserted in the Event Cache, which
270+
// transforms it as a remote event.
271+
assert_matches!(&timeline_updates[1], VectorDiff::Remove { index: 1 });
272+
assert_let!(VectorDiff::PushFront { value: remote_event } = &timeline_updates[2]);
273+
assert_eq!(remote_event.as_event().unwrap().event_id().unwrap(), "$1");
274+
275+
// The date divider is adjusted.
276+
assert_let!(VectorDiff::PushFront { value: date_divider } = &timeline_updates[3]);
277+
assert!(date_divider.is_date_divider());
278+
assert_matches!(&timeline_updates[4], VectorDiff::Remove { index: 2 });
279+
271280
// No new updates.
272281
assert_pending!(timeline_stream);
273282
}

crates/matrix-sdk-ui/tests/integration/timeline/media.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,14 @@ async fn test_send_attachment_from_file() -> TestResult {
202202
assert_matches!(item.send_state(), Some(EventSendState::Sent{ event_id }) => {
203203
assert_eq!(event_id, event_id!("$media"));
204204
});
205+
206+
// Since it's sent, it's inserted in the Event Cache, and becomes a
207+
// remote event.
208+
assert_let_timeout!(Some(VectorDiff::Remove { index: 1 }) = timeline_stream.next());
209+
assert_let_timeout!(
210+
Some(VectorDiff::Insert { index: 1, value: remote_event }) = timeline_stream.next()
211+
);
212+
assert_eq!(remote_event.event_id().unwrap(), event_id!("$media"));
205213
}
206214

207215
// That's all, folks!
@@ -336,6 +344,14 @@ async fn test_send_attachment_from_bytes() -> TestResult {
336344
assert_matches!(item.send_state(), Some(EventSendState::Sent{ event_id }) => {
337345
assert_eq!(event_id, event_id!("$media"));
338346
});
347+
348+
// Since it's sent, it's inserted in the Event Cache, and becomes a
349+
// remote event.
350+
assert_let_timeout!(Some(VectorDiff::Remove { index: 1 }) = timeline_stream.next());
351+
assert_let_timeout!(
352+
Some(VectorDiff::Insert { index: 1, value: remote_event }) = timeline_stream.next()
353+
);
354+
assert_eq!(remote_event.event_id().unwrap(), event_id!("$media"));
339355
}
340356

341357
// That's all, folks!
@@ -508,6 +524,14 @@ async fn test_send_gallery_from_bytes() -> TestResult {
508524
assert_matches!(item.send_state(), Some(EventSendState::Sent{ event_id }) => {
509525
assert_eq!(event_id, event_id!("$media"));
510526
});
527+
528+
// Since it's sent, it's inserted in the Event Cache, and becomes a
529+
// remote event.
530+
assert_let_timeout!(Some(VectorDiff::Remove { index: 1 }) = timeline_stream.next());
531+
assert_let_timeout!(
532+
Some(VectorDiff::Insert { index: 1, value: remote_event }) = timeline_stream.next()
533+
);
534+
assert_eq!(remote_event.event_id().unwrap(), event_id!("$media"));
511535
}
512536

513537
// That's all, folks!

crates/matrix-sdk-ui/tests/integration/timeline/mod.rs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,8 @@ async fn test_redact_local_sent_message() {
386386
let (_, mut timeline_stream) = timeline.subscribe().await;
387387

388388
// Mock event sending.
389-
server.mock_room_send().ok(event_id!("$wWgymRfo7ri1uQx0NXO40vLJ")).mock_once().mount().await;
389+
let event_id = event_id!("$ev0");
390+
server.mock_room_send().ok(event_id).mock_once().mount().await;
390391

391392
// Send the event so it's added to the send queue as a local event.
392393
timeline
@@ -408,19 +409,27 @@ async fn test_redact_local_sent_message() {
408409
assert!(date_divider.is_date_divider());
409410

410411
assert_let!(Some(timeline_updates) = timeline_stream.next().await);
411-
assert_eq!(timeline_updates.len(), 1);
412+
assert_eq!(timeline_updates.len(), 5);
412413

413414
// We receive an update in the timeline from the send queue.
414-
assert_let!(VectorDiff::Set { index, value: item } = &timeline_updates[0]);
415-
assert_eq!(*index, 1);
416-
417-
assert_pending!(timeline_stream);
418-
419-
// Check the event is sent but still considered local.
415+
assert_let!(VectorDiff::Set { index: 1, value: item } = &timeline_updates[0]);
420416
let event = item.as_event().unwrap();
421417
assert!(event.is_local_echo());
422418
assert_matches!(event.send_state(), Some(EventSendState::Sent { .. }));
423419

420+
// And then it's inserted in the Event Cache, and considered remote.
421+
assert_matches!(&timeline_updates[1], VectorDiff::Remove { index: 1 });
422+
assert_let!(VectorDiff::PushFront { value: remote_event } = &timeline_updates[2]);
423+
assert_eq!(remote_event.as_event().unwrap().event_id(), Some(event_id));
424+
425+
// The date divider is adjusted.
426+
assert_let!(VectorDiff::PushFront { value: date_divider } = &timeline_updates[3]);
427+
assert!(date_divider.is_date_divider());
428+
429+
assert_matches!(&timeline_updates[4], VectorDiff::Remove { index: 2 });
430+
431+
assert_pending!(timeline_stream);
432+
424433
// Mock the redaction response for the event we just sent. Ensure it's called
425434
// once.
426435
server.mock_room_redact().ok(event_id!("$redaction_event_id")).mock_once().mount().await;

0 commit comments

Comments
 (0)