Skip to content

Commit 210c574

Browse files
committed
test: minimize usage of EventFactory::state_key
It was used in places where we could make use of other helpers, in some cases. Also introduces the `room_avatar` helper to create the room avatar state event.
1 parent 0c74abb commit 210c574

File tree

5 files changed

+59
-69
lines changed

5 files changed

+59
-69
lines changed

crates/matrix-sdk/src/room/knock_requests.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,7 @@ impl KnockRequestMemberInfo {
107107
mod tests {
108108
use matrix_sdk_test::{async_test, event_factory::EventFactory, JoinedRoomBuilder};
109109
use ruma::{
110-
event_id,
111-
events::room::member::{MembershipState, RoomMemberEventContent},
112-
owned_user_id, room_id, user_id, EventId,
110+
event_id, events::room::member::MembershipState, owned_user_id, room_id, user_id, EventId,
113111
};
114112

115113
use crate::{
@@ -128,10 +126,9 @@ mod tests {
128126

129127
let f = EventFactory::new().room(room_id);
130128
let joined_room_builder = JoinedRoomBuilder::new(room_id).add_state_bulk(vec![f
131-
.event(RoomMemberEventContent::new(MembershipState::Knock))
129+
.member(user_id)
130+
.membership(MembershipState::Knock)
132131
.event_id(event_id)
133-
.sender(user_id)
134-
.state_key(user_id)
135132
.into_raw_timeline()
136133
.cast()]);
137134
let room = server.sync_room(&client, joined_room_builder).await;

crates/matrix-sdk/src/room/mod.rs

+3-8
Original file line numberDiff line numberDiff line change
@@ -3694,11 +3694,7 @@ mod tests {
36943694
async_test, event_factory::EventFactory, test_json, JoinedRoomBuilder, StateTestEvent,
36953695
SyncResponseBuilder,
36963696
};
3697-
use ruma::{
3698-
device_id, event_id,
3699-
events::room::member::{MembershipState, RoomMemberEventContent},
3700-
int, room_id, user_id,
3701-
};
3697+
use ruma::{device_id, event_id, events::room::member::MembershipState, int, room_id, user_id};
37023698
use wiremock::{
37033699
matchers::{header, method, path_regex},
37043700
Mock, MockServer, ResponseTemplate,
@@ -3894,10 +3890,9 @@ mod tests {
38943890

38953891
let f = EventFactory::new().room(room_id);
38963892
let joined_room_builder = JoinedRoomBuilder::new(room_id).add_state_bulk(vec![f
3897-
.event(RoomMemberEventContent::new(MembershipState::Knock))
3893+
.member(user_id)
3894+
.membership(MembershipState::Knock)
38983895
.event_id(event_id)
3899-
.sender(user_id)
3900-
.state_key(user_id)
39013896
.into_raw_timeline()
39023897
.cast()]);
39033898
let room = server.sync_room(&client, joined_room_builder).await;

crates/matrix-sdk/tests/integration/room/common.rs

+3-12
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ use ruma::{
1212
event_id,
1313
events::{
1414
direct::DirectUserIdentifier,
15-
room::{
16-
avatar::{self, RoomAvatarEventContent},
17-
member::MembershipState,
18-
message::RoomMessageEventContent,
19-
},
15+
room::{avatar, member::MembershipState, message::RoomMessageEventContent},
2016
AnySyncStateEvent, AnySyncTimelineEvent, StateEventType,
2117
},
2218
mxc_uri, room_id,
@@ -881,9 +877,7 @@ async fn test_room_avatar() {
881877
// Set the avatar, but not the info.
882878
let avatar_url_1 = mxc_uri!("mxc://server.local/abcdef");
883879

884-
let mut content = RoomAvatarEventContent::new();
885-
content.url = Some(avatar_url_1.to_owned());
886-
let event = factory.event(content).state_key("").into_raw_sync();
880+
let event = factory.room_avatar().url(avatar_url_1).into_raw_sync();
887881

888882
let mut sync_builder = SyncResponseBuilder::new();
889883
sync_builder.add_joined_room(JoinedRoomBuilder::new(room_id).add_timeline_event(event));
@@ -903,10 +897,7 @@ async fn test_room_avatar() {
903897
avatar_info_2.mimetype = Some("image/png".to_owned());
904898
avatar_info_2.size = Some(uint!(5243));
905899

906-
let mut content = RoomAvatarEventContent::new();
907-
content.url = Some(avatar_url_2.to_owned());
908-
content.info = Some(avatar_info_2.into());
909-
let event = factory.event(content).state_key("").into_raw_sync();
900+
let event = factory.room_avatar().url(avatar_url_2).info(avatar_info_2).into_raw_sync();
910901

911902
sync_builder.add_joined_room(JoinedRoomBuilder::new(room_id).add_timeline_event(event));
912903
mock_sync(&server, sync_builder.build_json_sync_response(), None).await;

crates/matrix-sdk/tests/integration/room/joined.rs

+23-43
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use ruma::{
2828
direct::DirectUserIdentifier,
2929
receipt::ReceiptThread,
3030
room::{
31-
member::{MembershipState, RoomMemberEventContent},
31+
member::MembershipState,
3232
message::{RoomMessageEventContent, RoomMessageEventContentWithoutRelation},
3333
},
3434
TimelineEventType,
@@ -843,10 +843,9 @@ async fn test_subscribe_to_knock_requests() {
843843
let user_id = user_id!("@alice:b.c");
844844
let knock_event_id = event_id!("$alice-knock:b.c");
845845
let knock_event = f
846-
.event(RoomMemberEventContent::new(MembershipState::Knock))
846+
.member(user_id)
847+
.membership(MembershipState::Knock)
847848
.event_id(knock_event_id)
848-
.sender(user_id)
849-
.state_key(user_id)
850849
.into_raw_timeline()
851850
.cast();
852851

@@ -877,9 +876,8 @@ async fn test_subscribe_to_knock_requests() {
877876

878877
// If we then receive a new member event for Alice that's not 'knock'
879878
let joined_room_builder = JoinedRoomBuilder::new(room_id).add_state_bulk(vec![f
880-
.event(RoomMemberEventContent::new(MembershipState::Invite))
881-
.sender(user_id)
882-
.state_key(user_id)
879+
.member(user_id)
880+
.membership(MembershipState::Invite)
883881
.into_raw_timeline()
884882
.cast()]);
885883
server.sync_room(&client, joined_room_builder).await;
@@ -917,12 +915,8 @@ async fn test_subscribe_to_knock_requests_reloads_members_on_limited_sync() {
917915
let f = EventFactory::new().room(room_id);
918916

919917
let user_id = user_id!("@alice:b.c");
920-
let knock_event = f
921-
.event(RoomMemberEventContent::new(MembershipState::Knock))
922-
.sender(user_id)
923-
.state_key(user_id)
924-
.into_raw_timeline()
925-
.cast();
918+
let knock_event =
919+
f.member(user_id).membership(MembershipState::Knock).into_raw_timeline().cast();
926920

927921
server
928922
.mock_get_members()
@@ -969,10 +963,9 @@ async fn test_remove_outdated_seen_knock_requests_ids_when_membership_changed()
969963
let user_id = user_id!("@alice:b.c");
970964
let knock_event_id = event_id!("$alice-knock:b.c");
971965
let knock_event = f
972-
.event(RoomMemberEventContent::new(MembershipState::Knock))
966+
.member(user_id)
967+
.membership(MembershipState::Knock)
973968
.event_id(knock_event_id)
974-
.sender(user_id)
975-
.state_key(user_id)
976969
.into_raw_timeline()
977970
.cast();
978971

@@ -990,12 +983,8 @@ async fn test_remove_outdated_seen_knock_requests_ids_when_membership_changed()
990983

991984
// If we then load the members again and the previously knocking member is in
992985
// another state now
993-
let joined_event = f
994-
.event(RoomMemberEventContent::new(MembershipState::Join))
995-
.sender(user_id)
996-
.state_key(user_id)
997-
.into_raw_timeline()
998-
.cast();
986+
let joined_event =
987+
f.member(user_id).membership(MembershipState::Join).into_raw_timeline().cast();
999988

1000989
server.mock_get_members().ok(vec![joined_event]).mock_once().mount().await;
1001990

@@ -1024,10 +1013,9 @@ async fn test_remove_outdated_seen_knock_requests_ids_when_we_have_an_outdated_k
10241013
let user_id = user_id!("@alice:b.c");
10251014
let knock_event_id = event_id!("$alice-knock:b.c");
10261015
let knock_event = f
1027-
.event(RoomMemberEventContent::new(MembershipState::Knock))
1016+
.member(user_id)
1017+
.membership(MembershipState::Knock)
10281018
.event_id(knock_event_id)
1029-
.sender(user_id)
1030-
.state_key(user_id)
10311019
.into_raw_timeline()
10321020
.cast();
10331021

@@ -1046,10 +1034,9 @@ async fn test_remove_outdated_seen_knock_requests_ids_when_we_have_an_outdated_k
10461034
// If we then load the members again and the previously knocking member has a
10471035
// different event id
10481036
let knock_event = f
1049-
.event(RoomMemberEventContent::new(MembershipState::Knock))
1037+
.member(user_id)
1038+
.membership(MembershipState::Knock)
10501039
.event_id(event_id!("$knock-2:b.c"))
1051-
.sender(user_id)
1052-
.state_key(user_id)
10531040
.into_raw_timeline()
10541041
.cast();
10551042

@@ -1080,10 +1067,9 @@ async fn test_subscribe_to_knock_requests_clears_seen_ids_on_member_reload() {
10801067
let user_id = user_id!("@alice:b.c");
10811068
let knock_event_id = event_id!("$alice-knock:b.c");
10821069
let knock_event = f
1083-
.event(RoomMemberEventContent::new(MembershipState::Knock))
1070+
.member(user_id)
1071+
.membership(MembershipState::Knock)
10841072
.event_id(knock_event_id)
1085-
.sender(user_id)
1086-
.state_key(user_id)
10871073
.into_raw_timeline()
10881074
.cast();
10891075

@@ -1114,12 +1100,8 @@ async fn test_subscribe_to_knock_requests_clears_seen_ids_on_member_reload() {
11141100

11151101
// If we then load the members again and the previously knocking member is in
11161102
// another state now
1117-
let joined_event = f
1118-
.event(RoomMemberEventContent::new(MembershipState::Join))
1119-
.sender(user_id)
1120-
.state_key(user_id)
1121-
.into_raw_timeline()
1122-
.cast();
1103+
let joined_event =
1104+
f.member(user_id).membership(MembershipState::Join).into_raw_timeline().cast();
11231105

11241106
server.mock_get_members().ok(vec![joined_event]).mock_once().mount().await;
11251107

@@ -1163,9 +1145,8 @@ async fn test_room_member_updates_sender_on_full_member_reload() {
11631145
let user_id = user_id!("@alice:b.c");
11641146
let joined_event = EventFactory::new()
11651147
.room(room_id)
1166-
.event(RoomMemberEventContent::new(MembershipState::Join))
1167-
.sender(user_id)
1168-
.state_key(user_id)
1148+
.member(user_id)
1149+
.membership(MembershipState::Join)
11691150
.into_raw_timeline()
11701151
.cast();
11711152
server.mock_get_members().ok(vec![joined_event]).mock_once().mount().await;
@@ -1191,9 +1172,8 @@ async fn test_room_member_updates_sender_on_partial_members_update() {
11911172
let user_id = user_id!("@alice:b.c");
11921173
let joined_event = EventFactory::new()
11931174
.room(room_id)
1194-
.event(RoomMemberEventContent::new(MembershipState::Join))
1195-
.sender(user_id)
1196-
.state_key(user_id)
1175+
.member(user_id)
1176+
.membership(MembershipState::Join)
11971177
.into_raw_sync()
11981178
.cast();
11991179
server

testing/matrix-sdk-test/src/event_factory.rs

+27
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ use ruma::{
3838
receipt::{Receipt, ReceiptEventContent, ReceiptThread, ReceiptType},
3939
relation::{Annotation, InReplyTo, Replacement, Thread},
4040
room::{
41+
avatar::{self, RoomAvatarEventContent},
4142
encrypted::{EncryptedEventScheme, RoomEncryptedEventContent},
4243
member::{MembershipState, RoomMemberEventContent},
4344
message::{
@@ -170,6 +171,10 @@ where
170171
self
171172
}
172173

174+
/// For state events manually created, define the state key.
175+
///
176+
/// For other state events created in the [`EventFactory`], this is
177+
/// automatically filled upon creation or update of the events.
173178
pub fn state_key(mut self, state_key: impl Into<String>) -> Self {
174179
self.state_key = Some(state_key.into());
175180
self
@@ -465,6 +470,14 @@ impl EventFactory {
465470
event
466471
}
467472

473+
/// Create an empty state event for the room avatar.
474+
pub fn room_avatar(&self) -> EventBuilder<RoomAvatarEventContent> {
475+
let mut event = self.event(RoomAvatarEventContent::new());
476+
// The state key is empty for a room avatar state event.
477+
event.state_key = Some("".to_owned());
478+
event
479+
}
480+
468481
/// Create a new `m.member_hints` event with the given service members.
469482
///
470483
/// ```
@@ -749,6 +762,20 @@ impl EventBuilder<RoomMemberEventContent> {
749762
}
750763
}
751764

765+
impl EventBuilder<RoomAvatarEventContent> {
766+
/// Defines the URL for the room avatar.
767+
pub fn url(mut self, url: &MxcUri) -> Self {
768+
self.content.url = Some(url.to_owned());
769+
self
770+
}
771+
772+
/// Defines the image info for the avatar.
773+
pub fn info(mut self, image: avatar::ImageInfo) -> Self {
774+
self.content.info = Some(Box::new(image));
775+
self
776+
}
777+
}
778+
752779
pub struct ReadReceiptBuilder<'a> {
753780
factory: &'a EventFactory,
754781
content: ReceiptEventContent,

0 commit comments

Comments
 (0)