"""Diagnosesensoren.""" from __future__ import annotations from typing import Any from freezegun.api import FrozenDateTimeFactory from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_registry as er import pytest from pytest_homeassistant_custom_component.common import MockConfigEntry from tests.helpers import abfragen, entity_id_for @pytest.mark.parametrize( ("key", "wert"), [ ("ip_address", "192.168.2.238"), ("rssi", "-68"), ("uptime", "1459"), ("free_heap", "156848"), ("power_scale", "100"), ], ) async def test_werte( hass: HomeAssistant, init_integration: MockConfigEntry, key: str, wert: str ) -> None: registry = er.async_get(hass) entity_id = entity_id_for(hass, "sensor", key) eintrag = registry.async_get(entity_id) assert eintrag is not None if eintrag.disabled: # Die drei Diagnosesensoren sind standardmaessig aus; dann gibt es # keinen Zustand, und mehr ist hier nicht zu pruefen. assert key in ("rssi", "uptime", "free_heap") return assert hass.states.get(entity_id).state == wert async def test_welche_sensoren_von_haus_aus_an_sind( hass: HomeAssistant, init_integration: MockConfigEntry ) -> None: registry = er.async_get(hass) an = [ registry.async_get(entity_id_for(hass, "sensor", key)).disabled_by is None for key in ("ip_address", "rssi", "uptime", "free_heap", "power_scale") ] # Die Adresse und die Leistungsbegrenzung sind an, der Rest ist Diagnose # fuer den Fehlerfall. assert an == [True, False, False, False, True] async def test_fehlender_wifi_block_ergibt_keinen_wert( hass: HomeAssistant, init_integration: MockConfigEntry, strip_info: dict[str, Any], freezer: FrozenDateTimeFactory, ) -> None: """Ein Geraet im Onboarding meldet keinen strip-Block mit power_scale.""" strip_info.pop("strip") await abfragen(hass, freezer) assert hass.states.get(entity_id_for(hass, "sensor", "power_scale")).state == "unknown" async def test_ohne_wifi_block_bleibt_die_adresse_leer( hass: HomeAssistant, init_integration: MockConfigEntry, strip_info: dict[str, Any], freezer: FrozenDateTimeFactory, ) -> None: strip_info.pop("wifi") await abfragen(hass, freezer) assert hass.states.get(entity_id_for(hass, "sensor", "ip_address")).state == "unknown"