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