1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 21:06:19 +00:00

Improve some device registry tests (#77659)

This commit is contained in:
Erik Montnemery
2022-09-02 08:54:02 +02:00
committed by GitHub
parent 8bab2a9bea
commit 8924725d69
4 changed files with 94 additions and 109 deletions

View File

@@ -178,10 +178,11 @@ async def test_loading_from_storage(hass, hass_storage):
{
"area_id": "12345A",
"config_entries": ["1234"],
"configuration_url": None,
"configuration_url": "configuration_url",
"connections": [["Zigbee", "01.23.45.67.89"]],
"disabled_by": device_registry.DeviceEntryDisabler.USER,
"entry_type": device_registry.DeviceEntryType.SERVICE,
"hw_version": "hw_version",
"id": "abcdefghijklm",
"identifiers": [["serial", "12:34:56:AB:CD:EF"]],
"manufacturer": "manufacturer",
@@ -189,7 +190,6 @@ async def test_loading_from_storage(hass, hass_storage):
"name_by_user": "Test Friendly Name",
"name": "name",
"sw_version": "version",
"hw_version": "hw_version",
"via_device_id": None,
}
],
@@ -217,16 +217,28 @@ async def test_loading_from_storage(hass, hass_storage):
manufacturer="manufacturer",
model="model",
)
assert entry.id == "abcdefghijklm"
assert entry.area_id == "12345A"
assert entry.name_by_user == "Test Friendly Name"
assert entry.hw_version == "hw_version"
assert entry.entry_type is device_registry.DeviceEntryType.SERVICE
assert entry.disabled_by is device_registry.DeviceEntryDisabler.USER
assert entry == device_registry.DeviceEntry(
area_id="12345A",
config_entries={"1234"},
configuration_url="configuration_url",
connections={("Zigbee", "01.23.45.67.89")},
disabled_by=device_registry.DeviceEntryDisabler.USER,
entry_type=device_registry.DeviceEntryType.SERVICE,
hw_version="hw_version",
id="abcdefghijklm",
identifiers={("serial", "12:34:56:AB:CD:EF")},
manufacturer="manufacturer",
model="model",
name_by_user="Test Friendly Name",
name="name",
suggested_area=None, # Not stored
sw_version="version",
)
assert isinstance(entry.config_entries, set)
assert isinstance(entry.connections, set)
assert isinstance(entry.identifiers, set)
# Restore a device, id should be reused from the deleted device entry
entry = registry.async_get_or_create(
config_entry_id="1234",
connections={("Zigbee", "23.45.67.89.01")},
@@ -234,6 +246,14 @@ async def test_loading_from_storage(hass, hass_storage):
manufacturer="manufacturer",
model="model",
)
assert entry == device_registry.DeviceEntry(
config_entries={"1234"},
connections={("Zigbee", "23.45.67.89.01")},
id="bcdefghijklmn",
identifiers={("serial", "34:56:AB:CD:EF:12")},
manufacturer="manufacturer",
model="model",
)
assert entry.id == "bcdefghijklmn"
assert isinstance(entry.config_entries, set)
assert isinstance(entry.connections, set)
@@ -323,6 +343,7 @@ async def test_migration_1_1_to_1_3(hass, hass_storage):
"connections": [["Zigbee", "01.23.45.67.89"]],
"disabled_by": None,
"entry_type": "service",
"hw_version": None,
"id": "abcdefghijklm",
"identifiers": [["serial", "12:34:56:AB:CD:EF"]],
"manufacturer": "manufacturer",
@@ -330,7 +351,6 @@ async def test_migration_1_1_to_1_3(hass, hass_storage):
"name": "name",
"name_by_user": None,
"sw_version": "new_version",
"hw_version": None,
"via_device_id": None,
},
{
@@ -340,6 +360,7 @@ async def test_migration_1_1_to_1_3(hass, hass_storage):
"connections": [],
"disabled_by": None,
"entry_type": None,
"hw_version": None,
"id": "invalid-entry-type",
"identifiers": [["serial", "mock-id-invalid-entry"]],
"manufacturer": None,
@@ -347,7 +368,6 @@ async def test_migration_1_1_to_1_3(hass, hass_storage):
"name_by_user": None,
"name": None,
"sw_version": None,
"hw_version": None,
"via_device_id": None,
},
],
@@ -386,8 +406,7 @@ async def test_migration_1_2_to_1_3(hass, hass_storage):
"model": "model",
"name": "name",
"name_by_user": None,
"sw_version": "new_version",
"hw_version": None,
"sw_version": "version",
"via_device_id": None,
},
{
@@ -404,7 +423,6 @@ async def test_migration_1_2_to_1_3(hass, hass_storage):
"name_by_user": None,
"name": None,
"sw_version": None,
"hw_version": None,
"via_device_id": None,
},
],
@@ -428,7 +446,7 @@ async def test_migration_1_2_to_1_3(hass, hass_storage):
config_entry_id="1234",
connections={("Zigbee", "01.23.45.67.89")},
identifiers={("serial", "12:34:56:AB:CD:EF")},
hw_version="new_version",
sw_version="new_version",
)
assert entry.id == "abcdefghijklm"
@@ -448,6 +466,7 @@ async def test_migration_1_2_to_1_3(hass, hass_storage):
"connections": [["Zigbee", "01.23.45.67.89"]],
"disabled_by": None,
"entry_type": "service",
"hw_version": None,
"id": "abcdefghijklm",
"identifiers": [["serial", "12:34:56:AB:CD:EF"]],
"manufacturer": "manufacturer",
@@ -455,7 +474,6 @@ async def test_migration_1_2_to_1_3(hass, hass_storage):
"name": "name",
"name_by_user": None,
"sw_version": "new_version",
"hw_version": "new_version",
"via_device_id": None,
},
{
@@ -465,6 +483,7 @@ async def test_migration_1_2_to_1_3(hass, hass_storage):
"connections": [],
"disabled_by": None,
"entry_type": None,
"hw_version": None,
"id": "invalid-entry-type",
"identifiers": [["serial", "mock-id-invalid-entry"]],
"manufacturer": None,
@@ -472,7 +491,6 @@ async def test_migration_1_2_to_1_3(hass, hass_storage):
"name_by_user": None,
"name": None,
"sw_version": None,
"hw_version": None,
"via_device_id": None,
},
],
@@ -921,23 +939,40 @@ async def test_update(hass, registry, update_events):
updated_entry = registry.async_update_device(
entry.id,
area_id="12345A",
configuration_url="configuration_url",
disabled_by=device_registry.DeviceEntryDisabler.USER,
entry_type=device_registry.DeviceEntryType.SERVICE,
hw_version="hw_version",
manufacturer="Test Producer",
model="Test Model",
name_by_user="Test Friendly Name",
name="name",
new_identifiers=new_identifiers,
suggested_area="suggested_area",
sw_version="version",
via_device_id="98765B",
disabled_by=device_registry.DeviceEntryDisabler.USER,
)
assert mock_save.call_count == 1
assert updated_entry != entry
assert updated_entry.area_id == "12345A"
assert updated_entry.manufacturer == "Test Producer"
assert updated_entry.model == "Test Model"
assert updated_entry.name_by_user == "Test Friendly Name"
assert updated_entry.identifiers == new_identifiers
assert updated_entry.via_device_id == "98765B"
assert updated_entry.disabled_by is device_registry.DeviceEntryDisabler.USER
assert updated_entry == device_registry.DeviceEntry(
area_id="12345A",
config_entries={"1234"},
configuration_url="configuration_url",
connections={("mac", "12:34:56:ab:cd:ef")},
disabled_by=device_registry.DeviceEntryDisabler.USER,
entry_type=device_registry.DeviceEntryType.SERVICE,
hw_version="hw_version",
id=entry.id,
identifiers={("bla", "321"), ("hue", "654")},
manufacturer="Test Producer",
model="Test Model",
name_by_user="Test Friendly Name",
name="name",
suggested_area="suggested_area",
sw_version="version",
via_device_id="98765B",
)
assert registry.async_get_device({("hue", "456")}) is None
assert registry.async_get_device({("bla", "123")}) is None
@@ -964,11 +999,17 @@ async def test_update(hass, registry, update_events):
assert update_events[1]["device_id"] == entry.id
assert update_events[1]["changes"] == {
"area_id": None,
"configuration_url": None,
"disabled_by": None,
"entry_type": None,
"hw_version": None,
"identifiers": {("bla", "123"), ("hue", "456")},
"manufacturer": None,
"model": None,
"name": None,
"name_by_user": None,
"suggested_area": None,
"sw_version": None,
"via_device_id": None,
}
@@ -1036,62 +1077,6 @@ async def test_update_remove_config_entries(hass, registry, update_events):
assert "changes" not in update_events[4]
async def test_update_sw_version(hass, registry, update_events):
"""Verify that we can update software version of a device."""
entry = registry.async_get_or_create(
config_entry_id="1234",
connections={(device_registry.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
identifiers={("bla", "123")},
)
assert not entry.sw_version
sw_version = "0x20020263"
with patch.object(registry, "async_schedule_save") as mock_save:
updated_entry = registry.async_update_device(entry.id, sw_version=sw_version)
assert mock_save.call_count == 1
assert updated_entry != entry
assert updated_entry.sw_version == sw_version
await hass.async_block_till_done()
assert len(update_events) == 2
assert update_events[0]["action"] == "create"
assert update_events[0]["device_id"] == entry.id
assert "changes" not in update_events[0]
assert update_events[1]["action"] == "update"
assert update_events[1]["device_id"] == entry.id
assert update_events[1]["changes"] == {"sw_version": None}
async def test_update_hw_version(hass, registry, update_events):
"""Verify that we can update hardware version of a device."""
entry = registry.async_get_or_create(
config_entry_id="1234",
connections={(device_registry.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
identifiers={("bla", "123")},
)
assert not entry.hw_version
hw_version = "0x20020263"
with patch.object(registry, "async_schedule_save") as mock_save:
updated_entry = registry.async_update_device(entry.id, hw_version=hw_version)
assert mock_save.call_count == 1
assert updated_entry != entry
assert updated_entry.hw_version == hw_version
await hass.async_block_till_done()
assert len(update_events) == 2
assert update_events[0]["action"] == "create"
assert update_events[0]["device_id"] == entry.id
assert "changes" not in update_events[0]
assert update_events[1]["action"] == "update"
assert update_events[1]["device_id"] == entry.id
assert update_events[1]["changes"] == {"hw_version": None}
async def test_update_suggested_area(hass, registry, area_registry, update_events):
"""Verify that we can update the suggested area version of a device."""
entry = registry.async_get_or_create(