import pytest from app.core.websocket.manager import ConnectionManager class FakeWebSocket: def __init__(self): self.accepted = False self.sent = [] self.closed = False async def accept(self): self.accepted = True async def send_json(self, message): self.sent.append(message) async def close(self): self.closed = True @pytest.mark.asyncio async def test_channel_subscribers_receive_channel_broadcasts(): manager = ConnectionManager() socket = FakeWebSocket() await manager.connect(socket, "user-1") manager.subscribe(socket, ["dashboard"]) await manager.broadcast({"type": "data_frame", "channel": "dashboard"}, channel="dashboard") assert socket.accepted is True assert socket.sent == [{"type": "data_frame", "channel": "dashboard"}] @pytest.mark.asyncio async def test_disconnect_removes_channel_subscriptions(): manager = ConnectionManager() socket = FakeWebSocket() await manager.connect(socket, "user-1") manager.subscribe(socket, ["dashboard"]) manager.disconnect(socket, "user-1") await manager.broadcast({"type": "data_frame", "channel": "dashboard"}, channel="dashboard") assert socket.sent == [] assert "dashboard" not in manager.channel_subscriptions