68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
"""Test the Dyson air quality component."""
|
|
|
|
from libpurecool.dyson_pure_cool import DysonPureCool
|
|
from libpurecool.dyson_pure_state_v2 import DysonEnvironmentalSensorV2State
|
|
|
|
from homeassistant.components.air_quality import (
|
|
ATTR_AQI,
|
|
ATTR_NO2,
|
|
ATTR_PM_2_5,
|
|
ATTR_PM_10,
|
|
DOMAIN as PLATFORM_DOMAIN,
|
|
)
|
|
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
|