From f29daccb1939a2c8081873a737f955e18d48c67a Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Sat, 31 Jan 2026 15:14:42 +0100 Subject: [PATCH] Remove outdated device registry cleanup in history_stats (#161862) --- .../components/history_stats/__init__.py | 12 +-- tests/components/history_stats/test_init.py | 88 ------------------- 2 files changed, 1 insertion(+), 99 deletions(-) diff --git a/homeassistant/components/history_stats/__init__.py b/homeassistant/components/history_stats/__init__.py index 87efcf274bd..ab416a5a50c 100644 --- a/homeassistant/components/history_stats/__init__.py +++ b/homeassistant/components/history_stats/__init__.py @@ -8,10 +8,7 @@ import logging from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_ENTITY_ID, CONF_STATE from homeassistant.core import HomeAssistant -from homeassistant.helpers.device import ( - async_entity_id_to_device_id, - async_remove_stale_devices_links_keep_entity_device, -) +from homeassistant.helpers.device import async_entity_id_to_device_id from homeassistant.helpers.helper_integration import ( async_handle_source_entity_changes, async_remove_helper_config_entry_from_source_device, @@ -53,13 +50,6 @@ async def async_setup_entry( await coordinator.async_config_entry_first_refresh() entry.runtime_data = coordinator - # This can be removed in HA Core 2026.2 - async_remove_stale_devices_links_keep_entity_device( - hass, - entry.entry_id, - entry.options[CONF_ENTITY_ID], - ) - def set_source_entity_id_or_uuid(source_entity_id: str) -> None: hass.config_entries.async_update_entry( entry, diff --git a/tests/components/history_stats/test_init.py b/tests/components/history_stats/test_init.py index 7f81fe6625f..fa003119f32 100644 --- a/tests/components/history_stats/test_init.py +++ b/tests/components/history_stats/test_init.py @@ -112,94 +112,6 @@ async def test_unload_entry(hass: HomeAssistant, loaded_entry: MockConfigEntry) assert loaded_entry.state is ConfigEntryState.NOT_LOADED -@pytest.mark.usefixtures("recorder_mock") -async def test_device_cleaning( - hass: HomeAssistant, - device_registry: dr.DeviceRegistry, - entity_registry: er.EntityRegistry, -) -> None: - """Test the cleaning of devices linked to the helper History stats.""" - - # Source entity device config entry - source_config_entry = MockConfigEntry() - source_config_entry.add_to_hass(hass) - - # Device entry of the source entity - source_device1_entry = device_registry.async_get_or_create( - config_entry_id=source_config_entry.entry_id, - identifiers={("binary_sensor", "identifier_test1")}, - connections={("mac", "30:31:32:33:34:01")}, - ) - - # Source entity registry - source_entity = entity_registry.async_get_or_create( - "binary_sensor", - "test", - "source", - config_entry=source_config_entry, - device_id=source_device1_entry.id, - ) - await hass.async_block_till_done() - assert entity_registry.async_get("binary_sensor.test_source") is not None - - # Configure the configuration entry for History stats - history_stats_config_entry = MockConfigEntry( - data={}, - domain=DOMAIN, - options={ - CONF_NAME: DEFAULT_NAME, - CONF_ENTITY_ID: "binary_sensor.test_source", - CONF_STATE: ["on"], - CONF_TYPE: "count", - CONF_START: "{{ as_timestamp(utcnow()) - 3600 }}", - CONF_END: "{{ utcnow() }}", - }, - title="History stats", - ) - history_stats_config_entry.add_to_hass(hass) - assert await hass.config_entries.async_setup(history_stats_config_entry.entry_id) - await hass.async_block_till_done() - - # Confirm the link between the source entity device and the History stats sensor - history_stats_entity = entity_registry.async_get("sensor.history_stats") - assert history_stats_entity is not None - assert history_stats_entity.device_id == source_entity.device_id - - # Device entry incorrectly linked to History stats config entry - device_registry.async_get_or_create( - config_entry_id=history_stats_config_entry.entry_id, - identifiers={("sensor", "identifier_test2")}, - connections={("mac", "30:31:32:33:34:02")}, - ) - device_registry.async_get_or_create( - config_entry_id=history_stats_config_entry.entry_id, - identifiers={("sensor", "identifier_test3")}, - connections={("mac", "30:31:32:33:34:03")}, - ) - await hass.async_block_till_done() - - # Before reloading the config entry, two devices are expected to be linked - devices_before_reload = device_registry.devices.get_devices_for_config_entry_id( - history_stats_config_entry.entry_id - ) - assert len(devices_before_reload) == 2 - - # Config entry reload - await hass.config_entries.async_reload(history_stats_config_entry.entry_id) - await hass.async_block_till_done() - - # Confirm the link between the source entity device and the History stats sensor - history_stats_entity = entity_registry.async_get("sensor.history_stats") - assert history_stats_entity is not None - assert history_stats_entity.device_id == source_entity.device_id - - # After reloading the config entry, only one linked device is expected - devices_after_reload = device_registry.devices.get_devices_for_config_entry_id( - history_stats_config_entry.entry_id - ) - assert len(devices_after_reload) == 0 - - @pytest.mark.usefixtures("recorder_mock") async def test_async_handle_source_entity_changes_source_entity_removed( hass: HomeAssistant,