|
|
@@ -1344,7 +1344,7 @@ class TestDmRoomCommands:
|
|
|
assert adapter.send.await_count == 1
|
|
|
return adapter.send.await_args.kwargs["content"]
|
|
|
|
|
|
- async def test_join_by_name_joins_and_watches(self):
|
|
|
+ async def test_join_by_name_joins_and_seeds(self):
|
|
|
adapter = self._adapter()
|
|
|
state = _make_room_state(
|
|
|
_make_room("room-9", "Deploy", RoomKind.CHANNEL), False
|
|
|
@@ -1355,20 +1355,20 @@ class TestDmRoomCommands:
|
|
|
await self._dispatch(adapter, "/join #deploy")
|
|
|
|
|
|
adapter._chatto_client.join_room.assert_awaited_once_with("room-9")
|
|
|
- assert adapter._watch_room_ids == ["room-9"]
|
|
|
+ assert adapter._joined_room_ids == ["room-9"]
|
|
|
assert "Joined 'Deploy' (room-9)" in self._reply(adapter)
|
|
|
|
|
|
async def test_join_skips_rpc_when_already_a_member(self):
|
|
|
adapter = self._adapter()
|
|
|
"""Natively invited accounts hold membership already — they only need
|
|
|
- seeding into the watch list."""
|
|
|
+ seeding into the joined list."""
|
|
|
state = _make_room_state(_make_room("room-9", "Deploy", RoomKind.CHANNEL), True)
|
|
|
adapter._chatto_client.list_rooms = AsyncMock(return_value=[state])
|
|
|
|
|
|
await self._dispatch(adapter, "/join #deploy")
|
|
|
|
|
|
adapter._chatto_client.join_room.assert_not_awaited()
|
|
|
- assert adapter._watch_room_ids == ["room-9"]
|
|
|
+ assert adapter._joined_room_ids == ["room-9"]
|
|
|
assert "Already a member" in self._reply(adapter)
|
|
|
|
|
|
async def test_join_unknown_name_reports_without_joining(self):
|
|
|
@@ -1379,7 +1379,7 @@ class TestDmRoomCommands:
|
|
|
|
|
|
adapter._chatto_client.join_room.assert_not_awaited()
|
|
|
assert "No room named '#nope'" in self._reply(adapter)
|
|
|
- assert adapter._watch_room_ids == []
|
|
|
+ assert adapter._joined_room_ids == []
|
|
|
|
|
|
async def test_ambiguous_name_offers_the_candidate_ids(self):
|
|
|
adapter = self._adapter()
|
|
|
@@ -1408,18 +1408,18 @@ class TestDmRoomCommands:
|
|
|
|
|
|
adapter._chatto_client.get_room.assert_awaited_once_with("room-9")
|
|
|
adapter._chatto_client.join_room.assert_awaited_once_with("room-9")
|
|
|
- assert adapter._watch_room_ids == ["room-9"]
|
|
|
+ assert adapter._joined_room_ids == ["room-9"]
|
|
|
|
|
|
- async def test_leave_stops_watching_the_room(self):
|
|
|
+ async def test_leave_drops_the_room_from_the_joined_list(self):
|
|
|
adapter = self._adapter()
|
|
|
- adapter._watch_room_ids = ["room-7"]
|
|
|
+ adapter._joined_room_ids = ["room-7"]
|
|
|
state = _make_room_state(_make_room("room-7", "Deploy", RoomKind.CHANNEL), True)
|
|
|
adapter._chatto_client.get_room = AsyncMock(return_value=state)
|
|
|
|
|
|
await self._dispatch(adapter, "/leave room-7")
|
|
|
|
|
|
adapter._chatto_client.leave_room.assert_awaited_once_with("room-7")
|
|
|
- assert adapter._watch_room_ids == []
|
|
|
+ assert adapter._joined_room_ids == []
|
|
|
assert "Left 'Deploy' (room-7)" in self._reply(adapter)
|
|
|
|
|
|
async def test_leave_refuses_direct_messages(self):
|
|
|
@@ -1436,7 +1436,7 @@ class TestDmRoomCommands:
|
|
|
"""Leaving CHATTO_HOME_CHANNEL would break cron/notification delivery."""
|
|
|
adapter = self._adapter()
|
|
|
adapter.chatto_config.home_channel.value = "room-7"
|
|
|
- adapter._watch_room_ids = ["room-7"]
|
|
|
+ adapter._joined_room_ids = ["room-7"]
|
|
|
state = _make_room_state(_make_room("room-7", "Home", RoomKind.CHANNEL), True)
|
|
|
adapter._chatto_client.get_room = AsyncMock(return_value=state)
|
|
|
|
|
|
@@ -1472,8 +1472,8 @@ class TestDmRoomCommands:
|
|
|
assert self._reply(adapter).startswith("Usage:")
|
|
|
|
|
|
|
|
|
-class TestRoomWatchRefresh:
|
|
|
- """_refresh_rooms mirrors watch-list membership against the server."""
|
|
|
+class TestJoinedRoomsRefresh:
|
|
|
+ """_refresh_rooms mirrors the joined list against server-side membership."""
|
|
|
|
|
|
def _adapter(self):
|
|
|
adapter = _make_adapter()
|
|
|
@@ -1481,15 +1481,15 @@ class TestRoomWatchRefresh:
|
|
|
client.list_rooms = AsyncMock(return_value=[])
|
|
|
return adapter
|
|
|
|
|
|
- async def test_unwatches_rooms_no_longer_joined(self):
|
|
|
+ async def test_drops_rooms_no_longer_joined(self):
|
|
|
adapter = self._adapter()
|
|
|
- adapter._watch_room_ids = ["gone-1", "kept"]
|
|
|
+ adapter._joined_room_ids = ["gone-1", "kept"]
|
|
|
kept = _make_room_state(_make_room("kept", "Kept", RoomKind.CHANNEL), True)
|
|
|
adapter._chatto_client.list_rooms = AsyncMock(return_value=[kept])
|
|
|
|
|
|
await adapter._refresh_rooms()
|
|
|
|
|
|
- assert adapter._watch_room_ids == ["kept"]
|
|
|
+ assert adapter._joined_room_ids == ["kept"]
|
|
|
|
|
|
async def test_warns_once_when_home_channel_is_not_joined(self):
|
|
|
adapter = self._adapter()
|
|
|
@@ -1596,7 +1596,7 @@ class TestRespondRooms:
|
|
|
|
|
|
|
|
|
class TestRespondRoomRefresh:
|
|
|
- """_refresh_rooms keeps read-only rooms watched but skips seeding them."""
|
|
|
+ """_refresh_rooms keeps read-only rooms joined but skips seeding them."""
|
|
|
|
|
|
def _adapter(self, respond_rooms):
|
|
|
adapter = _make_adapter()
|
|
|
@@ -1607,7 +1607,7 @@ class TestRespondRoomRefresh:
|
|
|
adapter._seed_room = AsyncMock()
|
|
|
return adapter
|
|
|
|
|
|
- async def test_read_only_rooms_are_watched_but_not_seeded(self):
|
|
|
+ async def test_read_only_rooms_are_joined_but_not_seeded(self):
|
|
|
adapter = self._adapter(["team-1"])
|
|
|
news = _make_room_state(_make_room("news-1", "News", RoomKind.CHANNEL), True)
|
|
|
team = _make_room_state(_make_room("team-1", "Team", RoomKind.CHANNEL), True)
|
|
|
@@ -1615,10 +1615,10 @@ class TestRespondRoomRefresh:
|
|
|
|
|
|
await adapter._refresh_rooms()
|
|
|
|
|
|
- assert sorted(adapter._watch_room_ids) == ["news-1", "team-1"]
|
|
|
+ assert sorted(adapter._joined_room_ids) == ["news-1", "team-1"]
|
|
|
adapter._seed_room.assert_awaited_once_with("team-1")
|
|
|
|
|
|
- async def test_watch_log_tags_read_only_and_universal(self, caplog):
|
|
|
+ async def test_join_log_tags_read_only_and_universal(self, caplog):
|
|
|
adapter = self._adapter(["team-1"])
|
|
|
news = Room(id="news-1", name="News", kind=RoomKind.CHANNEL, universal=True)
|
|
|
team = Room(id="team-1", name="Team", kind=RoomKind.CHANNEL, universal=False)
|
|
|
@@ -1629,10 +1629,10 @@ class TestRespondRoomRefresh:
|
|
|
with caplog.at_level("INFO"):
|
|
|
await adapter._refresh_rooms()
|
|
|
|
|
|
- watching = [m for m in caplog.messages if "Watching" in m]
|
|
|
- assert watching, "expected the watch summary log line"
|
|
|
- assert "[read-only]" in watching[-1]
|
|
|
- assert "[universal]" in watching[-1]
|
|
|
+ joined = [m for m in caplog.messages if "currently joined" in m]
|
|
|
+ assert joined, "expected the joined-rooms summary log line"
|
|
|
+ assert "[read-only]" in joined[-1]
|
|
|
+ assert "[universal]" in joined[-1]
|
|
|
|
|
|
async def test_warns_when_respond_list_names_unjoined_rooms(self, caplog):
|
|
|
adapter = self._adapter(["ghost-id"])
|