2022-12-01 19:44:56 +00:00
|
|
|
"""Test the adapter."""
|
|
|
|
from __future__ import annotations
|
|
|
|
|
2022-12-17 22:44:19 +00:00
|
|
|
from unittest.mock import MagicMock
|
2022-12-01 19:44:56 +00:00
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
from homeassistant.components.matter.const import DOMAIN
|
|
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from homeassistant.helpers import device_registry as dr
|
|
|
|
|
|
|
|
from .common import setup_integration_with_node_fixture
|
|
|
|
|
|
|
|
|
|
|
|
async def test_device_registry_single_node_device(
|
2022-12-17 22:44:19 +00:00
|
|
|
hass: HomeAssistant,
|
|
|
|
matter_client: MagicMock,
|
2022-12-01 19:44:56 +00:00
|
|
|
) -> None:
|
|
|
|
"""Test bridge devices are set up correctly with via_device."""
|
|
|
|
await setup_integration_with_node_fixture(
|
2022-12-17 22:44:19 +00:00
|
|
|
hass,
|
|
|
|
"onoff-light",
|
|
|
|
matter_client,
|
2022-12-01 19:44:56 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
dev_reg = dr.async_get(hass)
|
|
|
|
|
2022-12-17 22:44:19 +00:00
|
|
|
entry = dev_reg.async_get_device({(DOMAIN, "mock-onoff-light")})
|
2022-12-01 19:44:56 +00:00
|
|
|
assert entry is not None
|
|
|
|
|
2022-12-17 22:44:19 +00:00
|
|
|
assert entry.name == "Mock OnOff Light"
|
2022-12-01 19:44:56 +00:00
|
|
|
assert entry.manufacturer == "Nabu Casa"
|
2022-12-17 22:44:19 +00:00
|
|
|
assert entry.model == "Mock Light"
|
2022-12-01 19:44:56 +00:00
|
|
|
assert entry.hw_version == "v1.0"
|
2022-12-17 22:44:19 +00:00
|
|
|
assert entry.sw_version == "v1.0"
|
2022-12-01 19:44:56 +00:00
|
|
|
|
|
|
|
|
2022-12-17 22:44:19 +00:00
|
|
|
@pytest.mark.skip("Waiting for a new test fixture")
|
2022-12-01 19:44:56 +00:00
|
|
|
async def test_device_registry_bridge(
|
2022-12-17 22:44:19 +00:00
|
|
|
hass: HomeAssistant,
|
|
|
|
matter_client: MagicMock,
|
2022-12-01 19:44:56 +00:00
|
|
|
) -> None:
|
|
|
|
"""Test bridge devices are set up correctly with via_device."""
|
|
|
|
await setup_integration_with_node_fixture(
|
2022-12-17 22:44:19 +00:00
|
|
|
hass,
|
|
|
|
"fake-bridge-two-light",
|
|
|
|
matter_client,
|
2022-12-01 19:44:56 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
dev_reg = dr.async_get(hass)
|
|
|
|
|
|
|
|
# Validate bridge
|
|
|
|
bridge_entry = dev_reg.async_get_device({(DOMAIN, "mock-hub-id")})
|
|
|
|
assert bridge_entry is not None
|
|
|
|
|
|
|
|
assert bridge_entry.name == "My Mock Bridge"
|
|
|
|
assert bridge_entry.manufacturer == "Mock Vendor"
|
|
|
|
assert bridge_entry.model == "Mock Bridge"
|
|
|
|
assert bridge_entry.hw_version == "TEST_VERSION"
|
|
|
|
assert bridge_entry.sw_version == "123.4.5"
|
|
|
|
|
|
|
|
# Device 1
|
|
|
|
device1_entry = dev_reg.async_get_device({(DOMAIN, "mock-id-kitchen-ceiling")})
|
|
|
|
assert device1_entry is not None
|
|
|
|
|
|
|
|
assert device1_entry.via_device_id == bridge_entry.id
|
|
|
|
assert device1_entry.name == "Kitchen Ceiling"
|
|
|
|
assert device1_entry.manufacturer == "Mock Vendor"
|
|
|
|
assert device1_entry.model == "Mock Light"
|
|
|
|
assert device1_entry.hw_version is None
|
|
|
|
assert device1_entry.sw_version == "67.8.9"
|
|
|
|
|
|
|
|
# Device 2
|
|
|
|
device2_entry = dev_reg.async_get_device({(DOMAIN, "mock-id-living-room-ceiling")})
|
|
|
|
assert device2_entry is not None
|
|
|
|
|
|
|
|
assert device2_entry.via_device_id == bridge_entry.id
|
|
|
|
assert device2_entry.name == "Living Room Ceiling"
|
|
|
|
assert device2_entry.manufacturer == "Mock Vendor"
|
|
|
|
assert device2_entry.model == "Mock Light"
|
|
|
|
assert device2_entry.hw_version is None
|
|
|
|
assert device2_entry.sw_version == "1.49.1"
|