Skip to content
This repository was archived by the owner on Mar 26, 2024. It is now read-only.

Commit 42017d4

Browse files
committed
Add tests for reaction notifications
1 parent ad6b10b commit 42017d4

File tree

1 file changed

+86
-20
lines changed

1 file changed

+86
-20
lines changed

tests/push/test_push_rule_evaluator.py

Lines changed: 86 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -657,37 +657,103 @@ def test_delayed_message(self) -> None:
657657
# user2 should not be notified about it, because they can't see it.
658658
self.assertEqual(self.get_notif_count(self.user_id2), 0)
659659

660+
660661
class PushRuleEvaluatorBaseRulesTestCase(unittest.TestCase):
661-
def test_supress_auto_accept_invite(self) -> None:
662-
event = FrozenEvent(
662+
def test_reactions(self) -> None:
663+
message_event = FrozenEvent(
663664
{
664665
"event_id": "$event_id",
665-
"room_id":"!wFyjEwanOaElpGOaLW:beeper.com",
666-
"content":{
667-
"displayname":"Brad Murray",
668-
"fi.mau.will_auto_accept": True,
669-
"is_direct": True,
670-
"membership":"invite"
666+
"room_id": "!room_id:beeper.com",
667+
"content": {
668+
"body": "Looks like Nick is way ahead of me on this one",
669+
"msgtype": "m.text",
671670
},
672-
"sender":"@_brad_imessagecloud_83372:beeper.com",
673-
"state_key":"@brad:beeper.com",
674-
"type":"m.room.member",
671+
"sender": "@brad:beeper.com",
672+
"type": "m.room.message",
675673
},
676674
RoomVersions.V1,
677675
)
678-
room_member_count = 0
679-
sender_power_level = 0
680-
power_levels: Dict[str, Union[int, Dict[str, int]]] = {}
681676

682-
evaluator = PushRuleEvaluator(
683-
_flatten_dict(event),
684-
room_member_count,
685-
sender_power_level,
686-
power_levels.get("notifications", {}),
677+
reaction_event = FrozenEvent(
678+
{
679+
"event_id": "$reaction_id",
680+
"room_id": "!room_id:beeper.com",
681+
"content": {
682+
"m.relates_to": {
683+
"event_id": "$event_id",
684+
"key": "\U0001F44D",
685+
"rel_type": "m.annotation",
686+
}
687+
},
688+
"sender": "@nick:beeper.com",
689+
"type": "m.reaction",
690+
},
691+
RoomVersions.V1,
692+
)
693+
694+
dm_evaluator = PushRuleEvaluator(
695+
_flatten_dict(reaction_event),
696+
2,
697+
0,
698+
{},
699+
{"m.annotation": _flatten_dict(message_event)},
700+
True,
701+
)
702+
703+
# Reaction to Brad's message, should be an action for Brad
704+
actions = dm_evaluator.run(
705+
FilteredPushRules(PushRules([]), {}, True), "@brad:beeper.com", "Brad"
706+
)
707+
self.assertTrue("notify" in actions)
708+
709+
# Reaction to Brad's message, should not be an action for Nick
710+
actions = dm_evaluator.run(
711+
FilteredPushRules(PushRules([]), {}, True), "@nick:beeper.com", "Nick"
712+
)
713+
self.assertEqual(actions, [])
714+
715+
large_room_evaluator = PushRuleEvaluator(
716+
_flatten_dict(reaction_event),
717+
30,
718+
0,
687719
{},
720+
{"m.annotation": _flatten_dict(message_event)},
688721
True,
689722
)
690723

691-
actions = evaluator.run(FilteredPushRules(PushRules([]), {}, True), "@brad:beeper.com", "Brad Murray")
724+
# Large rooms should never have emoji reaction notifications
725+
actions = large_room_evaluator.run(
726+
FilteredPushRules(PushRules([]), {}, True), "@brad:beeper.com", "Brad"
727+
)
692728
self.assertEqual(actions, [])
729+
actions = large_room_evaluator.run(
730+
FilteredPushRules(PushRules([]), {}, True), "@nick:beeper.com", "Nick"
731+
)
732+
self.assertEqual(actions, [])
733+
734+
def test_supress_auto_accept_invite(self) -> None:
735+
event = FrozenEvent(
736+
{
737+
"event_id": "$event_id",
738+
"room_id": "!wFyjEwanOaElpGOaLW:beeper.com",
739+
"content": {
740+
"displayname": "Brad Murray",
741+
"fi.mau.will_auto_accept": True,
742+
"is_direct": True,
743+
"membership": "invite",
744+
},
745+
"sender": "@_brad_imessagecloud_83372:beeper.com",
746+
"state_key": "@brad:beeper.com",
747+
"type": "m.room.member",
748+
},
749+
RoomVersions.V1,
750+
)
751+
752+
evaluator = PushRuleEvaluator(_flatten_dict(event), 0, 0, {}, {}, True)
693753

754+
actions = evaluator.run(
755+
FilteredPushRules(PushRules([]), {}, True),
756+
"@brad:beeper.com",
757+
"Brad Murray",
758+
)
759+
self.assertEqual(actions, [])

0 commit comments

Comments
 (0)