mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 05:37:44 +00:00
Fix removing of smarthome templates on startup of AVM Fritz!SmartHome integration (#144506)
This commit is contained in:
parent
5df09c4f13
commit
374b3ac6c6
@ -92,7 +92,7 @@ class FritzboxDataUpdateCoordinator(DataUpdateCoordinator[FritzboxCoordinatorDat
|
||||
|
||||
available_main_ains = [
|
||||
ain
|
||||
for ain, dev in data.devices.items()
|
||||
for ain, dev in data.devices.items() | data.templates.items()
|
||||
if dev.device_and_unit_id[1] is None
|
||||
]
|
||||
device_reg = dr.async_get(self.hass)
|
||||
|
@ -15,7 +15,7 @@ from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||
from homeassistant.util.dt import utcnow
|
||||
|
||||
from . import FritzDeviceCoverMock, FritzDeviceSwitchMock
|
||||
from . import FritzDeviceCoverMock, FritzDeviceSwitchMock, FritzEntityBaseMock
|
||||
from .const import MOCK_CONFIG
|
||||
|
||||
from tests.common import MockConfigEntry, async_fire_time_changed
|
||||
@ -84,6 +84,8 @@ async def test_coordinator_automatic_registry_cleanup(
|
||||
entity_registry: er.EntityRegistry,
|
||||
) -> None:
|
||||
"""Test automatic registry cleanup."""
|
||||
|
||||
# init with 2 devices and 1 template
|
||||
fritz().get_devices.return_value = [
|
||||
FritzDeviceSwitchMock(
|
||||
ain="fake ain switch",
|
||||
@ -96,6 +98,13 @@ async def test_coordinator_automatic_registry_cleanup(
|
||||
name="fake_cover",
|
||||
),
|
||||
]
|
||||
fritz().get_templates.return_value = [
|
||||
FritzEntityBaseMock(
|
||||
ain="fake ain template",
|
||||
device_and_unit_id=("fake ain template", None),
|
||||
name="fake_template",
|
||||
)
|
||||
]
|
||||
entry = MockConfigEntry(
|
||||
domain=FB_DOMAIN,
|
||||
data=MOCK_CONFIG[FB_DOMAIN][CONF_DEVICES][0],
|
||||
@ -105,9 +114,10 @@ async def test_coordinator_automatic_registry_cleanup(
|
||||
await hass.config_entries.async_setup(entry.entry_id)
|
||||
await hass.async_block_till_done(wait_background_tasks=True)
|
||||
|
||||
assert len(er.async_entries_for_config_entry(entity_registry, entry.entry_id)) == 19
|
||||
assert len(dr.async_entries_for_config_entry(device_registry, entry.entry_id)) == 2
|
||||
assert len(er.async_entries_for_config_entry(entity_registry, entry.entry_id)) == 20
|
||||
assert len(dr.async_entries_for_config_entry(device_registry, entry.entry_id)) == 3
|
||||
|
||||
# remove one device, keep the template
|
||||
fritz().get_devices.return_value = [
|
||||
FritzDeviceSwitchMock(
|
||||
ain="fake ain switch",
|
||||
@ -119,5 +129,14 @@ async def test_coordinator_automatic_registry_cleanup(
|
||||
async_fire_time_changed(hass, utcnow() + timedelta(seconds=35))
|
||||
await hass.async_block_till_done(wait_background_tasks=True)
|
||||
|
||||
assert len(er.async_entries_for_config_entry(entity_registry, entry.entry_id)) == 13
|
||||
assert len(dr.async_entries_for_config_entry(device_registry, entry.entry_id)) == 2
|
||||
|
||||
# remove the template, keep the device
|
||||
fritz().get_templates.return_value = []
|
||||
|
||||
async_fire_time_changed(hass, utcnow() + timedelta(seconds=35))
|
||||
await hass.async_block_till_done(wait_background_tasks=True)
|
||||
|
||||
assert len(er.async_entries_for_config_entry(entity_registry, entry.entry_id)) == 12
|
||||
assert len(dr.async_entries_for_config_entry(device_registry, entry.entry_id)) == 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user