mirror of https://github.com/home-assistant/core
115 lines
3.9 KiB
Python
115 lines
3.9 KiB
Python
"""Test Flo by Moen sensor entities."""
|
|
|
|
import pytest
|
|
|
|
from homeassistant.components.flo.const import DOMAIN as FLO_DOMAIN
|
|
from homeassistant.components.sensor import ATTR_STATE_CLASS, SensorStateClass
|
|
from homeassistant.const import ATTR_ENTITY_ID, CONF_PASSWORD, CONF_USERNAME
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.setup import async_setup_component
|
|
from homeassistant.util.unit_system import US_CUSTOMARY_SYSTEM
|
|
|
|
from .common import TEST_PASSWORD, TEST_USER_ID
|
|
|
|
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 async_setup_component(
|
|
hass, FLO_DOMAIN, {CONF_USERNAME: TEST_USER_ID, CONF_PASSWORD: TEST_PASSWORD}
|
|
)
|
|
await hass.async_block_till_done()
|
|
|
|
assert len(hass.data[FLO_DOMAIN][config_entry.entry_id]["devices"]) == 2
|
|
|
|
# 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 async_setup_component(
|
|
hass, FLO_DOMAIN, {CONF_USERNAME: TEST_USER_ID, CONF_PASSWORD: TEST_PASSWORD}
|
|
)
|
|
await hass.async_block_till_done()
|
|
|
|
assert len(hass.data[FLO_DOMAIN][config_entry.entry_id]["devices"]) == 2
|
|
|
|
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
|