"""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