1
0
mirror of https://github.com/home-assistant/core.git synced 2026-02-14 23:28:42 +00:00

Add parent device for Satel Integra (#160933)

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
This commit is contained in:
Tom Matheussen
2026-02-12 22:29:59 +01:00
committed by GitHub
parent 11af0a2d04
commit 4801dcaded
7 changed files with 68 additions and 6 deletions

View File

@@ -17,7 +17,11 @@ from homeassistant.const import (
from homeassistant.core import DOMAIN as HOMEASSISTANT_DOMAIN, HomeAssistant, callback
from homeassistant.data_entry_flow import FlowResultType
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import config_validation as cv, issue_registry as ir
from homeassistant.helpers import (
config_validation as cv,
device_registry as dr,
issue_registry as ir,
)
from homeassistant.helpers.dispatcher import async_dispatcher_send
from homeassistant.helpers.entity_registry import RegistryEntry, async_migrate_entries
from homeassistant.helpers.typing import ConfigType
@@ -201,6 +205,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: SatelConfigEntry) -> boo
entry.async_on_unload(entry.add_update_listener(update_listener))
entry.async_on_unload(hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, _close))
device_registry = dr.async_get(hass)
device_registry.async_get_or_create(
config_entry_id=entry.entry_id,
identifiers={(DOMAIN, entry.entry_id)},
manufacturer="Satel",
)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
@callback

View File

@@ -54,5 +54,7 @@ class SatelIntegraEntity(Entity):
self._attr_unique_id = f"{config_entry_id}_{entity_type}_{device_number}"
self._attr_device_info = DeviceInfo(
name=subentry.data[CONF_NAME], identifiers={(DOMAIN, self._attr_unique_id)}
name=subentry.data[CONF_NAME],
identifiers={(DOMAIN, self._attr_unique_id)},
via_device=(DOMAIN, config_entry_id),
)

View File

@@ -80,6 +80,6 @@
'primary_config_entry': <ANY>,
'serial_number': None,
'sw_version': None,
'via_device_id': None,
'via_device_id': <ANY>,
})
# ---

View File

@@ -127,7 +127,7 @@
'primary_config_entry': <ANY>,
'serial_number': None,
'sw_version': None,
'via_device_id': None,
'via_device_id': <ANY>,
})
# ---
# name: test_binary_sensors[device-zone]
@@ -158,6 +158,6 @@
'primary_config_entry': <ANY>,
'serial_number': None,
'sw_version': None,
'via_device_id': None,
'via_device_id': <ANY>,
})
# ---

View File

@@ -50,6 +50,37 @@
'unique_id': 'switchable_output_1',
})
# ---
# name: test_parent_device_exists[parent-device]
DeviceRegistryEntrySnapshot({
'area_id': None,
'config_entries': <ANY>,
'config_entries_subentries': <ANY>,
'configuration_url': None,
'connections': set({
}),
'disabled_by': None,
'entry_type': None,
'hw_version': None,
'id': <ANY>,
'identifiers': set({
tuple(
'satel_integra',
'1234567890',
),
}),
'labels': set({
}),
'manufacturer': 'Satel',
'model': None,
'model_id': None,
'name': '192.168.0.2',
'name_by_user': None,
'primary_config_entry': <ANY>,
'serial_number': None,
'sw_version': None,
'via_device_id': None,
})
# ---
# name: test_unique_id_migration_from_single_config[alarm_control_panel-satel_alarm_panel_1-1234567890_alarm_panel_1]
EntityRegistryEntrySnapshot({
'aliases': set({

View File

@@ -27,7 +27,7 @@
'primary_config_entry': <ANY>,
'serial_number': None,
'sw_version': None,
'via_device_id': None,
'via_device_id': <ANY>,
})
# ---
# name: test_switches[switch.switchable_output-entry]

View File

@@ -12,6 +12,7 @@ from homeassistant.components.satel_integra.const import DOMAIN
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN
from homeassistant.config_entries import ConfigSubentry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceRegistry
from homeassistant.helpers.entity_registry import EntityRegistry
from . import (
@@ -120,3 +121,20 @@ async def test_unique_id_migration_from_single_config(
assert entity.unique_id == new_id
assert entity == snapshot
async def test_parent_device_exists(
hass: HomeAssistant,
snapshot: SnapshotAssertion,
mock_satel: AsyncMock,
device_registry: DeviceRegistry,
mock_config_entry: MockConfigEntry,
) -> None:
"""Test that a parent device is created for the alarm panel."""
await setup_integration(hass, mock_config_entry)
device_entry = device_registry.async_get_device(
identifiers={(DOMAIN, MOCK_ENTRY_ID)}
)
assert device_entry == snapshot(name="parent-device")