Add test for myuplink DeviceInfo (#136360)

This commit is contained in:
Åke Strandberg 2025-01-28 13:48:58 +01:00 committed by GitHub
parent e120a7b59c
commit 5a52c77523
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 323 additions and 0 deletions

View File

@ -0,0 +1,40 @@
{
"id": "alfred-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff",
"connectionState": "Connected",
"firmware": {
"currentFwVersion": "9682R7A",
"desiredFwVersion": "9682R7A"
},
"product": {
"serialNumber": "10001",
"name": "Tehowatti Air"
},
"availableFeatures": {
"settings": true,
"reboot": true,
"forcesync": true,
"forceUpdate": false,
"requestUpdate": false,
"resetAlarm": true,
"triggerEvent": true,
"getMenu": false,
"getMenuChain": false,
"getGuideQuestion": false,
"sendHaystack": true,
"setSmartMode": false,
"setAidMode": true,
"getZones": false,
"processIntent": false,
"boostHotWater": true,
"boostVentilation": true,
"getScheduleConfig": false,
"getScheduleModes": false,
"getScheduleWeekly": false,
"getScheduleVacation": false,
"setScheduleModes": false,
"setScheduleWeekly": false,
"setScheduleOverride": false,
"setScheduleVacation": false,
"setVentilationMode": false
}
}

View File

@ -0,0 +1,40 @@
{
"id": "batman-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff",
"connectionState": "Connected",
"firmware": {
"currentFwVersion": "9682R7B",
"desiredFwVersion": "9682R7B"
},
"product": {
"serialNumber": "10002",
"name": "F730 CU 3x400V"
},
"availableFeatures": {
"settings": true,
"reboot": true,
"forcesync": true,
"forceUpdate": false,
"requestUpdate": false,
"resetAlarm": true,
"triggerEvent": true,
"getMenu": false,
"getMenuChain": false,
"getGuideQuestion": false,
"sendHaystack": true,
"setSmartMode": false,
"setAidMode": true,
"getZones": false,
"processIntent": false,
"boostHotWater": true,
"boostVentilation": true,
"getScheduleConfig": false,
"getScheduleModes": false,
"getScheduleWeekly": false,
"getScheduleVacation": false,
"setScheduleModes": false,
"setScheduleWeekly": false,
"setScheduleOverride": false,
"setScheduleVacation": false,
"setVentilationMode": false
}
}

View File

@ -0,0 +1,40 @@
{
"id": "robin-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff",
"connectionState": "Connected",
"firmware": {
"currentFwVersion": "9682R7C",
"desiredFwVersion": "9682R7C"
},
"product": {
"serialNumber": "10003",
"name": "SMO 20"
},
"availableFeatures": {
"settings": true,
"reboot": true,
"forcesync": true,
"forceUpdate": false,
"requestUpdate": false,
"resetAlarm": true,
"triggerEvent": true,
"getMenu": false,
"getMenuChain": false,
"getGuideQuestion": false,
"sendHaystack": true,
"setSmartMode": false,
"setAidMode": true,
"getZones": false,
"processIntent": false,
"boostHotWater": true,
"boostVentilation": true,
"getScheduleConfig": false,
"getScheduleModes": false,
"getScheduleWeekly": false,
"getScheduleVacation": false,
"setScheduleModes": false,
"setScheduleWeekly": false,
"setScheduleOverride": false,
"setScheduleVacation": false,
"setVentilationMode": false
}
}

View File

@ -0,0 +1,61 @@
{
"page": 1,
"itemsPerPage": 10,
"numItems": 3,
"systems": [
{
"systemId": "123456-7890-1234",
"name": "Gotham City",
"securityLevel": "admin",
"hasAlarm": false,
"country": "Sweden",
"devices": [
{
"id": "alfred-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff",
"connectionState": "Connected",
"currentFwVersion": "9682R7A",
"product": {
"serialNumber": "10001",
"name": "Tehowatti Air"
}
}
]
},
{
"systemId": "123456-7890-1234",
"name": "Batcave",
"securityLevel": "admin",
"hasAlarm": false,
"country": "Sweden",
"devices": [
{
"id": "batman-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff",
"connectionState": "Connected",
"currentFwVersion": "9682R7B",
"product": {
"serialNumber": "10002",
"name": "F730 CU 3x400V"
}
}
]
},
{
"systemId": "123456-7890-1234",
"name": "Duckburg",
"securityLevel": "admin",
"hasAlarm": false,
"country": "Sweden",
"devices": [
{
"id": "robin-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff",
"connectionState": "Connected",
"currentFwVersion": "9682R7C",
"product": {
"serialNumber": "10003",
"name": "SM0 20"
}
}
]
}
]
}

View File

@ -0,0 +1,97 @@
# serializer version: 1
# name: test_device_info[alfred-multi]
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'myuplink',
'alfred-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff',
),
}),
'is_new': False,
'labels': set({
}),
'manufacturer': 'Jäspi',
'model': 'Tehowatti Air',
'model_id': None,
'name': 'Gotham City',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': '10001',
'suggested_area': None,
'sw_version': '9682R7A',
'via_device_id': None,
})
# ---
# name: test_device_info[batman-multi]
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'myuplink',
'batman-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff',
),
}),
'is_new': False,
'labels': set({
}),
'manufacturer': 'Nibe',
'model': 'F730',
'model_id': None,
'name': 'Batcave',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': '10002',
'suggested_area': None,
'sw_version': '9682R7B',
'via_device_id': None,
})
# ---
# name: test_device_info[robin-multi]
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'myuplink',
'robin-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff',
),
}),
'is_new': False,
'labels': set({
}),
'manufacturer': 'Nibe',
'model': 'SMO 20',
'model_id': None,
'name': 'Duckburg',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': '10003',
'suggested_area': None,
'sw_version': '9682R7C',
'via_device_id': None,
})
# ---

View File

@ -6,6 +6,7 @@ from unittest.mock import MagicMock
from aiohttp import ClientConnectionError
import pytest
from syrupy import SnapshotAssertion
from homeassistant.components.myuplink.const import DOMAIN, OAUTH2_TOKEN
from homeassistant.config_entries import ConfigEntryState
@ -214,3 +215,47 @@ async def test_device_remove_devices(
old_device_entry.id, mock_config_entry.entry_id
)
assert response["success"]
@pytest.mark.parametrize(
"load_systems_file",
[load_fixture("systems-multi.json", DOMAIN)],
ids=[
"multi",
],
)
@pytest.mark.parametrize(
("load_device_file", "device_id"),
[
(
load_fixture("device-alfred.json", DOMAIN),
"alfred-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff",
),
(
load_fixture("device-batman.json", DOMAIN),
"batman-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff",
),
(
load_fixture("device-robin.json", DOMAIN),
"robin-r-1234-20240201-123456-aa-bb-cc-dd-ee-ff",
),
],
ids=[
"alfred",
"batman",
"robin",
],
)
async def test_device_info(
hass: HomeAssistant,
snapshot: SnapshotAssertion,
mock_myuplink_client: MagicMock,
mock_config_entry: MockConfigEntry,
device_registry: dr.DeviceRegistry,
device_id: str,
) -> None:
"""Test device registry integration."""
await setup_integration(hass, mock_config_entry)
device_entry = device_registry.async_get_device(identifiers={(DOMAIN, device_id)})
assert device_entry is not None
assert device_entry == snapshot