Small test cleanup for Fritz (#162993)

This commit is contained in:
Simone Chemelli
2026-02-14 13:41:26 +01:00
committed by GitHub
parent 5344a874b0
commit 10fa02a36c
6 changed files with 34 additions and 18 deletions

View File

@@ -26,6 +26,7 @@ class MeshRoles(StrEnum):
DOMAIN = "fritz"
SCAN_INTERVAL = 30
PLATFORMS = [
Platform.BINARY_SENSOR,

View File

@@ -48,6 +48,7 @@ from .const import (
DEFAULT_USERNAME,
DOMAIN,
FRITZ_EXCEPTIONS,
SCAN_INTERVAL,
MeshRoles,
)
from .helpers import _ha_is_stopping
@@ -159,7 +160,7 @@ class FritzBoxTools(DataUpdateCoordinator[UpdateCoordinatorDataType]):
config_entry=config_entry,
logger=_LOGGER,
name=f"{DOMAIN}-{host}-coordinator",
update_interval=timedelta(seconds=30),
update_interval=timedelta(seconds=SCAN_INTERVAL),
)
self._devices: dict[str, FritzDevice] = {}

View File

@@ -7,7 +7,7 @@ import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.binary_sensor import STATE_ON
from homeassistant.components.fritz.const import DOMAIN
from homeassistant.components.fritz.const import DOMAIN, SCAN_INTERVAL
from homeassistant.config_entries import ConfigEntryState
from homeassistant.const import STATE_UNKNOWN, Platform
from homeassistant.core import HomeAssistant
@@ -64,7 +64,7 @@ async def test_binary_sensor_missing_state(
"homeassistant.components.fritz.coordinator.FritzBoxTools._async_update_data",
return_value={"entity_states": {}},
):
freezer.tick(30)
freezer.tick(SCAN_INTERVAL)
async_fire_time_changed(hass)
await hass.async_block_till_done()

View File

@@ -1,19 +1,18 @@
"""Tests for Fritz!Tools button platform."""
from copy import deepcopy
from datetime import timedelta
from unittest.mock import patch
from freezegun.api import FrozenDateTimeFactory
import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN, SERVICE_PRESS
from homeassistant.components.fritz.const import DOMAIN, MeshRoles
from homeassistant.components.fritz.const import DOMAIN, SCAN_INTERVAL, MeshRoles
from homeassistant.config_entries import ConfigEntryState
from homeassistant.const import ATTR_ENTITY_ID, STATE_UNKNOWN, Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.util.dt import utcnow
from .const import (
MOCK_HOST_ATTRIBUTES_DATA,
@@ -123,6 +122,7 @@ async def test_wol_button(
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
async def test_wol_button_new_device(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
fc_class_mock,
fh_class_mock,
) -> None:
@@ -141,7 +141,8 @@ async def test_wol_button_new_device(
mesh_data["nodes"].append(MOCK_NEW_DEVICE_NODE)
fh_class_mock.get_mesh_topology.return_value = mesh_data
async_fire_time_changed(hass, utcnow() + timedelta(seconds=60))
freezer.tick(SCAN_INTERVAL)
async_fire_time_changed(hass)
await hass.async_block_till_done(wait_background_tasks=True)
assert hass.states.get("button.printer_wake_on_lan")

View File

@@ -1,20 +1,19 @@
"""Tests for Fritz!Tools image platform."""
from datetime import timedelta
from http import HTTPStatus
from unittest.mock import patch
from freezegun.api import FrozenDateTimeFactory
import pytest
from requests.exceptions import ReadTimeout
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.fritz.const import DOMAIN
from homeassistant.components.fritz.const import DOMAIN, SCAN_INTERVAL
from homeassistant.components.image import DOMAIN as IMAGE_DOMAIN
from homeassistant.config_entries import ConfigEntryState
from homeassistant.const import STATE_UNKNOWN, Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from homeassistant.util.dt import utcnow
from .const import MOCK_FB_SERVICES, MOCK_USER_DATA
@@ -143,6 +142,7 @@ async def test_image_update(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
snapshot: SnapshotAssertion,
freezer: FrozenDateTimeFactory,
fc_class_mock,
fh_class_mock,
) -> None:
@@ -166,7 +166,9 @@ async def test_image_update(
assert resp.status == HTTPStatus.OK
fc_class_mock().override_services({**MOCK_FB_SERVICES, **GUEST_WIFI_CHANGED})
async_fire_time_changed(hass, utcnow() + timedelta(seconds=60))
freezer.tick(SCAN_INTERVAL)
async_fire_time_changed(hass)
await hass.async_block_till_done(wait_background_tasks=True)
resp = await client.get("/api/image_proxy/image.mock_title_guestwifi")
@@ -179,6 +181,7 @@ async def test_image_update(
@pytest.mark.parametrize(("fc_data"), [({**MOCK_FB_SERVICES, **GUEST_WIFI_ENABLED})])
async def test_image_update_unavailable(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
fc_class_mock,
fh_class_mock,
) -> None:
@@ -201,7 +204,9 @@ async def test_image_update_unavailable(
# fritzbox becomes unavailable
fc_class_mock().call_action_side_effect(ReadTimeout)
async_fire_time_changed(hass, utcnow() + timedelta(seconds=60))
freezer.tick(SCAN_INTERVAL)
async_fire_time_changed(hass)
await hass.async_block_till_done(wait_background_tasks=True)
state = hass.states.get("image.mock_title_guestwifi")
@@ -209,7 +214,9 @@ async def test_image_update_unavailable(
# fritzbox is available again
fc_class_mock().call_action_side_effect(None)
async_fire_time_changed(hass, utcnow() + timedelta(seconds=60))
freezer.tick(SCAN_INTERVAL)
async_fire_time_changed(hass)
await hass.async_block_till_done(wait_background_tasks=True)
state = hass.states.get("image.mock_title_guestwifi")

View File

@@ -2,19 +2,19 @@
from __future__ import annotations
from datetime import UTC, datetime, timedelta
from datetime import UTC, datetime
from unittest.mock import patch
from freezegun.api import FrozenDateTimeFactory
from fritzconnection.core.exceptions import FritzConnectionException
import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.fritz.const import DOMAIN
from homeassistant.components.fritz.const import DOMAIN, SCAN_INTERVAL
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
from homeassistant.const import STATE_UNAVAILABLE, Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from homeassistant.util import dt as dt_util
from .const import MOCK_USER_DATA
@@ -44,7 +44,11 @@ async def test_sensor_setup(
async def test_sensor_update_fail(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture, fc_class_mock, fh_class_mock
hass: HomeAssistant,
caplog: pytest.LogCaptureFixture,
freezer: FrozenDateTimeFactory,
fc_class_mock,
fh_class_mock,
) -> None:
"""Test failed update of Fritz!Tools sensors."""
@@ -55,7 +59,9 @@ async def test_sensor_update_fail(
await hass.async_block_till_done()
fc_class_mock().call_action_side_effect(FritzConnectionException("Boom"))
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=300))
freezer.tick(SCAN_INTERVAL)
async_fire_time_changed(hass)
await hass.async_block_till_done(wait_background_tasks=True)
assert "Error while updating the data: Boom" in caplog.text