This commit is contained in:
Thomas Protzner
2024-08-12 16:51:03 +00:00
parent 7b957d17a8
commit 052aa3e203

View File

@@ -131,28 +131,28 @@ async def test_websocket_not_available(
freezer: FrozenDateTimeFactory, freezer: FrozenDateTimeFactory,
) -> None: ) -> None:
"""Test trying to reload the websocket.""" """Test trying to reload the websocket."""
# Patch DEFAULT_RECONNECT_TIME to 0 for the test
with patch( with patch(
"homeassistant.components.husqvarna_automower.coordinator.DEFAULT_RECONNECT_TIME", "homeassistant.components.husqvarna_automower.coordinator.DEFAULT_RECONNECT_TIME",
new=0, new=0,
): ):
# Simulate a WebSocket handshake error
mock_automower_client.auth.websocket_connect.side_effect = ( mock_automower_client.auth.websocket_connect.side_effect = (
HusqvarnaWSServerHandshakeError("Boom") HusqvarnaWSServerHandshakeError("Boom")
) )
# Setup integration and verify initial log message
await setup_integration(hass, mock_config_entry) await setup_integration(hass, mock_config_entry)
assert ( assert (
"Failed to connect to websocket. Trying to reconnect: Boom" in caplog.text "Failed to connect to websocket. Trying to reconnect: Boom" in caplog.text
) )
# await hass.async_block_till_done()
# assert mock_automower_client.auth.websocket_connect.call_count == 1
# assert mock_config_entry.state is ConfigEntryState.LOADED
# reconnect_time = 0 # Default to zero for testing # Initial call count and range for reconnection attempts
test_range = 866
start_call_count = mock_automower_client.auth.websocket_connect.call_count start_call_count = mock_automower_client.auth.websocket_connect.call_count
test_range = 945 - start_call_count
# Perform reconnection attempts
for count in range(1, test_range): for count in range(1, test_range):
# reconnect_time = min(reconnect_time * 2, MAX_WS_RECONNECT_TIME)
# freezer.tick(timedelta(seconds=reconnect_time))
# async_fire_time_changed(hass)
await hass.async_block_till_done() await hass.async_block_till_done()
assert ( assert (
mock_automower_client.auth.websocket_connect.call_count mock_automower_client.auth.websocket_connect.call_count
@@ -160,14 +160,14 @@ async def test_websocket_not_available(
) )
assert mock_config_entry.state is ConfigEntryState.LOADED assert mock_config_entry.state is ConfigEntryState.LOADED
# Simulate a successful connection and starting of listening # Simulate a successful connection
mock_automower_client.auth.websocket_connect.side_effect = None mock_automower_client.auth.websocket_connect.side_effect = None
freezer.tick(timedelta(seconds=MAX_WS_RECONNECT_TIME)) freezer.tick(timedelta(seconds=MAX_WS_RECONNECT_TIME))
async_fire_time_changed(hass) async_fire_time_changed(hass)
await hass.async_block_till_done() await hass.async_block_till_done()
assert mock_automower_client.start_listening.call_count == 1 assert mock_automower_client.start_listening.call_count == 1
# Test that reconnection occurs if the websocket disconnects again # Test reconnection after another disconnect
mock_automower_client.auth.websocket_connect.side_effect = ( mock_automower_client.auth.websocket_connect.side_effect = (
HusqvarnaWSServerHandshakeError("Boom") HusqvarnaWSServerHandshakeError("Boom")
) )