core/tests/components/dyson/test_air_quality.py

68 lines
2.2 KiB
Python
Raw Normal View History

"""Test the Dyson air quality component."""
from libpurecool.dyson_pure_cool import DysonPureCool
from libpurecool.dyson_pure_state_v2 import DysonEnvironmentalSensorV2State
2019-07-31 19:25:30 +00:00
from homeassistant.components.air_quality import (
ATTR_AQI,
ATTR_NO2,
2019-07-31 19:25:30 +00:00
ATTR_PM_2_5,
ATTR_PM_10,
DOMAIN as PLATFORM_DOMAIN,
2019-07-31 19:25:30 +00:00
)
from homeassistant.components.dyson.air_quality import ATTR_VOC
from homeassistant.core import HomeAssistant, callback
from .common import ENTITY_NAME, async_get_purecool_device, async_update_device
ENTITY_ID = f"{PLATFORM_DOMAIN}.{ENTITY_NAME}"
MOCKED_VALUES = {
ATTR_PM_2_5: 10,
ATTR_PM_10: 20,
ATTR_NO2: 30,
ATTR_VOC: 40,
}
MOCKED_UPDATED_VALUES = {
ATTR_PM_2_5: 60,
ATTR_PM_10: 50,
ATTR_NO2: 40,
ATTR_VOC: 30,
}
def _async_assign_values(device: DysonPureCool, values=MOCKED_VALUES) -> None:
"""Assign mocked environmental states to the device."""
device.environmental_state.particulate_matter_25 = values[ATTR_PM_2_5]
device.environmental_state.particulate_matter_10 = values[ATTR_PM_10]
device.environmental_state.nitrogen_dioxide = values[ATTR_NO2]
device.environmental_state.volatile_organic_compounds = values[ATTR_VOC]
@callback
def async_get_device() -> DysonPureCool:
"""Return a device of the given type."""
device = async_get_purecool_device()
_async_assign_values(device)
return device
async def test_air_quality(hass: HomeAssistant, device: DysonPureCool) -> None:
"""Test the state and attributes of the air quality entity."""
state = hass.states.get(ENTITY_ID)
assert state.state == str(MOCKED_VALUES[ATTR_PM_2_5])
attributes = state.attributes
for attr, value in MOCKED_VALUES.items():
assert attributes[attr] == value
assert attributes[ATTR_AQI] == 40
_async_assign_values(device, MOCKED_UPDATED_VALUES)
await async_update_device(hass, device, DysonEnvironmentalSensorV2State)
state = hass.states.get(ENTITY_ID)
assert state.state == str(MOCKED_UPDATED_VALUES[ATTR_PM_2_5])
attributes = state.attributes
for attr, value in MOCKED_UPDATED_VALUES.items():
assert attributes[attr] == value
assert attributes[ATTR_AQI] == 60