diff --git a/homeassistant/helpers/device_registry.py b/homeassistant/helpers/device_registry.py index 6bec4e592e63a3..96425b2ea93bc7 100644 --- a/homeassistant/helpers/device_registry.py +++ b/homeassistant/helpers/device_registry.py @@ -553,7 +553,9 @@ async def async_load(self) -> None: configuration_url=device["configuration_url"], # type ignores (if tuple arg was cast): likely https://github.com/python/mypy/issues/8625 connections={tuple(conn) for conn in device["connections"]}, # type: ignore[misc] - disabled_by=device["disabled_by"], + disabled_by=DeviceEntryDisabler(device["disabled_by"]) + if device["disabled_by"] + else None, entry_type=DeviceEntryType(device["entry_type"]) if device["entry_type"] else None, diff --git a/tests/helpers/test_device_registry.py b/tests/helpers/test_device_registry.py index e9a1506e71d855..a0949bad03ce01 100644 --- a/tests/helpers/test_device_registry.py +++ b/tests/helpers/test_device_registry.py @@ -782,6 +782,7 @@ async def test_loading_saving_data(hass, registry, area_registry): identifiers={("hue", "abc")}, manufacturer="manufacturer", model="light", + entry_type=device_registry.DeviceEntryType.SERVICE, ) assert orig_light4.id == orig_light3.id @@ -821,6 +822,15 @@ async def test_loading_saving_data(hass, registry, area_registry): assert orig_light == new_light assert orig_light4 == new_light4 + # Ensure enums converted + for (old, new) in ( + (orig_via, new_via), + (orig_light, new_light), + (orig_light4, new_light4), + ): + assert old.disabled_by is new.disabled_by + assert old.entry_type is new.entry_type + # Ensure a save/load cycle does not keep suggested area new_kitchen_light = registry2.async_get_device({("hue", "999")}) assert orig_kitchen_light.suggested_area == "Kitchen"