mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-19 06:04:31 -04:00
test: Fix and add tests for computing the push conditions requiring the room creation event
This commit is contained in:
committed by
Jorge Martin Espinosa
parent
e86aab68b4
commit
61258e823f
@@ -22,7 +22,7 @@ use matrix_sdk_ui::{
|
||||
sync_service::SyncService,
|
||||
};
|
||||
use ruma::{
|
||||
event_id,
|
||||
RoomVersionId, event_id,
|
||||
events::{TimelineEventType, room::member::MembershipState},
|
||||
mxc_uri, room_id, user_id,
|
||||
};
|
||||
@@ -128,6 +128,8 @@ async fn test_notification_client_sliding_sync() {
|
||||
|
||||
let event_factory = EventFactory::new().room(room_id);
|
||||
|
||||
let room_create_event = event_factory.create(sender, RoomVersionId::V1).into_raw_sync();
|
||||
|
||||
let sender_member_event = event_factory
|
||||
.member(sender)
|
||||
.display_name(sender_display_name)
|
||||
@@ -173,6 +175,9 @@ async fn test_notification_client_sliding_sync() {
|
||||
"initial": true,
|
||||
|
||||
"required_state": [
|
||||
// The room creation event.
|
||||
room_create_event,
|
||||
|
||||
// Sender's member information.
|
||||
sender_member_event,
|
||||
|
||||
@@ -230,6 +235,7 @@ async fn test_notification_client_sliding_sync() {
|
||||
["m.room.power_levels", ""],
|
||||
["m.room.join_rules", ""],
|
||||
["org.matrix.msc3401.call.member", "*"],
|
||||
["m.room.create", ""],
|
||||
],
|
||||
"filters": {
|
||||
"is_invite": true,
|
||||
@@ -248,6 +254,7 @@ async fn test_notification_client_sliding_sync() {
|
||||
["m.room.power_levels", ""],
|
||||
["m.room.join_rules", ""],
|
||||
["org.matrix.msc3401.call.member", "*"],
|
||||
["m.room.create", ""],
|
||||
],
|
||||
"timeline_limit": 16,
|
||||
},
|
||||
|
||||
@@ -4083,6 +4083,8 @@ pub struct RoomMemberWithSenderInfo {
|
||||
|
||||
#[cfg(all(test, not(target_family = "wasm")))]
|
||||
mod tests {
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
use matrix_sdk_base::{store::ComposerDraftType, ComposerDraft};
|
||||
use matrix_sdk_test::{
|
||||
async_test, event_factory::EventFactory, test_json, JoinedRoomBuilder, StateTestEvent,
|
||||
@@ -4091,7 +4093,7 @@ mod tests {
|
||||
use ruma::{
|
||||
event_id,
|
||||
events::{relation::RelationType, room::member::MembershipState},
|
||||
int, owned_event_id, room_id, user_id,
|
||||
int, owned_event_id, room_id, user_id, RoomVersionId,
|
||||
};
|
||||
use wiremock::{
|
||||
matchers::{header, method, path_regex},
|
||||
@@ -4644,4 +4646,68 @@ mod tests {
|
||||
assert!(result.next_batch_token.is_none());
|
||||
assert!(result.recursion_depth.is_none());
|
||||
}
|
||||
|
||||
#[async_test]
|
||||
async fn test_power_levels_computation() {
|
||||
let server = MatrixMockServer::new().await;
|
||||
let client = server.client_builder().build().await;
|
||||
|
||||
let room_id = room_id!("!a:b.c");
|
||||
let sender_id = client.user_id().expect("No session id");
|
||||
let f = EventFactory::new().room(room_id).sender(sender_id);
|
||||
let mut user_map = BTreeMap::from([(sender_id.into(), 50.into())]);
|
||||
|
||||
// Computing the power levels will need these 3 state events:
|
||||
let room_create_event = f.create(sender_id, RoomVersionId::V1).state_key("").into_raw();
|
||||
let power_levels_event = f.power_levels(&mut user_map).state_key("").into_raw();
|
||||
let room_member_event = f.member(sender_id).into_raw();
|
||||
|
||||
// With only the room member event
|
||||
let room = server
|
||||
.sync_room(
|
||||
&client,
|
||||
JoinedRoomBuilder::new(room_id).add_state_bulk([room_member_event.clone()]),
|
||||
)
|
||||
.await;
|
||||
let ctx = room
|
||||
.push_condition_room_ctx()
|
||||
.await
|
||||
.expect("Failed to get push condition context")
|
||||
.expect("Could not get push condition context");
|
||||
|
||||
// The internal power levels couldn't be computed
|
||||
assert!(ctx.power_levels.is_none());
|
||||
|
||||
// Adding the room creation event
|
||||
let room = server
|
||||
.sync_room(
|
||||
&client,
|
||||
JoinedRoomBuilder::new(room_id).add_state_bulk([room_create_event.clone()]),
|
||||
)
|
||||
.await;
|
||||
let ctx = room
|
||||
.push_condition_room_ctx()
|
||||
.await
|
||||
.expect("Failed to get push condition context")
|
||||
.expect("Could not get push condition context");
|
||||
|
||||
// The internal power levels still couldn't be computed
|
||||
assert!(ctx.power_levels.is_none());
|
||||
|
||||
// With the room member, room creation and the power levels events
|
||||
let room = server
|
||||
.sync_room(
|
||||
&client,
|
||||
JoinedRoomBuilder::new(room_id).add_state_bulk([power_levels_event]),
|
||||
)
|
||||
.await;
|
||||
let ctx = room
|
||||
.push_condition_room_ctx()
|
||||
.await
|
||||
.expect("Failed to get push condition context")
|
||||
.expect("Could not get push condition context");
|
||||
|
||||
// The internal power levels can finally be computed
|
||||
assert!(ctx.power_levels.is_some());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user