mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Use freezegun in fronius tests (#99030)
This commit is contained in:
parent
5617a738c0
commit
0d3663c52a
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user