Skip to content
Snippets Groups Projects
Commit 650daf56 authored by Matthew Hodgson's avatar Matthew Hodgson
Browse files

make test work

parent 1fa4f7e0
No related branches found
No related tags found
No related merge requests found
......@@ -13,6 +13,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import logging
from twisted.internet import defer
from synapse.api.constants import EventTypes, Membership
......@@ -21,6 +23,8 @@ from synapse.types import RoomID, UserID
import tests.unittest
import tests.utils
logger = logging.getLogger(__name__)
class StateStoreTestCase(tests.unittest.TestCase):
def __init__(self, *args, **kwargs):
......@@ -38,9 +42,6 @@ class StateStoreTestCase(tests.unittest.TestCase):
self.u_alice = UserID.from_string("@alice:test")
self.u_bob = UserID.from_string("@bob:test")
# User elsewhere on another host
self.u_charlie = UserID.from_string("@charlie:elsewhere")
self.room = RoomID.from_string("!abc123:test")
yield self.store.store_room(
......@@ -67,85 +68,93 @@ class StateStoreTestCase(tests.unittest.TestCase):
defer.returnValue(event)
def assertStateMapEqual(self, s1, s2):
for t in s1:
# just compare event IDs for simplicity
self.assertEqual(s1[t].event_id, s2[t].event_id)
self.assertEqual(len(s1), len(s2))
@defer.inlineCallbacks
def test_get_state_for_events(self):
def test_get_state_for_event(self):
# this defaults to a linear DAG as each new injection defaults to whatever
# forward extremities are currently in the DB for this room.
(e1, c1) = yield self.inject_state_event(
e1 = yield self.inject_state_event(
self.room, self.u_alice, EventTypes.Create, '', {},
)
(e2, c2) = yield self.inject_state_event(
e2 = yield self.inject_state_event(
self.room, self.u_alice, EventTypes.Name, '', {
"name": "test room"
},
)
(e3, c3) = yield self.inject_state_event(
self.room, self.u_alice, EventTypes.Member, self.u_alice, {
e3 = yield self.inject_state_event(
self.room, self.u_alice, EventTypes.Member, self.u_alice.to_string(), {
"membership": Membership.JOIN
},
)
(e4, c4) = yield self.inject_state_event(
self.room, self.u_bob, EventTypes.Member, self.u_bob, {
e4 = yield self.inject_state_event(
self.room, self.u_bob, EventTypes.Member, self.u_bob.to_string(), {
"membership": Membership.JOIN
},
)
(e5, c5) = yield self.inject_state_event(
self.room, self.u_bob, EventTypes.Member, self.u_bob, {
e5 = yield self.inject_state_event(
self.room, self.u_bob, EventTypes.Member, self.u_bob.to_string(), {
"membership": Membership.LEAVE
},
)
# check we get the full state as of the final event
state = yield self.store.get_state_for_events(
state = yield self.store.get_state_for_event(
e5.event_id, None, filtered_types=None
)
self.assertDictEqual({
(e1.type, e1.state_key): e1.event_id,
(e2.type, e2.state_key): e2.event_id,
(e3.type, e3.state_key): e3.event_id,
self.assertIsNotNone(e4)
self.assertStateMapEqual({
(e1.type, e1.state_key): e1,
(e2.type, e2.state_key): e2,
(e3.type, e3.state_key): e3,
# e4 is overwritten by e5
(e5.type, e5.state_key): e5.event_id,
(e5.type, e5.state_key): e5,
}, state)
# check we can filter to the m.room.name event (with a '' state key)
state = yield self.store.get_state_for_events(
e5.event_id, ((EventTypes.Name, '')), filtered_types=None
state = yield self.store.get_state_for_event(
e5.event_id, [(EventTypes.Name, '')], filtered_types=None
)
self.assertDictEqual({
(e2.type, e2.state_key): e2.event_id,
self.assertStateMapEqual({
(e2.type, e2.state_key): e2,
}, state)
# check we can filter to the m.room.name event (with a wildcard None state key)
state = yield self.store.get_state_for_events(
e5.event_id, ((EventTypes.Name, None)), filtered_types=None
state = yield self.store.get_state_for_event(
e5.event_id, [(EventTypes.Name, None)], filtered_types=None
)
self.assertDictEqual({
(e2.type, e2.state_key): e2.event_id,
self.assertStateMapEqual({
(e2.type, e2.state_key): e2,
}, state)
# check we can grab the m.room.member events (with a wildcard None state key)
state = yield self.store.get_state_for_events(
e5.event_id, ((EventTypes.Member, None)), filtered_types=None
state = yield self.store.get_state_for_event(
e5.event_id, [(EventTypes.Member, None)], filtered_types=None
)
self.assertDictEqual({
(e3.type, e3.state_key): e3.event_id,
(e5.type, e5.state_key): e5.event_id,
self.assertStateMapEqual({
(e3.type, e3.state_key): e3,
(e5.type, e5.state_key): e5,
}, state)
# check we can use filter_types to grab a specific room member
# without filtering out the other event types
state = yield self.store.get_state_for_events(
e5.event_id, ((EventTypes.Member, self.u_alice)),
state = yield self.store.get_state_for_event(
e5.event_id, [(EventTypes.Member, self.u_alice.to_string())],
filtered_types=[EventTypes.Member],
)
self.assertDictEqual({
(e1.type, e1.state_key): e3.event_id,
(e2.type, e2.state_key): e3.event_id,
(e3.type, e3.state_key): e5.event_id,
self.assertStateMapEqual({
(e1.type, e1.state_key): e1,
(e2.type, e2.state_key): e2,
(e3.type, e3.state_key): e3,
}, state)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment