106 lines
2.8 KiB
Python
106 lines
2.8 KiB
Python
"""The tests for the PG LAB Electronics discovery device."""
|
|
|
|
from syrupy.assertion import SnapshotAssertion
|
|
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers import device_registry as dr
|
|
|
|
from .test_common import get_device_discovery_payload, send_discovery_message
|
|
|
|
from tests.typing import MqttMockHAClient
|
|
|
|
|
|
async def test_device_discover(
|
|
hass: HomeAssistant,
|
|
mqtt_mock: MqttMockHAClient,
|
|
device_reg,
|
|
entity_reg,
|
|
setup_pglab,
|
|
) -> None:
|
|
"""Test setting up a device."""
|
|
|
|
payload = get_device_discovery_payload(
|
|
number_of_shutters=0,
|
|
number_of_boards=2,
|
|
)
|
|
|
|
await send_discovery_message(hass, payload)
|
|
|
|
# Verify device and registry entries are created
|
|
device_entry = device_reg.async_get_device(
|
|
connections={(dr.CONNECTION_NETWORK_MAC, payload["mac"])}
|
|
)
|
|
assert device_entry is not None
|
|
assert device_entry.configuration_url == f"http://{payload['ip']}/"
|
|
assert device_entry.manufacturer == "PG LAB Electronics"
|
|
assert device_entry.model == payload["type"]
|
|
assert device_entry.name == payload["name"]
|
|
assert device_entry.sw_version == payload["fw"]
|
|
|
|
|
|
async def test_device_update(
|
|
hass: HomeAssistant,
|
|
mqtt_mock: MqttMockHAClient,
|
|
device_reg,
|
|
entity_reg,
|
|
setup_pglab,
|
|
snapshot: SnapshotAssertion,
|
|
) -> None:
|
|
"""Test update a device."""
|
|
payload = get_device_discovery_payload(
|
|
number_of_shutters=0,
|
|
number_of_boards=2,
|
|
)
|
|
|
|
await send_discovery_message(hass, payload)
|
|
|
|
# Verify device is created
|
|
device_entry = device_reg.async_get_device(
|
|
connections={(dr.CONNECTION_NETWORK_MAC, payload["mac"])}
|
|
)
|
|
assert device_entry is not None
|
|
|
|
# update device
|
|
payload["fw"] = "1.0.1"
|
|
payload["hw"] = "1.0.8"
|
|
|
|
await send_discovery_message(hass, payload)
|
|
|
|
# Verify device is created
|
|
device_entry = device_reg.async_get_device(
|
|
connections={(dr.CONNECTION_NETWORK_MAC, payload["mac"])}
|
|
)
|
|
assert device_entry is not None
|
|
assert device_entry.sw_version == "1.0.1"
|
|
assert device_entry.hw_version == "1.0.8"
|
|
|
|
|
|
async def test_device_remove(
|
|
hass: HomeAssistant,
|
|
mqtt_mock: MqttMockHAClient,
|
|
device_reg,
|
|
entity_reg,
|
|
setup_pglab,
|
|
) -> None:
|
|
"""Test remove a device."""
|
|
payload = get_device_discovery_payload(
|
|
number_of_shutters=0,
|
|
number_of_boards=2,
|
|
)
|
|
|
|
await send_discovery_message(hass, payload)
|
|
|
|
# Verify device is created
|
|
device_entry = device_reg.async_get_device(
|
|
connections={(dr.CONNECTION_NETWORK_MAC, payload["mac"])}
|
|
)
|
|
assert device_entry is not None
|
|
|
|
await send_discovery_message(hass, None)
|
|
|
|
# Verify device entry is removed
|
|
device_entry = device_reg.async_get_device(
|
|
connections={(dr.CONNECTION_NETWORK_MAC, payload["mac"])}
|
|
)
|
|
assert device_entry is None
|