def test_user_membership_changes(self): invited_event = RoomMemberEvent( {"event_id": "event1", "sender": BOB_ID, "origin_server_ts": 1}, ALICE_ID, "invite", None, {"membership": "invite", "displayname": "Alice Margarine"}, ) joins_event = RoomMemberEvent( {"event_id": "event2", "sender": ALICE_ID, "origin_server_ts": 2}, ALICE_ID, "join", None, { "membership": "join", "displayname": "Alice Margatroid", "avatar_url": "mxc://new", }, ) leaves_event = RoomMemberEvent( {"event_id": "event3", "sender": ALICE_ID, "origin_server_ts": 3}, ALICE_ID, "leave", None, {"membership": "leave"}, ) unknown_event = RoomMemberEvent( {"event_id": "event4", "sender": ALICE_ID, "origin_server_ts": 4}, ALICE_ID, "bad_membership", None, {"membership": "bad_membership"}, ) room = self.test_room assert not room.users assert not room.invited_users # Alice is invited, accepts (her name and avatar changed) then leaves room.handle_membership(invited_event) assert set(room.users) == {ALICE_ID} assert set(room.invited_users) == {ALICE_ID} room.handle_membership(joins_event) assert set(room.users) == {ALICE_ID} assert not room.invited_users assert room.names["Alice Margatroid"] == [ALICE_ID] assert room.users[ALICE_ID].display_name == "Alice Margatroid" assert room.users[ALICE_ID].avatar_url == "mxc://new" room.handle_membership(leaves_event) assert not room.users assert not room.invited_users # Alice is invited and declines room.handle_membership(invited_event) assert set(room.users) == {ALICE_ID} assert set(room.invited_users) == {ALICE_ID} room.handle_membership(leaves_event) assert not room.users assert not room.invited_users # Alice joins without invite then leaves room.handle_membership(joins_event) assert set(room.users) == {ALICE_ID} assert not room.invited_users room.handle_membership(leaves_event) assert not room.users assert not room.invited_users # Ensure we get False if we handle an event that changes nothing or # has an unknown new membership assert not room.handle_membership(leaves_event) assert not room.handle_membership(unknown_event)
def test_membership(self): parsed_dict = TestClass._load_response("tests/data/events/member.json") event = RoomMemberEvent.from_dict(parsed_dict) assert isinstance(event, RoomMemberEvent)
def test_user_membership_changes(self): invited_event = RoomMemberEvent( {"event_id": "event1", "sender": BOB_ID, "origin_server_ts": 1}, ALICE_ID, "invite", None, {"membership": "invite"}, ) joins_event = RoomMemberEvent( {"event_id": "event2", "sender": ALICE_ID, "origin_server_ts": 2}, ALICE_ID, "join", None, {"membership": "join"}, ) leaves_event = RoomMemberEvent( {"event_id": "event3", "sender": ALICE_ID, "origin_server_ts": 3}, ALICE_ID, "leave", None, {"membership": "leave"}, ) room = self.test_room assert not room.users assert not room.invited_users # Alice is invited, accepts then leaves room.handle_membership(invited_event) assert set(room.users) == {ALICE_ID} assert set(room.invited_users) == {ALICE_ID} room.handle_membership(joins_event) assert set(room.users) == {ALICE_ID} assert not room.invited_users room.handle_membership(leaves_event) assert not room.users assert not room.invited_users # Alice is invited and declines room.handle_membership(invited_event) assert set(room.users) == {ALICE_ID} assert set(room.invited_users) == {ALICE_ID} room.handle_membership(leaves_event) assert not room.users assert not room.invited_users # Alice joins without invite then leaves room.handle_membership(joins_event) assert set(room.users) == {ALICE_ID} assert not room.invited_users room.handle_membership(leaves_event) assert not room.users assert not room.invited_users