Files
core/tests/components/flo/test_sensor.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

104 lines
3.5 KiB
Python
Raw Normal View History

"""Test Flo by Moen sensor entities."""
import pytest
from homeassistant.components.sensor import ATTR_STATE_CLASS, SensorStateClass
from homeassistant.const import ATTR_ENTITY_ID
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component
from homeassistant.util.unit_system import US_CUSTOMARY_SYSTEM
from tests.common import MockConfigEntry
from tests.test_util.aiohttp import AiohttpClientMocker
@pytest.mark.usefixtures("aioclient_mock_fixture")
async def test_sensors(hass: HomeAssistant, config_entry: MockConfigEntry) -> None:
"""Test Flo by Moen sensors."""
hass.config.units = US_CUSTOMARY_SYSTEM
config_entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done()
# we should have 5 entities for the valve
assert (
hass.states.get("sensor.smart_water_shutoff_current_system_mode").state
== "home"
)
assert (
hass.states.get("sensor.smart_water_shutoff_today_s_water_usage").state == "3.7"
)
assert (
hass.states.get("sensor.smart_water_shutoff_today_s_water_usage").attributes[
ATTR_STATE_CLASS
]
== SensorStateClass.TOTAL_INCREASING
)
assert hass.states.get("sensor.smart_water_shutoff_water_flow_rate").state == "0"
assert (
hass.states.get("sensor.smart_water_shutoff_water_flow_rate").attributes[
ATTR_STATE_CLASS
]
== SensorStateClass.MEASUREMENT
)
assert hass.states.get("sensor.smart_water_shutoff_water_pressure").state == "54.2"
assert (
hass.states.get("sensor.smart_water_shutoff_water_pressure").attributes[
ATTR_STATE_CLASS
]
== SensorStateClass.MEASUREMENT
)
assert hass.states.get("sensor.smart_water_shutoff_water_temperature").state == "70"
assert (
hass.states.get("sensor.smart_water_shutoff_water_temperature").attributes[
ATTR_STATE_CLASS
]
== SensorStateClass.MEASUREMENT
)
# and 3 entities for the detector
assert hass.states.get("sensor.kitchen_sink_temperature").state == "61"
assert (
hass.states.get("sensor.kitchen_sink_temperature").attributes[ATTR_STATE_CLASS]
== SensorStateClass.MEASUREMENT
)
assert hass.states.get("sensor.kitchen_sink_humidity").state == "43"
assert (
hass.states.get("sensor.kitchen_sink_humidity").attributes[ATTR_STATE_CLASS]
== SensorStateClass.MEASUREMENT
)
assert hass.states.get("sensor.kitchen_sink_battery").state == "100"
assert (
hass.states.get("sensor.kitchen_sink_battery").attributes[ATTR_STATE_CLASS]
== SensorStateClass.MEASUREMENT
)
@pytest.mark.usefixtures("aioclient_mock_fixture")
async def test_manual_update_entity(
hass: HomeAssistant,
config_entry: MockConfigEntry,
aioclient_mock: AiohttpClientMocker,
) -> None:
"""Test manual update entity via service homeasasistant/update_entity."""
config_entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done()
await async_setup_component(hass, "homeassistant", {})
call_count = aioclient_mock.call_count
await hass.services.async_call(
"homeassistant",
"update_entity",
{ATTR_ENTITY_ID: ["sensor.smart_water_shutoff_current_system_mode"]},
blocking=True,
)
assert aioclient_mock.call_count == call_count + 3