summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--synapse/handlers/room.py6
-rw-r--r--tests/handlers/test_room.py13
2 files changed, 15 insertions, 4 deletions
diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py
index a1d542854d..d317f2b30e 100644
--- a/synapse/handlers/room.py
+++ b/synapse/handlers/room.py
@@ -343,9 +343,9 @@ class RoomMemberHandler(BaseHandler):
         """
         target_user_id = event.state_key
 
-        # TODO(markjh): get prev state from snapshot.
-        prev_state = yield self.store.get_room_member(
-            target_user_id, event.room_id
+        prev_state = context.current_state.get(
+            (RoomMemberEvent.TYPE, target_user_id),
+            None
         )
 
         room_id = event.room_id
diff --git a/tests/handlers/test_room.py b/tests/handlers/test_room.py
index 21853fdc50..9ae9335e29 100644
--- a/tests/handlers/test_room.py
+++ b/tests/handlers/test_room.py
@@ -270,7 +270,7 @@ class RoomMemberHandlerTestCase(unittest.TestCase):
                 (RoomMemberEvent.TYPE, "@bob:red"): self._create_member(
                     user_id="@bob:red",
                     room_id=room_id,
-                    membership=Membership.INVITE
+                    membership=Membership.JOIN
                 ),
             }
 
@@ -297,6 +297,17 @@ class RoomMemberHandlerTestCase(unittest.TestCase):
         # Actual invocation
         yield room_handler.change_membership(event, context)
 
+        self.federation.handle_new_event.assert_called_once_with(
+            event, None, destinations=set(['red'])
+        )
+
+        self.datastore.persist_event.assert_called_once_with(
+            event, context=context
+        )
+        self.notifier.on_new_room_event.assert_called_once_with(
+            event, extra_users=[user]
+        )
+
         leave_signal_observer.assert_called_with(
             user=user, room_id=room_id
         )