Implement MSC3026: busy presence state

This commit is contained in:
Brendan Abolivier 2021-03-18 16:34:47 +01:00
parent 7b06f85c0e
commit 405aeb0b2c
No known key found for this signature in database
GPG key ID: 1E015C145F1916CD
6 changed files with 27 additions and 1 deletions

View file

@ -310,6 +310,26 @@ class PresenceTimeoutTestCase(unittest.TestCase):
self.assertIsNotNone(new_state)
self.assertEquals(new_state.state, PresenceState.UNAVAILABLE)
def test_busy_no_idle(self):
"""
Tests that a user setting their presence to busy but idling doesn't turn their
presence state into unavailable.
"""
user_id = "@foo:bar"
now = 5000000
state = UserPresenceState.default(user_id)
state = state.copy_and_replace(
state=PresenceState.BUSY,
last_active_ts=now - IDLE_TIMER - 1,
last_user_sync_ts=now,
)
new_state = handle_timeout(state, is_mine=True, syncing_user_ids=set(), now=now)
self.assertIsNotNone(new_state)
self.assertEquals(new_state.state, PresenceState.BUSY)
def test_sync_timeout(self):
user_id = "@foo:bar"
now = 5000000