core/tests/components/anova/test_sensor.py

62 lines
2.1 KiB
Python

"""Test the Anova sensors."""
from datetime import timedelta
import logging
from unittest.mock import patch
from anova_wifi import AnovaApi, AnovaOffline
from homeassistant.const import STATE_UNAVAILABLE
from homeassistant.core import HomeAssistant
from homeassistant.util import dt as dt_util
from . import async_init_integration
from tests.common import async_fire_time_changed
LOGGER = logging.getLogger(__name__)
async def test_sensors(hass: HomeAssistant, anova_api: AnovaApi) -> None:
"""Test setting up creates the sensors."""
await async_init_integration(hass)
assert len(hass.states.async_all("sensor")) == 8
assert (
hass.states.get("sensor.anova_precision_cooker_cook_time_remaining").state
== "0"
)
assert hass.states.get("sensor.anova_precision_cooker_cook_time").state == "0"
assert (
hass.states.get("sensor.anova_precision_cooker_heater_temperature").state
== "20.87"
)
assert hass.states.get("sensor.anova_precision_cooker_mode").state == "Low water"
assert hass.states.get("sensor.anova_precision_cooker_state").state == "No state"
assert (
hass.states.get("sensor.anova_precision_cooker_target_temperature").state
== "23.33"
)
assert (
hass.states.get("sensor.anova_precision_cooker_water_temperature").state
== "21.33"
)
assert (
hass.states.get("sensor.anova_precision_cooker_triac_temperature").state
== "21.79"
)
async def test_update_failed(hass: HomeAssistant, anova_api: AnovaApi) -> None:
"""Test updating data after the coordinator has been set up, but anova is offline."""
await async_init_integration(hass)
await hass.async_block_till_done()
with patch(
"homeassistant.components.anova.AnovaPrecisionCooker.update",
side_effect=AnovaOffline(),
):
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=61))
await hass.async_block_till_done()
state = hass.states.get("sensor.anova_precision_cooker_water_temperature")
assert state.state == STATE_UNAVAILABLE