push: Split push conditions tests
This commit is contained in:
parent
33fa1b48ed
commit
82b4257bfe
@ -424,7 +424,7 @@ mod tests {
|
|||||||
};
|
};
|
||||||
|
|
||||||
use super::{FlattenedJson, PushCondition, PushConditionRoomCtx, RoomMemberCountIs, StrExt};
|
use super::{FlattenedJson, PushCondition, PushConditionRoomCtx, RoomMemberCountIs, StrExt};
|
||||||
use crate::{power_levels::NotificationPowerLevels, room_id, serde::Raw, user_id};
|
use crate::{power_levels::NotificationPowerLevels, room_id, serde::Raw, user_id, OwnedUserId};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn serialize_event_match_condition() {
|
fn serialize_event_match_condition() {
|
||||||
@ -611,14 +611,15 @@ mod tests {
|
|||||||
assert!(!"lunc".matches_pattern("lunc?*", false));
|
assert!(!"lunc".matches_pattern("lunc?*", false));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
fn sender() -> OwnedUserId {
|
||||||
fn conditions_apply_to_events() {
|
user_id!("@worthy_whale:server.name").to_owned()
|
||||||
let first_sender = user_id!("@worthy_whale:server.name").to_owned();
|
}
|
||||||
|
|
||||||
|
fn push_context() -> PushConditionRoomCtx {
|
||||||
let mut users_power_levels = BTreeMap::new();
|
let mut users_power_levels = BTreeMap::new();
|
||||||
users_power_levels.insert(first_sender, int!(25));
|
users_power_levels.insert(sender(), int!(25));
|
||||||
|
|
||||||
let context = PushConditionRoomCtx {
|
PushConditionRoomCtx {
|
||||||
room_id: room_id!("!room:server.name").to_owned(),
|
room_id: room_id!("!room:server.name").to_owned(),
|
||||||
member_count: uint!(3),
|
member_count: uint!(3),
|
||||||
user_id: user_id!("@gorilla:server.name").to_owned(),
|
user_id: user_id!("@gorilla:server.name").to_owned(),
|
||||||
@ -628,9 +629,11 @@ mod tests {
|
|||||||
notification_power_levels: NotificationPowerLevels { room: int!(50) },
|
notification_power_levels: NotificationPowerLevels { room: int!(50) },
|
||||||
#[cfg(feature = "unstable-msc3931")]
|
#[cfg(feature = "unstable-msc3931")]
|
||||||
supported_features: Default::default(),
|
supported_features: Default::default(),
|
||||||
};
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let first_event_raw = serde_json::from_str::<Raw<JsonValue>>(
|
fn first_flattened_event() -> FlattenedJson {
|
||||||
|
let raw = serde_json::from_str::<Raw<JsonValue>>(
|
||||||
r#"{
|
r#"{
|
||||||
"sender": "@worthy_whale:server.name",
|
"sender": "@worthy_whale:server.name",
|
||||||
"content": {
|
"content": {
|
||||||
@ -640,19 +643,30 @@ mod tests {
|
|||||||
}"#,
|
}"#,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let first_event = FlattenedJson::from_raw(&first_event_raw);
|
|
||||||
|
|
||||||
let second_event_raw = serde_json::from_str::<Raw<JsonValue>>(
|
FlattenedJson::from_raw(&raw)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn second_flattened_event() -> FlattenedJson {
|
||||||
|
let raw = serde_json::from_str::<Raw<JsonValue>>(
|
||||||
r#"{
|
r#"{
|
||||||
"sender": "@party_bot:server.name",
|
"sender": "@party_bot:server.name",
|
||||||
"content": {
|
"content": {
|
||||||
"msgtype": "m.notice",
|
"msgtype": "m.notice",
|
||||||
"body": "@room Ready to come to the party?"
|
"body": "Everybody come to party!"
|
||||||
}
|
}
|
||||||
}"#,
|
}"#,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let second_event = FlattenedJson::from_raw(&second_event_raw);
|
|
||||||
|
FlattenedJson::from_raw(&raw)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn event_match_applies() {
|
||||||
|
let context = push_context();
|
||||||
|
let first_event = first_flattened_event();
|
||||||
|
let second_event = second_flattened_event();
|
||||||
|
|
||||||
let correct_room = PushCondition::EventMatch {
|
let correct_room = PushCondition::EventMatch {
|
||||||
key: "room_id".into(),
|
key: "room_id".into(),
|
||||||
@ -677,6 +691,12 @@ mod tests {
|
|||||||
|
|
||||||
assert!(!msgtype.applies(&first_event, &context));
|
assert!(!msgtype.applies(&first_event, &context));
|
||||||
assert!(msgtype.applies(&second_event, &context));
|
assert!(msgtype.applies(&second_event, &context));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn room_member_count_is_applies() {
|
||||||
|
let context = push_context();
|
||||||
|
let event = first_flattened_event();
|
||||||
|
|
||||||
let member_count_eq =
|
let member_count_eq =
|
||||||
PushCondition::RoomMemberCount { is: RoomMemberCountIs::from(uint!(3)) };
|
PushCondition::RoomMemberCount { is: RoomMemberCountIs::from(uint!(3)) };
|
||||||
@ -685,14 +705,28 @@ mod tests {
|
|||||||
let member_count_lt =
|
let member_count_lt =
|
||||||
PushCondition::RoomMemberCount { is: RoomMemberCountIs::from(..uint!(3)) };
|
PushCondition::RoomMemberCount { is: RoomMemberCountIs::from(..uint!(3)) };
|
||||||
|
|
||||||
assert!(member_count_eq.applies(&first_event, &context));
|
assert!(member_count_eq.applies(&event, &context));
|
||||||
assert!(member_count_gt.applies(&first_event, &context));
|
assert!(member_count_gt.applies(&event, &context));
|
||||||
assert!(!member_count_lt.applies(&first_event, &context));
|
assert!(!member_count_lt.applies(&event, &context));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn contains_display_name_applies() {
|
||||||
|
let context = push_context();
|
||||||
|
let first_event = first_flattened_event();
|
||||||
|
let second_event = second_flattened_event();
|
||||||
|
|
||||||
let contains_display_name = PushCondition::ContainsDisplayName;
|
let contains_display_name = PushCondition::ContainsDisplayName;
|
||||||
|
|
||||||
assert!(contains_display_name.applies(&first_event, &context));
|
assert!(contains_display_name.applies(&first_event, &context));
|
||||||
assert!(!contains_display_name.applies(&second_event, &context));
|
assert!(!contains_display_name.applies(&second_event, &context));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn sender_notification_permission_applies() {
|
||||||
|
let context = push_context();
|
||||||
|
let first_event = first_flattened_event();
|
||||||
|
let second_event = second_flattened_event();
|
||||||
|
|
||||||
let sender_notification_permission =
|
let sender_notification_permission =
|
||||||
PushCondition::SenderNotificationPermission { key: "room".into() };
|
PushCondition::SenderNotificationPermission { key: "room".into() };
|
||||||
@ -703,34 +737,20 @@ mod tests {
|
|||||||
|
|
||||||
#[cfg(feature = "unstable-msc3932")]
|
#[cfg(feature = "unstable-msc3932")]
|
||||||
#[test]
|
#[test]
|
||||||
fn conditions_apply_to_events_in_room_with_feature() {
|
fn room_version_supports_applies() {
|
||||||
let first_sender = user_id!("@worthy_whale:server.name").to_owned();
|
let context_not_matching = push_context();
|
||||||
|
|
||||||
let mut users_power_levels = BTreeMap::new();
|
|
||||||
users_power_levels.insert(first_sender, int!(25));
|
|
||||||
|
|
||||||
let context_matching = PushConditionRoomCtx {
|
let context_matching = PushConditionRoomCtx {
|
||||||
room_id: room_id!("!room:server.name").to_owned(),
|
room_id: room_id!("!room:server.name").to_owned(),
|
||||||
member_count: uint!(3),
|
member_count: uint!(3),
|
||||||
user_id: user_id!("@gorilla:server.name").to_owned(),
|
user_id: user_id!("@gorilla:server.name").to_owned(),
|
||||||
user_display_name: "Groovy Gorilla".into(),
|
user_display_name: "Groovy Gorilla".into(),
|
||||||
users_power_levels: users_power_levels.clone(),
|
users_power_levels: context_not_matching.users_power_levels.clone(),
|
||||||
default_power_level: int!(50),
|
default_power_level: int!(50),
|
||||||
notification_power_levels: NotificationPowerLevels { room: int!(50) },
|
notification_power_levels: NotificationPowerLevels { room: int!(50) },
|
||||||
supported_features: vec![super::RoomVersionFeature::ExtensibleEvents],
|
supported_features: vec![super::RoomVersionFeature::ExtensibleEvents],
|
||||||
};
|
};
|
||||||
|
|
||||||
let context_not_matching = PushConditionRoomCtx {
|
|
||||||
room_id: room_id!("!room:server.name").to_owned(),
|
|
||||||
member_count: uint!(3),
|
|
||||||
user_id: user_id!("@gorilla:server.name").to_owned(),
|
|
||||||
user_display_name: "Groovy Gorilla".into(),
|
|
||||||
users_power_levels,
|
|
||||||
default_power_level: int!(50),
|
|
||||||
notification_power_levels: NotificationPowerLevels { room: int!(50) },
|
|
||||||
supported_features: vec![],
|
|
||||||
};
|
|
||||||
|
|
||||||
let simple_event_raw = serde_json::from_str::<Raw<JsonValue>>(
|
let simple_event_raw = serde_json::from_str::<Raw<JsonValue>>(
|
||||||
r#"{
|
r#"{
|
||||||
"sender": "@worthy_whale:server.name",
|
"sender": "@worthy_whale:server.name",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user