Files
core/tests/components/zha/test_entity.py
T

56 lines
1.8 KiB
Python

"""Test ZHA entities."""
from collections.abc import Callable, Coroutine
from zigpy.device import Device
from zigpy.profiles import zha
from zigpy.zcl.clusters import general
from homeassistant.components.zha.const import DOMAIN
from homeassistant.components.zha.helpers import get_zha_gateway
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr
from .conftest import SIG_EP_INPUT, SIG_EP_OUTPUT, SIG_EP_PROFILE, SIG_EP_TYPE
from tests.common import MockConfigEntry
async def test_device_registry_via_device(
hass: HomeAssistant,
config_entry: MockConfigEntry,
setup_zha: Callable[..., Coroutine[None]],
zigpy_device_mock: Callable[..., Device],
device_registry: dr.DeviceRegistry,
) -> None:
"""Test a ZHA device links to the coordinator device via via_device_id."""
await setup_zha()
gateway = get_zha_gateway(hass)
zigpy_device = zigpy_device_mock(
{
1: {
SIG_EP_INPUT: [general.Basic.cluster_id],
SIG_EP_OUTPUT: [],
SIG_EP_TYPE: zha.DeviceType.ON_OFF_SWITCH,
SIG_EP_PROFILE: zha.PROFILE_ID,
}
},
)
zha_device = gateway.get_or_create_device(zigpy_device)
await gateway.async_device_initialized(zigpy_device)
await hass.async_block_till_done(wait_background_tasks=True)
coordinator_device = device_registry.async_get_device_by_identifier(
(DOMAIN, str(gateway.state.node_info.ieee)), config_entry.entry_id
)
assert coordinator_device is not None
reg_device = device_registry.async_get_device_by_identifier(
(DOMAIN, str(zha_device.ieee)), config_entry.entry_id
)
assert reg_device is not None
assert reg_device.via_device_id == coordinator_device.id