mirror of
https://github.com/Electric-Special/ha-core.git
synced 2026-03-21 05:06:13 +01:00
Small test cleanup for Fritz (#162993)
This commit is contained in:
@@ -26,6 +26,7 @@ class MeshRoles(StrEnum):
|
||||
|
||||
|
||||
DOMAIN = "fritz"
|
||||
SCAN_INTERVAL = 30
|
||||
|
||||
PLATFORMS = [
|
||||
Platform.BINARY_SENSOR,
|
||||
|
||||
@@ -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] = {}
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user