core/tests/components/vera/test_init.py

79 lines
2.3 KiB
Python

"""Vera tests."""
from unittest.mock import MagicMock
from pyvera import (
VeraArmableDevice,
VeraBinarySensor,
VeraController,
VeraCurtain,
VeraDevice,
VeraDimmer,
VeraLock,
VeraScene,
VeraSceneController,
VeraSensor,
VeraSwitch,
VeraThermostat,
)
from homeassistant.components.vera import (
CONF_EXCLUDE,
CONF_LIGHTS,
DOMAIN,
VERA_DEVICES,
)
from homeassistant.core import HomeAssistant
from .common import ComponentFactory
def new_vera_device(cls, device_id: int) -> VeraDevice:
"""Create new mocked vera device.."""
vera_device = MagicMock(spec=cls) # type: VeraDevice
vera_device.device_id = device_id
vera_device.name = f"dev${device_id}"
return vera_device
def assert_hass_vera_devices(hass: HomeAssistant, platform: str, arr_len: int) -> None:
"""Assert vera devices are present.."""
assert hass.data[VERA_DEVICES][platform]
assert len(hass.data[VERA_DEVICES][platform]) == arr_len
async def test_init(
hass: HomeAssistant, vera_component_factory: ComponentFactory
) -> None:
"""Test function."""
def setup_callback(controller: VeraController, hass_config: dict) -> None:
hass_config[DOMAIN][CONF_EXCLUDE] = [11]
hass_config[DOMAIN][CONF_LIGHTS] = [10]
await vera_component_factory.configure_component(
hass=hass,
devices=(
new_vera_device(VeraDimmer, 1),
new_vera_device(VeraBinarySensor, 2),
new_vera_device(VeraSensor, 3),
new_vera_device(VeraArmableDevice, 4),
new_vera_device(VeraLock, 5),
new_vera_device(VeraThermostat, 6),
new_vera_device(VeraCurtain, 7),
new_vera_device(VeraSceneController, 8),
new_vera_device(VeraSwitch, 9),
new_vera_device(VeraSwitch, 10),
new_vera_device(VeraSwitch, 11),
),
scenes=(MagicMock(spec=VeraScene),),
setup_callback=setup_callback,
)
assert_hass_vera_devices(hass, "light", 2)
assert_hass_vera_devices(hass, "binary_sensor", 1)
assert_hass_vera_devices(hass, "sensor", 2)
assert_hass_vera_devices(hass, "switch", 2)
assert_hass_vera_devices(hass, "lock", 1)
assert_hass_vera_devices(hass, "climate", 1)
assert_hass_vera_devices(hass, "cover", 1)