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.
This commit is contained in:
Benjamin Bouvier
2025-01-21 10:30:59 +01:00
parent 0c74abbc50
commit 210c5749f1
5 changed files with 59 additions and 69 deletions
+3 -6
View File
@@ -107,9 +107,7 @@ impl KnockRequestMemberInfo {
mod tests {
use matrix_sdk_test::{async_test, event_factory::EventFactory, JoinedRoomBuilder};
use ruma::{
event_id,
events::room::member::{MembershipState, RoomMemberEventContent},
owned_user_id, room_id, user_id, EventId,
event_id, events::room::member::MembershipState, owned_user_id, room_id, user_id, EventId,
};
use crate::{
@@ -128,10 +126,9 @@ mod tests {
let f = EventFactory::new().room(room_id);
let joined_room_builder = JoinedRoomBuilder::new(room_id).add_state_bulk(vec![f
.event(RoomMemberEventContent::new(MembershipState::Knock))
.member(user_id)
.membership(MembershipState::Knock)
.event_id(event_id)
.sender(user_id)
.state_key(user_id)
.into_raw_timeline()
.cast()]);
let room = server.sync_room(&client, joined_room_builder).await;
+3 -8
View File
@@ -3694,11 +3694,7 @@ mod tests {
async_test, event_factory::EventFactory, test_json, JoinedRoomBuilder, StateTestEvent,
SyncResponseBuilder,
};
use ruma::{
device_id, event_id,
events::room::member::{MembershipState, RoomMemberEventContent},
int, room_id, user_id,
};
use ruma::{device_id, event_id, events::room::member::MembershipState, int, room_id, user_id};
use wiremock::{
matchers::{header, method, path_regex},
Mock, MockServer, ResponseTemplate,
@@ -3894,10 +3890,9 @@ mod tests {
let f = EventFactory::new().room(room_id);
let joined_room_builder = JoinedRoomBuilder::new(room_id).add_state_bulk(vec![f
.event(RoomMemberEventContent::new(MembershipState::Knock))
.member(user_id)
.membership(MembershipState::Knock)
.event_id(event_id)
.sender(user_id)
.state_key(user_id)
.into_raw_timeline()
.cast()]);
let room = server.sync_room(&client, joined_room_builder).await;
@@ -12,11 +12,7 @@ use ruma::{
event_id,
events::{
direct::DirectUserIdentifier,
room::{
avatar::{self, RoomAvatarEventContent},
member::MembershipState,
message::RoomMessageEventContent,
},
room::{avatar, member::MembershipState, message::RoomMessageEventContent},
AnySyncStateEvent, AnySyncTimelineEvent, StateEventType,
},
mxc_uri, room_id,
@@ -881,9 +877,7 @@ async fn test_room_avatar() {
// Set the avatar, but not the info.
let avatar_url_1 = mxc_uri!("mxc://server.local/abcdef");
let mut content = RoomAvatarEventContent::new();
content.url = Some(avatar_url_1.to_owned());
let event = factory.event(content).state_key("").into_raw_sync();
let event = factory.room_avatar().url(avatar_url_1).into_raw_sync();
let mut sync_builder = SyncResponseBuilder::new();
sync_builder.add_joined_room(JoinedRoomBuilder::new(room_id).add_timeline_event(event));
@@ -903,10 +897,7 @@ async fn test_room_avatar() {
avatar_info_2.mimetype = Some("image/png".to_owned());
avatar_info_2.size = Some(uint!(5243));
let mut content = RoomAvatarEventContent::new();
content.url = Some(avatar_url_2.to_owned());
content.info = Some(avatar_info_2.into());
let event = factory.event(content).state_key("").into_raw_sync();
let event = factory.room_avatar().url(avatar_url_2).info(avatar_info_2).into_raw_sync();
sync_builder.add_joined_room(JoinedRoomBuilder::new(room_id).add_timeline_event(event));
mock_sync(&server, sync_builder.build_json_sync_response(), None).await;
@@ -28,7 +28,7 @@ use ruma::{
direct::DirectUserIdentifier,
receipt::ReceiptThread,
room::{
member::{MembershipState, RoomMemberEventContent},
member::MembershipState,
message::{RoomMessageEventContent, RoomMessageEventContentWithoutRelation},
},
TimelineEventType,
@@ -843,10 +843,9 @@ async fn test_subscribe_to_knock_requests() {
let user_id = user_id!("@alice:b.c");
let knock_event_id = event_id!("$alice-knock:b.c");
let knock_event = f
.event(RoomMemberEventContent::new(MembershipState::Knock))
.member(user_id)
.membership(MembershipState::Knock)
.event_id(knock_event_id)
.sender(user_id)
.state_key(user_id)
.into_raw_timeline()
.cast();
@@ -877,9 +876,8 @@ async fn test_subscribe_to_knock_requests() {
// If we then receive a new member event for Alice that's not 'knock'
let joined_room_builder = JoinedRoomBuilder::new(room_id).add_state_bulk(vec![f
.event(RoomMemberEventContent::new(MembershipState::Invite))
.sender(user_id)
.state_key(user_id)
.member(user_id)
.membership(MembershipState::Invite)
.into_raw_timeline()
.cast()]);
server.sync_room(&client, joined_room_builder).await;
@@ -917,12 +915,8 @@ async fn test_subscribe_to_knock_requests_reloads_members_on_limited_sync() {
let f = EventFactory::new().room(room_id);
let user_id = user_id!("@alice:b.c");
let knock_event = f
.event(RoomMemberEventContent::new(MembershipState::Knock))
.sender(user_id)
.state_key(user_id)
.into_raw_timeline()
.cast();
let knock_event =
f.member(user_id).membership(MembershipState::Knock).into_raw_timeline().cast();
server
.mock_get_members()
@@ -969,10 +963,9 @@ async fn test_remove_outdated_seen_knock_requests_ids_when_membership_changed()
let user_id = user_id!("@alice:b.c");
let knock_event_id = event_id!("$alice-knock:b.c");
let knock_event = f
.event(RoomMemberEventContent::new(MembershipState::Knock))
.member(user_id)
.membership(MembershipState::Knock)
.event_id(knock_event_id)
.sender(user_id)
.state_key(user_id)
.into_raw_timeline()
.cast();
@@ -990,12 +983,8 @@ async fn test_remove_outdated_seen_knock_requests_ids_when_membership_changed()
// If we then load the members again and the previously knocking member is in
// another state now
let joined_event = f
.event(RoomMemberEventContent::new(MembershipState::Join))
.sender(user_id)
.state_key(user_id)
.into_raw_timeline()
.cast();
let joined_event =
f.member(user_id).membership(MembershipState::Join).into_raw_timeline().cast();
server.mock_get_members().ok(vec![joined_event]).mock_once().mount().await;
@@ -1024,10 +1013,9 @@ async fn test_remove_outdated_seen_knock_requests_ids_when_we_have_an_outdated_k
let user_id = user_id!("@alice:b.c");
let knock_event_id = event_id!("$alice-knock:b.c");
let knock_event = f
.event(RoomMemberEventContent::new(MembershipState::Knock))
.member(user_id)
.membership(MembershipState::Knock)
.event_id(knock_event_id)
.sender(user_id)
.state_key(user_id)
.into_raw_timeline()
.cast();
@@ -1046,10 +1034,9 @@ async fn test_remove_outdated_seen_knock_requests_ids_when_we_have_an_outdated_k
// If we then load the members again and the previously knocking member has a
// different event id
let knock_event = f
.event(RoomMemberEventContent::new(MembershipState::Knock))
.member(user_id)
.membership(MembershipState::Knock)
.event_id(event_id!("$knock-2:b.c"))
.sender(user_id)
.state_key(user_id)
.into_raw_timeline()
.cast();
@@ -1080,10 +1067,9 @@ async fn test_subscribe_to_knock_requests_clears_seen_ids_on_member_reload() {
let user_id = user_id!("@alice:b.c");
let knock_event_id = event_id!("$alice-knock:b.c");
let knock_event = f
.event(RoomMemberEventContent::new(MembershipState::Knock))
.member(user_id)
.membership(MembershipState::Knock)
.event_id(knock_event_id)
.sender(user_id)
.state_key(user_id)
.into_raw_timeline()
.cast();
@@ -1114,12 +1100,8 @@ async fn test_subscribe_to_knock_requests_clears_seen_ids_on_member_reload() {
// If we then load the members again and the previously knocking member is in
// another state now
let joined_event = f
.event(RoomMemberEventContent::new(MembershipState::Join))
.sender(user_id)
.state_key(user_id)
.into_raw_timeline()
.cast();
let joined_event =
f.member(user_id).membership(MembershipState::Join).into_raw_timeline().cast();
server.mock_get_members().ok(vec![joined_event]).mock_once().mount().await;
@@ -1163,9 +1145,8 @@ async fn test_room_member_updates_sender_on_full_member_reload() {
let user_id = user_id!("@alice:b.c");
let joined_event = EventFactory::new()
.room(room_id)
.event(RoomMemberEventContent::new(MembershipState::Join))
.sender(user_id)
.state_key(user_id)
.member(user_id)
.membership(MembershipState::Join)
.into_raw_timeline()
.cast();
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() {
let user_id = user_id!("@alice:b.c");
let joined_event = EventFactory::new()
.room(room_id)
.event(RoomMemberEventContent::new(MembershipState::Join))
.sender(user_id)
.state_key(user_id)
.member(user_id)
.membership(MembershipState::Join)
.into_raw_sync()
.cast();
server
@@ -38,6 +38,7 @@ use ruma::{
receipt::{Receipt, ReceiptEventContent, ReceiptThread, ReceiptType},
relation::{Annotation, InReplyTo, Replacement, Thread},
room::{
avatar::{self, RoomAvatarEventContent},
encrypted::{EncryptedEventScheme, RoomEncryptedEventContent},
member::{MembershipState, RoomMemberEventContent},
message::{
@@ -170,6 +171,10 @@ where
self
}
/// For state events manually created, define the state key.
///
/// For other state events created in the [`EventFactory`], this is
/// automatically filled upon creation or update of the events.
pub fn state_key(mut self, state_key: impl Into<String>) -> Self {
self.state_key = Some(state_key.into());
self
@@ -465,6 +470,14 @@ impl EventFactory {
event
}
/// Create an empty state event for the room avatar.
pub fn room_avatar(&self) -> EventBuilder<RoomAvatarEventContent> {
let mut event = self.event(RoomAvatarEventContent::new());
// The state key is empty for a room avatar state event.
event.state_key = Some("".to_owned());
event
}
/// Create a new `m.member_hints` event with the given service members.
///
/// ```
@@ -749,6 +762,20 @@ impl EventBuilder<RoomMemberEventContent> {
}
}
impl EventBuilder<RoomAvatarEventContent> {
/// Defines the URL for the room avatar.
pub fn url(mut self, url: &MxcUri) -> Self {
self.content.url = Some(url.to_owned());
self
}
/// Defines the image info for the avatar.
pub fn info(mut self, image: avatar::ImageInfo) -> Self {
self.content.info = Some(Box::new(image));
self
}
}
pub struct ReadReceiptBuilder<'a> {
factory: &'a EventFactory,
content: ReceiptEventContent,