|
33 | 33 | from .common import create_ws_message |
34 | 34 |
|
35 | 35 |
|
| 36 | +@pytest.mark.asyncio |
| 37 | +async def test_callbacks(caplog, mock_api, ws_message_event, ws_messages): |
| 38 | + """Test that callbacks are executed correctly.""" |
| 39 | + caplog.set_level(logging.INFO) |
| 40 | + |
| 41 | + mock_connect_callback = Mock() |
| 42 | + mock_disconnect_callback = Mock() |
| 43 | + mock_event_callback = Mock() |
| 44 | + |
| 45 | + async def async_mock_connect_callback(): |
| 46 | + """Define a mock async conenct callback.""" |
| 47 | + LOGGER.info("We are connected!") |
| 48 | + |
| 49 | + client = WebsocketClient(mock_api) |
| 50 | + client.add_connect_callback(mock_connect_callback) |
| 51 | + client.add_connect_callback(async_mock_connect_callback) |
| 52 | + client.add_disconnect_callback(mock_disconnect_callback) |
| 53 | + client.add_event_callback(mock_event_callback) |
| 54 | + |
| 55 | + assert mock_connect_callback.call_count == 0 |
| 56 | + assert mock_disconnect_callback.call_count == 0 |
| 57 | + assert mock_event_callback.call_count == 0 |
| 58 | + |
| 59 | + await client.async_connect() |
| 60 | + assert client.connected |
| 61 | + await asyncio.sleep(1) |
| 62 | + assert mock_connect_callback.call_count == 1 |
| 63 | + assert any("We are connected!" in e.message for e in caplog.records) |
| 64 | + |
| 65 | + ws_messages.append(create_ws_message(ws_message_event)) |
| 66 | + await client.async_listen() |
| 67 | + await asyncio.sleep(1) |
| 68 | + expected_event = websocket_event_from_payload(ws_message_event) |
| 69 | + mock_event_callback.assert_called_once_with(expected_event) |
| 70 | + |
| 71 | + await client.async_disconnect() |
| 72 | + assert not client.connected |
| 73 | + assert mock_disconnect_callback.call_count == 1 |
| 74 | + |
| 75 | + |
36 | 76 | @pytest.mark.asyncio |
37 | 77 | @pytest.mark.parametrize( |
38 | 78 | "error", |
@@ -61,6 +101,9 @@ async def test_connect_disconnect(mock_api): |
61 | 101 | await client.async_connect() |
62 | 102 | assert client.connected |
63 | 103 |
|
| 104 | + # Attempt to connect again, which should just return: |
| 105 | + await client.async_connect() |
| 106 | + |
64 | 107 | await client.async_disconnect() |
65 | 108 | assert not client.connected |
66 | 109 |
|
@@ -159,48 +202,6 @@ async def test_listen_error_message_types( |
159 | 202 | await client.async_listen() |
160 | 203 |
|
161 | 204 |
|
162 | | -@pytest.mark.asyncio |
163 | | -async def test_callbacks(caplog, mock_api, ws_message_event, ws_messages): |
164 | | - """Test that callbacks are executed correctly.""" |
165 | | - caplog.set_level(logging.INFO) |
166 | | - |
167 | | - mock_connect_callback = Mock() |
168 | | - mock_disconnect_callback = Mock() |
169 | | - mock_event_callback = Mock() |
170 | | - |
171 | | - async def async_mock_connect_callback(): |
172 | | - """Define a mock async conenct callback.""" |
173 | | - LOGGER.info("We are connected!") |
174 | | - |
175 | | - client = WebsocketClient(mock_api) |
176 | | - client.add_connect_callback(mock_connect_callback) |
177 | | - client.add_connect_callback(async_mock_connect_callback) |
178 | | - client.add_disconnect_callback(mock_disconnect_callback) |
179 | | - client.add_event_callback(mock_event_callback) |
180 | | - |
181 | | - assert mock_connect_callback.call_count == 0 |
182 | | - assert mock_disconnect_callback.call_count == 0 |
183 | | - assert mock_event_callback.call_count == 0 |
184 | | - |
185 | | - await client.async_connect() |
186 | | - assert client.connected |
187 | | - await asyncio.sleep(1) |
188 | | - assert mock_connect_callback.call_count == 1 |
189 | | - assert any("We are connected!" in e.message for e in caplog.records) |
190 | | - |
191 | | - ws_messages.append(create_ws_message(ws_message_event)) |
192 | | - await client.async_listen() |
193 | | - await asyncio.sleep(1) |
194 | | - expected_event = websocket_event_from_payload(ws_message_event) |
195 | | - mock_event_callback.assert_called_once_with(expected_event) |
196 | | - |
197 | | - # Add another message to the queue to keep the websocket open while we disconnect |
198 | | - # from it: |
199 | | - await client.async_disconnect() |
200 | | - assert not client.connected |
201 | | - assert mock_disconnect_callback.call_count == 1 |
202 | | - |
203 | | - |
204 | 205 | @pytest.mark.asyncio |
205 | 206 | async def test_reconnect(mock_api): |
206 | 207 | """Test reconnecting to the websocket.""" |
|
0 commit comments