forked from MirrorHub/synapse
Add tests for get_latest_event_ids_in_room and get_current_state
This commit is contained in:
parent
8495b6d365
commit
60ec9793fb
3 changed files with 76 additions and 0 deletions
|
@ -36,6 +36,10 @@ class _EventInternalMetadata(object):
|
|||
def is_invite_from_remote(self):
|
||||
return getattr(self, "invite_from_remote", False)
|
||||
|
||||
def __eq__(self, other):
|
||||
"Equality check for unit tests."
|
||||
return self.__dict__ == other.__dict__
|
||||
|
||||
|
||||
def _event_dict_property(key):
|
||||
def getter(self):
|
||||
|
@ -180,3 +184,8 @@ class FrozenEvent(EventBase):
|
|||
self.get("type", None),
|
||||
self.get("state_key", None),
|
||||
)
|
||||
|
||||
def __eq__(self, other):
|
||||
"""Equality check for unit tests. Compares internal_metadata as well
|
||||
as the event fields"""
|
||||
return self.__dict__ == other.__dict__
|
||||
|
|
|
@ -89,8 +89,11 @@ class SlavedEventStore(BaseSlavedStore):
|
|||
_invalidate_get_event_cache = DataStore._invalidate_get_event_cache.__func__
|
||||
_parse_events_txn = DataStore._parse_events_txn.__func__
|
||||
_get_events_txn = DataStore._get_events_txn.__func__
|
||||
_enqueue_events = DataStore._enqueue_events.__func__
|
||||
_do_fetch = DataStore._do_fetch.__func__
|
||||
_fetch_events_txn = DataStore._fetch_events_txn.__func__
|
||||
_fetch_event_rows = DataStore._fetch_event_rows.__func__
|
||||
_get_event_from_row = DataStore._get_event_from_row.__func__
|
||||
_get_event_from_row_txn = DataStore._get_event_from_row_txn.__func__
|
||||
_get_rooms_for_user_where_membership_is_txn = (
|
||||
DataStore._get_rooms_for_user_where_membership_is_txn.__func__
|
||||
|
@ -158,6 +161,8 @@ class SlavedEventStore(BaseSlavedStore):
|
|||
|
||||
self._invalidate_get_event_cache(event.event_id)
|
||||
|
||||
self.get_latest_event_ids_in_room.invalidate((event.room_id,))
|
||||
|
||||
if not backfilled:
|
||||
self._events_stream_cache.entity_has_changed(
|
||||
event.room_id, event.internal_metadata.stream_ordering
|
||||
|
|
|
@ -116,6 +116,68 @@ class SlavedEventStoreTestCase(BaseSlavedStoreTestCase):
|
|||
yield self.check("get_users_in_room", (ROOM_ID,), [USER_ID])
|
||||
yield self.check("get_rooms_for_user", (USER_ID_2,), [])
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_get_latest_event_ids_in_room(self):
|
||||
create = yield self.persist(type="m.room.create", key="", creator=USER_ID)
|
||||
yield self.replicate()
|
||||
yield self.check(
|
||||
"get_latest_event_ids_in_room", (ROOM_ID,), [create.event_id]
|
||||
)
|
||||
|
||||
join = yield self.persist(
|
||||
type="m.room.member", key=USER_ID, membership="join",
|
||||
prev_events=[(create.event_id, {})],
|
||||
)
|
||||
yield self.replicate()
|
||||
yield self.check(
|
||||
"get_latest_event_ids_in_room", (ROOM_ID,), [join.event_id]
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_get_current_state(self):
|
||||
# Create the room.
|
||||
create = yield self.persist(type="m.room.create", key="", creator=USER_ID)
|
||||
yield self.replicate()
|
||||
yield self.check(
|
||||
"get_current_state_for_key", (ROOM_ID, "m.room.member", USER_ID), []
|
||||
)
|
||||
|
||||
# Join the room.
|
||||
join1 = yield self.persist(
|
||||
type="m.room.member", key=USER_ID, membership="join",
|
||||
)
|
||||
yield self.replicate()
|
||||
yield self.check(
|
||||
"get_current_state_for_key", (ROOM_ID, "m.room.member", USER_ID),
|
||||
[join1]
|
||||
)
|
||||
|
||||
# Add some other user to the room.
|
||||
join2 = yield self.persist(
|
||||
type="m.room.member", key=USER_ID_2, membership="join",
|
||||
)
|
||||
yield self.replicate()
|
||||
yield self.check(
|
||||
"get_current_state_for_key", (ROOM_ID, "m.room.member", USER_ID_2),
|
||||
[join2]
|
||||
)
|
||||
|
||||
# Leave the room, then rejoin the room clobbering state.
|
||||
yield self.persist(type="m.room.member", key=USER_ID, membership="leave")
|
||||
join3 = yield self.persist(
|
||||
type="m.room.member", key=USER_ID, membership="join",
|
||||
reset_state=[create]
|
||||
)
|
||||
yield self.replicate()
|
||||
yield self.check(
|
||||
"get_current_state_for_key", (ROOM_ID, "m.room.member", USER_ID_2),
|
||||
[]
|
||||
)
|
||||
yield self.check(
|
||||
"get_current_state_for_key", (ROOM_ID, "m.room.member", USER_ID),
|
||||
[join3]
|
||||
)
|
||||
|
||||
event_id = 0
|
||||
|
||||
@defer.inlineCallbacks
|
||||
|
|
Loading…
Reference in a new issue