Add a test for the update_presence storage function
This commit is contained in:
@@ -32,13 +32,19 @@ from synapse.handlers.presence import (
|
||||
handle_timeout,
|
||||
handle_update,
|
||||
)
|
||||
from synapse.rest import admin
|
||||
from synapse.rest.client.v1 import room
|
||||
from synapse.types import UserID, get_domain_from_id
|
||||
|
||||
from tests import unittest
|
||||
|
||||
|
||||
class PresenceUpdateTestCase(unittest.TestCase):
|
||||
class PresenceUpdateTestCase(unittest.HomeserverTestCase):
|
||||
servlets = [admin.register_servlets]
|
||||
|
||||
def prepare(self, reactor, clock, homeserver):
|
||||
self.store = homeserver.get_datastore()
|
||||
|
||||
def test_offline_to_online(self):
|
||||
wheel_timer = Mock()
|
||||
user_id = "@foo:bar"
|
||||
@@ -292,6 +298,39 @@ class PresenceUpdateTestCase(unittest.TestCase):
|
||||
any_order=True,
|
||||
)
|
||||
|
||||
def test_persisting_presence_updates(self):
|
||||
"""Tests that the latest presence state for each user is persisted correctly"""
|
||||
# Create some test users and presence states for them
|
||||
presence_states = []
|
||||
for i in range(5):
|
||||
user_id = self.register_user(f"user_{i}", "password")
|
||||
|
||||
presence_state = UserPresenceState(
|
||||
user_id=user_id,
|
||||
state="online",
|
||||
last_active_ts=1,
|
||||
last_federation_update_ts=1,
|
||||
last_user_sync_ts=1,
|
||||
status_msg="I'm online!",
|
||||
currently_active=True,
|
||||
)
|
||||
presence_states.append(presence_state)
|
||||
|
||||
# Persist these presence updates to the database
|
||||
self.get_success(self.store.update_presence(presence_states))
|
||||
|
||||
# Check that each update is present in the database
|
||||
db_presence_states = self.get_success(
|
||||
self.store.get_all_presence_updates(
|
||||
instance_name="master",
|
||||
last_id=0,
|
||||
current_id=len(presence_states) + 1,
|
||||
limit=len(presence_states),
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(presence_states, db_presence_states)
|
||||
|
||||
|
||||
class PresenceTimeoutTestCase(unittest.TestCase):
|
||||
def test_idle_timer(self):
|
||||
|
||||
Reference in New Issue
Block a user