diff --git a/tests/components/fronius/test_coordinator.py b/tests/components/fronius/test_coordinator.py index a0e420c5b52..d4f42fadb06 100644 --- a/tests/components/fronius/test_coordinator.py +++ b/tests/components/fronius/test_coordinator.py @@ -1,13 +1,13 @@ """Test the Fronius update coordinators.""" from unittest.mock import patch +from freezegun.api import FrozenDateTimeFactory from pyfronius import BadStatusError, FroniusError from homeassistant.components.fronius.coordinator import ( FroniusInverterUpdateCoordinator, ) from homeassistant.core import HomeAssistant -from homeassistant.util import dt as dt_util from . import mock_responses, setup_fronius_integration @@ -16,7 +16,9 @@ from tests.test_util.aiohttp import AiohttpClientMocker async def test_adaptive_update_interval( - hass: HomeAssistant, aioclient_mock: AiohttpClientMocker + hass: HomeAssistant, + aioclient_mock: AiohttpClientMocker, + freezer: FrozenDateTimeFactory, ) -> None: """Test coordinators changing their update interval when inverter not available.""" with patch("pyfronius.Fronius.current_inverter_data") as mock_inverter_data: @@ -25,9 +27,8 @@ async def test_adaptive_update_interval( mock_inverter_data.assert_called_once() mock_inverter_data.reset_mock() - async_fire_time_changed( - hass, dt_util.utcnow() + FroniusInverterUpdateCoordinator.default_interval - ) + freezer.tick(FroniusInverterUpdateCoordinator.default_interval) + async_fire_time_changed(hass, None) await hass.async_block_till_done() mock_inverter_data.assert_called_once() mock_inverter_data.reset_mock() @@ -35,33 +36,28 @@ async def test_adaptive_update_interval( mock_inverter_data.side_effect = FroniusError() # first 3 bad requests at default interval - 4th has different interval for _ in range(3): - async_fire_time_changed( - hass, - dt_util.utcnow() + FroniusInverterUpdateCoordinator.default_interval, - ) + freezer.tick(FroniusInverterUpdateCoordinator.default_interval) + async_fire_time_changed(hass, None) await hass.async_block_till_done() assert mock_inverter_data.call_count == 3 mock_inverter_data.reset_mock() - async_fire_time_changed( - hass, dt_util.utcnow() + FroniusInverterUpdateCoordinator.error_interval - ) + freezer.tick(FroniusInverterUpdateCoordinator.error_interval) + async_fire_time_changed(hass, None) await hass.async_block_till_done() assert mock_inverter_data.call_count == 1 mock_inverter_data.reset_mock() mock_inverter_data.side_effect = None # next successful request resets to default interval - async_fire_time_changed( - hass, dt_util.utcnow() + FroniusInverterUpdateCoordinator.error_interval - ) + freezer.tick(FroniusInverterUpdateCoordinator.error_interval) + async_fire_time_changed(hass, None) await hass.async_block_till_done() mock_inverter_data.assert_called_once() mock_inverter_data.reset_mock() - async_fire_time_changed( - hass, dt_util.utcnow() + FroniusInverterUpdateCoordinator.default_interval - ) + freezer.tick(FroniusInverterUpdateCoordinator.default_interval) + async_fire_time_changed(hass, None) await hass.async_block_till_done() mock_inverter_data.assert_called_once() mock_inverter_data.reset_mock() @@ -70,10 +66,8 @@ async def test_adaptive_update_interval( mock_inverter_data.side_effect = BadStatusError("mock_endpoint", 8) # first 3 requests at default interval - 4th has different interval for _ in range(3): - async_fire_time_changed( - hass, - dt_util.utcnow() + FroniusInverterUpdateCoordinator.default_interval, - ) + freezer.tick(FroniusInverterUpdateCoordinator.default_interval) + async_fire_time_changed(hass, None) await hass.async_block_till_done() # BadStatusError does 3 silent retries for inverter endpoint * 3 request intervals = 9 assert mock_inverter_data.call_count == 9