Skip to content

Commit 8f1722f

Browse files
committed
test: have the PendingEdit test helper use the matrix mock server and event cache storage
1 parent 5d95387 commit 8f1722f

File tree

1 file changed

+52
-37
lines changed
  • crates/matrix-sdk-ui/tests/integration/timeline

1 file changed

+52
-37
lines changed

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

Lines changed: 52 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,24 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
use std::time::Duration;
15+
use std::{sync::Arc, time::Duration};
1616

1717
use as_variant::as_variant;
1818
use assert_matches::assert_matches;
1919
use assert_matches2::assert_let;
2020
use eyeball_im::VectorDiff;
2121
use futures_util::{FutureExt, StreamExt};
2222
use matrix_sdk::{
23-
config::SyncSettings, room::edit::EditedContent, test_utils::logged_in_client_with_server,
23+
config::{StoreConfig, SyncSettings},
24+
linked_chunk::{ChunkIdentifier, Update},
25+
room::edit::EditedContent,
26+
test_utils::{logged_in_client_with_server, mocks::MatrixMockServer},
2427
Client,
2528
};
29+
use matrix_sdk_base::event_cache::{
30+
store::{EventCacheStore, MemoryStore},
31+
Gap,
32+
};
2633
use matrix_sdk_test::{
2734
async_test, event_factory::EventFactory, mocks::mock_encryption_state, JoinedRoomBuilder,
2835
SyncResponseBuilder, ALICE, BOB,
@@ -46,7 +53,7 @@ use ruma::{
4653
MessageType, RoomMessageEventContent, RoomMessageEventContentWithoutRelation,
4754
TextMessageEventContent,
4855
},
49-
AnyMessageLikeEventContent, AnyTimelineEvent,
56+
AnyMessageLikeEventContent, AnyStateEvent, AnyTimelineEvent,
5057
},
5158
owned_event_id, room_id,
5259
serde::Raw,
@@ -57,7 +64,7 @@ use stream_assert::assert_next_matches;
5764
use tokio::{task::yield_now, time::sleep};
5865
use wiremock::{
5966
matchers::{header, method, path_regex},
60-
Mock, MockServer, ResponseTemplate,
67+
Mock, ResponseTemplate,
6168
};
6269

6370
use crate::mock_sync;
@@ -851,69 +858,77 @@ async fn test_edit_local_echo_with_unsupported_content() {
851858

852859
struct PendingEditHelper {
853860
client: Client,
854-
server: MockServer,
861+
server: MatrixMockServer,
855862
timeline: Timeline,
856-
sync_builder: SyncResponseBuilder,
857-
sync_settings: SyncSettings,
858863
room_id: OwnedRoomId,
859864
}
860865

861866
impl PendingEditHelper {
862867
async fn new() -> Self {
863868
let room_id = room_id!("!a98sd12bjh:example.org");
864-
let (client, server) = logged_in_client_with_server().await;
865-
let sync_settings = SyncSettings::new().timeout(Duration::from_millis(3000));
866-
867-
let mut sync_builder = SyncResponseBuilder::new();
868-
sync_builder.add_joined_room(JoinedRoomBuilder::new(room_id));
869869

870-
mock_sync(&server, sync_builder.build_json_sync_response(), None).await;
871-
let _response = client.sync_once(sync_settings.clone()).await.unwrap();
872-
server.reset().await;
870+
let event_cache_store = Arc::new(MemoryStore::new());
871+
let server = MatrixMockServer::new().await;
873872

874-
mock_encryption_state(&server, false).await;
873+
let client = server
874+
.client_builder()
875+
.store_config(
876+
StoreConfig::new("hodor".to_owned()).event_cache_store(event_cache_store.clone()),
877+
)
878+
.build()
879+
.await;
875880

876881
{
877882
// Fill the initial prev-batch token to avoid waiting for it later.
878883
let ec = client.event_cache();
879884
ec.subscribe().unwrap();
880-
ec.add_initial_events(room_id, vec![], Some("prev-batch-token".to_owned()))
885+
ec.enable_storage().unwrap();
886+
887+
event_cache_store
888+
.handle_linked_chunk_updates(
889+
room_id,
890+
vec![
891+
// Maintain the invariant that the first chunk is an items.
892+
Update::NewItemsChunk {
893+
previous: None,
894+
new: ChunkIdentifier::new(0),
895+
next: None,
896+
},
897+
// Mind the gap!
898+
Update::NewGapChunk {
899+
previous: Some(ChunkIdentifier::new(0)),
900+
new: ChunkIdentifier::new(1),
901+
next: None,
902+
gap: Gap { prev_token: "prev-batch-token".to_owned() },
903+
},
904+
],
905+
)
881906
.await
882907
.unwrap();
883908
}
884909

910+
server.sync_joined_room(&client, room_id).await;
911+
server.mock_room_state_encryption().plain().mount().await;
912+
885913
let room = client.get_room(room_id).unwrap();
886914
let timeline = room.timeline().await.unwrap();
887915

888-
Self { client, server, timeline, sync_builder, sync_settings, room_id: room_id.to_owned() }
916+
Self { client, server, timeline, room_id: room_id.to_owned() }
889917
}
890918

891919
async fn handle_sync(&mut self, joined_room_builder: JoinedRoomBuilder) {
892-
self.sync_builder.add_joined_room(joined_room_builder);
893-
894-
mock_sync(&self.server, self.sync_builder.build_json_sync_response(), None).await;
895-
let _response = self.client.sync_once(self.sync_settings.clone()).await.unwrap();
896-
897-
self.server.reset().await;
920+
self.server.sync_room(&self.client, joined_room_builder).await;
898921
}
899922

900923
async fn handle_backpagination(&mut self, events: Vec<Raw<AnyTimelineEvent>>, batch_size: u16) {
901-
Mock::given(method("GET"))
902-
.and(path_regex(r"^/_matrix/client/r0/rooms/.*/messages$"))
903-
.and(header("authorization", "Bearer 1234"))
904-
.respond_with(ResponseTemplate::new(200).set_body_json(json!({
905-
"start": "123",
906-
"end": "yolo",
907-
"chunk": events,
908-
"state": []
909-
})))
910-
.expect(1)
911-
.mount(&self.server)
924+
self.server
925+
.mock_room_messages()
926+
.ok("123".to_owned(), Some("yolo".to_owned()), events, Vec::<Raw<AnyStateEvent>>::new())
927+
.mock_once()
928+
.mount()
912929
.await;
913930

914931
self.timeline.live_paginate_backwards(batch_size).await.unwrap();
915-
916-
self.server.reset().await;
917932
}
918933
}
919934

0 commit comments

Comments
 (0)