Remove unused defaults from entity_registry.RegistryEntry (#143655)

This commit is contained in:
Erik Montnemery 2025-04-25 12:41:58 +02:00 committed by GitHub
parent b0d9a2437d
commit dc8e1773f1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 166 additions and 118 deletions

View File

@ -164,7 +164,7 @@ def _protect_entity_options(
return ReadOnlyDict({key: ReadOnlyDict(val) for key, val in data.items()}) return ReadOnlyDict({key: ReadOnlyDict(val) for key, val in data.items()})
@attr.s(frozen=True, slots=True) @attr.s(frozen=True, kw_only=True, slots=True)
class RegistryEntry: class RegistryEntry:
"""Entity Registry Entry.""" """Entity Registry Entry."""
@ -175,35 +175,32 @@ class RegistryEntry:
aliases: set[str] = attr.ib(factory=set) aliases: set[str] = attr.ib(factory=set)
area_id: str | None = attr.ib(default=None) area_id: str | None = attr.ib(default=None)
categories: dict[str, str] = attr.ib(factory=dict) categories: dict[str, str] = attr.ib(factory=dict)
capabilities: Mapping[str, Any] | None = attr.ib(default=None) capabilities: Mapping[str, Any] | None = attr.ib()
config_entry_id: str | None = attr.ib(default=None) config_entry_id: str | None = attr.ib()
config_subentry_id: str | None = attr.ib(default=None) config_subentry_id: str | None = attr.ib()
created_at: datetime = attr.ib(factory=utcnow) created_at: datetime = attr.ib()
device_class: str | None = attr.ib(default=None) device_class: str | None = attr.ib(default=None)
device_id: str | None = attr.ib(default=None) device_id: str | None = attr.ib()
domain: str = attr.ib(init=False, repr=False) domain: str = attr.ib(init=False, repr=False)
disabled_by: RegistryEntryDisabler | None = attr.ib(default=None) disabled_by: RegistryEntryDisabler | None = attr.ib()
entity_category: EntityCategory | None = attr.ib(default=None) entity_category: EntityCategory | None = attr.ib()
hidden_by: RegistryEntryHider | None = attr.ib(default=None) has_entity_name: bool = attr.ib()
hidden_by: RegistryEntryHider | None = attr.ib()
icon: str | None = attr.ib(default=None) icon: str | None = attr.ib(default=None)
id: str = attr.ib( id: str = attr.ib(
default=None, converter=attr.converters.default_if_none(factory=uuid_util.random_uuid_hex) # type: ignore[misc]
converter=attr.converters.default_if_none(factory=uuid_util.random_uuid_hex), # type: ignore[misc]
) )
has_entity_name: bool = attr.ib(default=False)
labels: set[str] = attr.ib(factory=set) labels: set[str] = attr.ib(factory=set)
modified_at: datetime = attr.ib(factory=utcnow) modified_at: datetime = attr.ib(factory=utcnow)
name: str | None = attr.ib(default=None) name: str | None = attr.ib(default=None)
options: ReadOnlyEntityOptionsType = attr.ib( options: ReadOnlyEntityOptionsType = attr.ib(converter=_protect_entity_options)
default=None, converter=_protect_entity_options
)
# As set by integration # As set by integration
original_device_class: str | None = attr.ib(default=None) original_device_class: str | None = attr.ib()
original_icon: str | None = attr.ib(default=None) original_icon: str | None = attr.ib()
original_name: str | None = attr.ib(default=None) original_name: str | None = attr.ib()
supported_features: int = attr.ib(default=0) supported_features: int = attr.ib()
translation_key: str | None = attr.ib(default=None) translation_key: str | None = attr.ib()
unit_of_measurement: str | None = attr.ib(default=None) unit_of_measurement: str | None = attr.ib()
_cache: dict[str, Any] = attr.ib(factory=dict, eq=False, init=False) _cache: dict[str, Any] = attr.ib(factory=dict, eq=False, init=False)
@domain.default @domain.default

View File

@ -10,9 +10,8 @@ from homeassistant.auth.permissions.entities import (
from homeassistant.auth.permissions.models import PermissionLookup from homeassistant.auth.permissions.models import PermissionLookup
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceEntry from homeassistant.helpers.device_registry import DeviceEntry
from homeassistant.helpers.entity_registry import RegistryEntry
from tests.common import mock_device_registry, mock_registry from tests.common import RegistryEntryWithDefaults, mock_device_registry, mock_registry
def test_entities_none() -> None: def test_entities_none() -> None:
@ -156,13 +155,13 @@ def test_entities_device_id_boolean(hass: HomeAssistant) -> None:
entity_registry = mock_registry( entity_registry = mock_registry(
hass, hass,
{ {
"test_domain.allowed": RegistryEntry( "test_domain.allowed": RegistryEntryWithDefaults(
entity_id="test_domain.allowed", entity_id="test_domain.allowed",
unique_id="1234", unique_id="1234",
platform="test_platform", platform="test_platform",
device_id="mock-allowed-dev-id", device_id="mock-allowed-dev-id",
), ),
"test_domain.not_allowed": RegistryEntry( "test_domain.not_allowed": RegistryEntryWithDefaults(
entity_id="test_domain.not_allowed", entity_id="test_domain.not_allowed",
unique_id="5678", unique_id="5678",
platform="test_platform", platform="test_platform",
@ -196,7 +195,7 @@ def test_entities_areas_area_true(hass: HomeAssistant) -> None:
entity_registry = mock_registry( entity_registry = mock_registry(
hass, hass,
{ {
"light.kitchen": RegistryEntry( "light.kitchen": RegistryEntryWithDefaults(
entity_id="light.kitchen", entity_id="light.kitchen",
unique_id="1234", unique_id="1234",
platform="test_platform", platform="test_platform",

View File

@ -30,6 +30,7 @@ from unittest.mock import AsyncMock, Mock, patch
from aiohttp.test_utils import unused_port as get_test_instance_port # noqa: F401 from aiohttp.test_utils import unused_port as get_test_instance_port # noqa: F401
from annotatedyaml import load_yaml_dict, loader as yaml_loader from annotatedyaml import load_yaml_dict, loader as yaml_loader
import attr
import pytest import pytest
from syrupy import SnapshotAssertion from syrupy import SnapshotAssertion
import voluptuous as vol import voluptuous as vol
@ -98,7 +99,7 @@ from homeassistant.helpers.entity_platform import (
) )
from homeassistant.helpers.json import JSONEncoder, _orjson_default_encoder, json_dumps from homeassistant.helpers.json import JSONEncoder, _orjson_default_encoder, json_dumps
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from homeassistant.util import dt as dt_util, ulid as ulid_util from homeassistant.util import dt as dt_util, ulid as ulid_util, uuid as uuid_util
from homeassistant.util.async_ import ( from homeassistant.util.async_ import (
_SHUTDOWN_RUN_CALLBACK_THREADSAFE, _SHUTDOWN_RUN_CALLBACK_THREADSAFE,
get_scheduled_timer_handles, get_scheduled_timer_handles,
@ -645,6 +646,34 @@ def mock_registry(
return registry return registry
@attr.s(frozen=True, kw_only=True, slots=True)
class RegistryEntryWithDefaults(er.RegistryEntry):
"""Helper to create a registry entry with defaults."""
capabilities: Mapping[str, Any] | None = attr.ib(default=None)
config_entry_id: str | None = attr.ib(default=None)
config_subentry_id: str | None = attr.ib(default=None)
created_at: datetime = attr.ib(factory=dt_util.utcnow)
device_id: str | None = attr.ib(default=None)
disabled_by: er.RegistryEntryDisabler | None = attr.ib(default=None)
entity_category: er.EntityCategory | None = attr.ib(default=None)
hidden_by: er.RegistryEntryHider | None = attr.ib(default=None)
id: str = attr.ib(
default=None,
converter=attr.converters.default_if_none(factory=uuid_util.random_uuid_hex), # type: ignore[misc]
)
has_entity_name: bool = attr.ib(default=False)
options: er.ReadOnlyEntityOptionsType = attr.ib(
default=None, converter=er._protect_entity_options
)
original_device_class: str | None = attr.ib(default=None)
original_icon: str | None = attr.ib(default=None)
original_name: str | None = attr.ib(default=None)
supported_features: int = attr.ib(default=0)
translation_key: str | None = attr.ib(default=None)
unit_of_measurement: str | None = attr.ib(default=None)
def mock_area_registry( def mock_area_registry(
hass: HomeAssistant, mock_entries: dict[str, ar.AreaEntry] | None = None hass: HomeAssistant, mock_entries: dict[str, ar.AreaEntry] | None = None
) -> ar.AreaRegistry: ) -> ar.AreaRegistry:

View File

@ -12,7 +12,6 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.helpers.device_registry import DeviceEntryDisabler from homeassistant.helpers.device_registry import DeviceEntryDisabler
from homeassistant.helpers.entity_registry import ( from homeassistant.helpers.entity_registry import (
RegistryEntry,
RegistryEntryDisabler, RegistryEntryDisabler,
RegistryEntryHider, RegistryEntryHider,
) )
@ -23,6 +22,7 @@ from tests.common import (
MockConfigEntry, MockConfigEntry,
MockEntity, MockEntity,
MockEntityPlatform, MockEntityPlatform,
RegistryEntryWithDefaults,
mock_registry, mock_registry,
) )
from tests.typing import MockHAClientWebSocket, WebSocketGenerator from tests.typing import MockHAClientWebSocket, WebSocketGenerator
@ -45,13 +45,13 @@ async def test_list_entities(
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.name": RegistryEntry( "test_domain.name": RegistryEntryWithDefaults(
entity_id="test_domain.name", entity_id="test_domain.name",
unique_id="1234", unique_id="1234",
platform="test_platform", platform="test_platform",
name="Hello World", name="Hello World",
), ),
"test_domain.no_name": RegistryEntry( "test_domain.no_name": RegistryEntryWithDefaults(
entity_id="test_domain.no_name", entity_id="test_domain.no_name",
unique_id="6789", unique_id="6789",
platform="test_platform", platform="test_platform",
@ -117,13 +117,13 @@ async def test_list_entities(
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.name": RegistryEntry( "test_domain.name": RegistryEntryWithDefaults(
entity_id="test_domain.name", entity_id="test_domain.name",
unique_id="1234", unique_id="1234",
platform="test_platform", platform="test_platform",
name="Hello World", name="Hello World",
), ),
"test_domain.name_2": RegistryEntry( "test_domain.name_2": RegistryEntryWithDefaults(
entity_id="test_domain.name_2", entity_id="test_domain.name_2",
unique_id="6789", unique_id="6789",
platform="test_platform", platform="test_platform",
@ -169,7 +169,7 @@ async def test_list_entities_for_display(
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.test": RegistryEntry( "test_domain.test": RegistryEntryWithDefaults(
area_id="area52", area_id="area52",
device_id="device123", device_id="device123",
entity_category=EntityCategory.DIAGNOSTIC, entity_category=EntityCategory.DIAGNOSTIC,
@ -181,7 +181,7 @@ async def test_list_entities_for_display(
translation_key="translations_galore", translation_key="translations_galore",
unique_id="1234", unique_id="1234",
), ),
"test_domain.nameless": RegistryEntry( "test_domain.nameless": RegistryEntryWithDefaults(
area_id="area52", area_id="area52",
device_id="device123", device_id="device123",
entity_id="test_domain.nameless", entity_id="test_domain.nameless",
@ -191,7 +191,7 @@ async def test_list_entities_for_display(
platform="test_platform", platform="test_platform",
unique_id="2345", unique_id="2345",
), ),
"test_domain.renamed": RegistryEntry( "test_domain.renamed": RegistryEntryWithDefaults(
area_id="area52", area_id="area52",
device_id="device123", device_id="device123",
entity_id="test_domain.renamed", entity_id="test_domain.renamed",
@ -201,31 +201,31 @@ async def test_list_entities_for_display(
platform="test_platform", platform="test_platform",
unique_id="3456", unique_id="3456",
), ),
"test_domain.boring": RegistryEntry( "test_domain.boring": RegistryEntryWithDefaults(
entity_id="test_domain.boring", entity_id="test_domain.boring",
platform="test_platform", platform="test_platform",
unique_id="4567", unique_id="4567",
), ),
"test_domain.disabled": RegistryEntry( "test_domain.disabled": RegistryEntryWithDefaults(
disabled_by=RegistryEntryDisabler.USER, disabled_by=RegistryEntryDisabler.USER,
entity_id="test_domain.disabled", entity_id="test_domain.disabled",
hidden_by=RegistryEntryHider.USER, hidden_by=RegistryEntryHider.USER,
platform="test_platform", platform="test_platform",
unique_id="789A", unique_id="789A",
), ),
"test_domain.hidden": RegistryEntry( "test_domain.hidden": RegistryEntryWithDefaults(
entity_id="test_domain.hidden", entity_id="test_domain.hidden",
hidden_by=RegistryEntryHider.USER, hidden_by=RegistryEntryHider.USER,
platform="test_platform", platform="test_platform",
unique_id="89AB", unique_id="89AB",
), ),
"sensor.default_precision": RegistryEntry( "sensor.default_precision": RegistryEntryWithDefaults(
entity_id="sensor.default_precision", entity_id="sensor.default_precision",
options={"sensor": {"suggested_display_precision": 0}}, options={"sensor": {"suggested_display_precision": 0}},
platform="test_platform", platform="test_platform",
unique_id="9ABC", unique_id="9ABC",
), ),
"sensor.user_precision": RegistryEntry( "sensor.user_precision": RegistryEntryWithDefaults(
entity_id="sensor.user_precision", entity_id="sensor.user_precision",
options={ options={
"sensor": {"display_precision": 0, "suggested_display_precision": 1} "sensor": {"display_precision": 0, "suggested_display_precision": 1}
@ -303,7 +303,7 @@ async def test_list_entities_for_display(
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.test": RegistryEntry( "test_domain.test": RegistryEntryWithDefaults(
area_id="area52", area_id="area52",
device_id="device123", device_id="device123",
entity_id="test_domain.test", entity_id="test_domain.test",
@ -312,7 +312,7 @@ async def test_list_entities_for_display(
platform="test_platform", platform="test_platform",
unique_id="1234", unique_id="1234",
), ),
"test_domain.name_2": RegistryEntry( "test_domain.name_2": RegistryEntryWithDefaults(
entity_id="test_domain.name_2", entity_id="test_domain.name_2",
has_entity_name=True, has_entity_name=True,
original_name=Unserializable(), original_name=Unserializable(),
@ -348,7 +348,7 @@ async def test_get_entity(hass: HomeAssistant, client: MockHAClientWebSocket) ->
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.name": RegistryEntry( "test_domain.name": RegistryEntryWithDefaults(
entity_id="test_domain.name", entity_id="test_domain.name",
unique_id="1234", unique_id="1234",
platform="test_platform", platform="test_platform",
@ -356,7 +356,7 @@ async def test_get_entity(hass: HomeAssistant, client: MockHAClientWebSocket) ->
created_at=name_created_at, created_at=name_created_at,
modified_at=name_created_at, modified_at=name_created_at,
), ),
"test_domain.no_name": RegistryEntry( "test_domain.no_name": RegistryEntryWithDefaults(
entity_id="test_domain.no_name", entity_id="test_domain.no_name",
unique_id="6789", unique_id="6789",
platform="test_platform", platform="test_platform",
@ -445,7 +445,7 @@ async def test_get_entities(hass: HomeAssistant, client: MockHAClientWebSocket)
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.name": RegistryEntry( "test_domain.name": RegistryEntryWithDefaults(
entity_id="test_domain.name", entity_id="test_domain.name",
unique_id="1234", unique_id="1234",
platform="test_platform", platform="test_platform",
@ -453,7 +453,7 @@ async def test_get_entities(hass: HomeAssistant, client: MockHAClientWebSocket)
created_at=name_created_at, created_at=name_created_at,
modified_at=name_created_at, modified_at=name_created_at,
), ),
"test_domain.no_name": RegistryEntry( "test_domain.no_name": RegistryEntryWithDefaults(
entity_id="test_domain.no_name", entity_id="test_domain.no_name",
unique_id="6789", unique_id="6789",
platform="test_platform", platform="test_platform",
@ -545,7 +545,7 @@ async def test_update_entity(
registry = mock_registry( registry = mock_registry(
hass, hass,
{ {
"test_domain.world": RegistryEntry( "test_domain.world": RegistryEntryWithDefaults(
entity_id="test_domain.world", entity_id="test_domain.world",
unique_id="1234", unique_id="1234",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"
@ -1009,7 +1009,7 @@ async def test_update_entity_no_changes(
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.world": RegistryEntry( "test_domain.world": RegistryEntryWithDefaults(
entity_id="test_domain.world", entity_id="test_domain.world",
unique_id="1234", unique_id="1234",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"
@ -1110,7 +1110,7 @@ async def test_update_entity_id(
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.world": RegistryEntry( "test_domain.world": RegistryEntryWithDefaults(
entity_id="test_domain.world", entity_id="test_domain.world",
unique_id="1234", unique_id="1234",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"
@ -1179,13 +1179,13 @@ async def test_update_existing_entity_id(
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.world": RegistryEntry( "test_domain.world": RegistryEntryWithDefaults(
entity_id="test_domain.world", entity_id="test_domain.world",
unique_id="1234", unique_id="1234",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"
platform="test_platform", platform="test_platform",
), ),
"test_domain.planet": RegistryEntry( "test_domain.planet": RegistryEntryWithDefaults(
entity_id="test_domain.planet", entity_id="test_domain.planet",
unique_id="2345", unique_id="2345",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"
@ -1217,7 +1217,7 @@ async def test_update_invalid_entity_id(
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.world": RegistryEntry( "test_domain.world": RegistryEntryWithDefaults(
entity_id="test_domain.world", entity_id="test_domain.world",
unique_id="1234", unique_id="1234",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"
@ -1249,7 +1249,7 @@ async def test_remove_entity(
registry = mock_registry( registry = mock_registry(
hass, hass,
{ {
"test_domain.world": RegistryEntry( "test_domain.world": RegistryEntryWithDefaults(
entity_id="test_domain.world", entity_id="test_domain.world",
unique_id="1234", unique_id="1234",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"

View File

@ -25,7 +25,6 @@ from homeassistant.const import (
from homeassistant.core import HomeAssistant, State, callback from homeassistant.core import HomeAssistant, State, callback
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import discovery from homeassistant.helpers import discovery
from homeassistant.helpers.entity_registry import RegistryEntry
from homeassistant.helpers.json import JSONEncoder from homeassistant.helpers.json import JSONEncoder
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from homeassistant.util import dt as dt_util from homeassistant.util import dt as dt_util
@ -34,6 +33,7 @@ from . import common
from .common import MockScanner, mock_legacy_device_tracker_setup from .common import MockScanner, mock_legacy_device_tracker_setup
from tests.common import ( from tests.common import (
RegistryEntryWithDefaults,
assert_setup_component, assert_setup_component,
async_fire_time_changed, async_fire_time_changed,
mock_registry, mock_registry,
@ -400,7 +400,7 @@ async def test_see_service_guard_config_entry(
mock_registry( mock_registry(
hass, hass,
{ {
entity_id: RegistryEntry( entity_id: RegistryEntryWithDefaults(
entity_id=entity_id, unique_id=1, platform=const.DOMAIN entity_id=entity_id, unique_id=1, platform=const.DOMAIN
) )
}, },

View File

@ -17,7 +17,7 @@ from .const import (
WATCH_TV_ACTIVITY_ID, WATCH_TV_ACTIVITY_ID,
) )
from tests.common import MockConfigEntry, mock_registry from tests.common import MockConfigEntry, RegistryEntryWithDefaults, mock_registry
async def test_unique_id_migration( async def test_unique_id_migration(
@ -33,35 +33,35 @@ async def test_unique_id_migration(
hass, hass,
{ {
# old format # old format
ENTITY_WATCH_TV: er.RegistryEntry( ENTITY_WATCH_TV: RegistryEntryWithDefaults(
entity_id=ENTITY_WATCH_TV, entity_id=ENTITY_WATCH_TV,
unique_id="123443-Watch TV", unique_id="123443-Watch TV",
platform="harmony", platform="harmony",
config_entry_id=entry.entry_id, config_entry_id=entry.entry_id,
), ),
# old format, activity name with - # old format, activity name with -
ENTITY_NILE_TV: er.RegistryEntry( ENTITY_NILE_TV: RegistryEntryWithDefaults(
entity_id=ENTITY_NILE_TV, entity_id=ENTITY_NILE_TV,
unique_id="123443-Nile-TV", unique_id="123443-Nile-TV",
platform="harmony", platform="harmony",
config_entry_id=entry.entry_id, config_entry_id=entry.entry_id,
), ),
# new format # new format
ENTITY_PLAY_MUSIC: er.RegistryEntry( ENTITY_PLAY_MUSIC: RegistryEntryWithDefaults(
entity_id=ENTITY_PLAY_MUSIC, entity_id=ENTITY_PLAY_MUSIC,
unique_id=f"activity_{PLAY_MUSIC_ACTIVITY_ID}", unique_id=f"activity_{PLAY_MUSIC_ACTIVITY_ID}",
platform="harmony", platform="harmony",
config_entry_id=entry.entry_id, config_entry_id=entry.entry_id,
), ),
# old entity which no longer has a matching activity on the hub. skipped. # old entity which no longer has a matching activity on the hub. skipped.
"switch.some_other_activity": er.RegistryEntry( "switch.some_other_activity": RegistryEntryWithDefaults(
entity_id="switch.some_other_activity", entity_id="switch.some_other_activity",
unique_id="123443-Some Other Activity", unique_id="123443-Some Other Activity",
platform="harmony", platform="harmony",
config_entry_id=entry.entry_id, config_entry_id=entry.entry_id,
), ),
# select entity # select entity
ENTITY_SELECT: er.RegistryEntry( ENTITY_SELECT: RegistryEntryWithDefaults(
entity_id=ENTITY_SELECT, entity_id=ENTITY_SELECT,
unique_id=f"{HUB_NAME}_activities", unique_id=f"{HUB_NAME}_activities",
platform="harmony", platform="harmony",

View File

@ -7,7 +7,7 @@ from homeassistant.setup import async_setup_component
from .test_config_flow import TEST_EMAIL, TEST_GATEWAY_ID, TEST_PASSWORD, TEST_SERVER from .test_config_flow import TEST_EMAIL, TEST_GATEWAY_ID, TEST_PASSWORD, TEST_SERVER
from tests.common import MockConfigEntry, mock_registry from tests.common import MockConfigEntry, RegistryEntryWithDefaults, mock_registry
ENTITY_SENSOR_DISCRETE_RSSI_LEVEL = "sensor.zipscreen_woonkamer_discrete_rssi_level" ENTITY_SENSOR_DISCRETE_RSSI_LEVEL = "sensor.zipscreen_woonkamer_discrete_rssi_level"
ENTITY_ALARM_CONTROL_PANEL = "alarm_control_panel.alarm" ENTITY_ALARM_CONTROL_PANEL = "alarm_control_panel.alarm"
@ -33,35 +33,35 @@ async def test_unique_id_migration(hass: HomeAssistant) -> None:
hass, hass,
{ {
# This entity will be migrated to "io://1234-5678-1234/3541212-core:DiscreteRSSILevelState" # This entity will be migrated to "io://1234-5678-1234/3541212-core:DiscreteRSSILevelState"
ENTITY_SENSOR_DISCRETE_RSSI_LEVEL: er.RegistryEntry( ENTITY_SENSOR_DISCRETE_RSSI_LEVEL: RegistryEntryWithDefaults(
entity_id=ENTITY_SENSOR_DISCRETE_RSSI_LEVEL, entity_id=ENTITY_SENSOR_DISCRETE_RSSI_LEVEL,
unique_id="io://1234-5678-1234/3541212-OverkizState.CORE_DISCRETE_RSSI_LEVEL", unique_id="io://1234-5678-1234/3541212-OverkizState.CORE_DISCRETE_RSSI_LEVEL",
platform=DOMAIN, platform=DOMAIN,
config_entry_id=mock_entry.entry_id, config_entry_id=mock_entry.entry_id,
), ),
# This entity will be migrated to "internal://1234-5678-1234/alarm/0-TSKAlarmController" # This entity will be migrated to "internal://1234-5678-1234/alarm/0-TSKAlarmController"
ENTITY_ALARM_CONTROL_PANEL: er.RegistryEntry( ENTITY_ALARM_CONTROL_PANEL: RegistryEntryWithDefaults(
entity_id=ENTITY_ALARM_CONTROL_PANEL, entity_id=ENTITY_ALARM_CONTROL_PANEL,
unique_id="internal://1234-5678-1234/alarm/0-UIWidget.TSKALARM_CONTROLLER", unique_id="internal://1234-5678-1234/alarm/0-UIWidget.TSKALARM_CONTROLLER",
platform=DOMAIN, platform=DOMAIN,
config_entry_id=mock_entry.entry_id, config_entry_id=mock_entry.entry_id,
), ),
# This entity will be migrated to "io://1234-5678-1234/0-OnOff" # This entity will be migrated to "io://1234-5678-1234/0-OnOff"
ENTITY_SWITCH_GARAGE: er.RegistryEntry( ENTITY_SWITCH_GARAGE: RegistryEntryWithDefaults(
entity_id=ENTITY_SWITCH_GARAGE, entity_id=ENTITY_SWITCH_GARAGE,
unique_id="io://1234-5678-1234/0-UIClass.ON_OFF", unique_id="io://1234-5678-1234/0-UIClass.ON_OFF",
platform=DOMAIN, platform=DOMAIN,
config_entry_id=mock_entry.entry_id, config_entry_id=mock_entry.entry_id,
), ),
# This entity will be removed since "io://1234-5678-1234/3541212-core:TargetClosureState" already exists # This entity will be removed since "io://1234-5678-1234/3541212-core:TargetClosureState" already exists
ENTITY_SENSOR_TARGET_CLOSURE_STATE: er.RegistryEntry( ENTITY_SENSOR_TARGET_CLOSURE_STATE: RegistryEntryWithDefaults(
entity_id=ENTITY_SENSOR_TARGET_CLOSURE_STATE, entity_id=ENTITY_SENSOR_TARGET_CLOSURE_STATE,
unique_id="io://1234-5678-1234/3541212-OverkizState.CORE_TARGET_CLOSURE", unique_id="io://1234-5678-1234/3541212-OverkizState.CORE_TARGET_CLOSURE",
platform=DOMAIN, platform=DOMAIN,
config_entry_id=mock_entry.entry_id, config_entry_id=mock_entry.entry_id,
), ),
# This entity will not be migrated" # This entity will not be migrated"
ENTITY_SENSOR_TARGET_CLOSURE_STATE_2: er.RegistryEntry( ENTITY_SENSOR_TARGET_CLOSURE_STATE_2: RegistryEntryWithDefaults(
entity_id=ENTITY_SENSOR_TARGET_CLOSURE_STATE_2, entity_id=ENTITY_SENSOR_TARGET_CLOSURE_STATE_2,
unique_id="io://1234-5678-1234/3541212-core:TargetClosureState", unique_id="io://1234-5678-1234/3541212-core:TargetClosureState",
platform=DOMAIN, platform=DOMAIN,

View File

@ -29,7 +29,12 @@ from .conftest import (
setup_platform, setup_platform,
) )
from tests.common import MockConfigEntry, async_fire_time_changed, mock_registry from tests.common import (
MockConfigEntry,
RegistryEntryWithDefaults,
async_fire_time_changed,
mock_registry,
)
ENTITY_IS_IN_BED = f"sensor.sleepnumber_{BED_ID}_{SLEEPER_L_NAME_LOWER}_{IS_IN_BED}" ENTITY_IS_IN_BED = f"sensor.sleepnumber_{BED_ID}_{SLEEPER_L_NAME_LOWER}_{IS_IN_BED}"
ENTITY_PRESSURE = f"sensor.sleepnumber_{BED_ID}_{SLEEPER_L_NAME_LOWER}_{PRESSURE}" ENTITY_PRESSURE = f"sensor.sleepnumber_{BED_ID}_{SLEEPER_L_NAME_LOWER}_{PRESSURE}"
@ -103,19 +108,19 @@ async def test_unique_id_migration(hass: HomeAssistant, mock_asyncsleepiq) -> No
mock_registry( mock_registry(
hass, hass,
{ {
ENTITY_IS_IN_BED: er.RegistryEntry( ENTITY_IS_IN_BED: RegistryEntryWithDefaults(
entity_id=ENTITY_IS_IN_BED, entity_id=ENTITY_IS_IN_BED,
unique_id=f"{BED_ID}_{SLEEPER_L_NAME}_{IS_IN_BED}", unique_id=f"{BED_ID}_{SLEEPER_L_NAME}_{IS_IN_BED}",
platform=DOMAIN, platform=DOMAIN,
config_entry_id=mock_entry.entry_id, config_entry_id=mock_entry.entry_id,
), ),
ENTITY_PRESSURE: er.RegistryEntry( ENTITY_PRESSURE: RegistryEntryWithDefaults(
entity_id=ENTITY_PRESSURE, entity_id=ENTITY_PRESSURE,
unique_id=f"{BED_ID}_{SLEEPER_L_NAME}_{PRESSURE}", unique_id=f"{BED_ID}_{SLEEPER_L_NAME}_{PRESSURE}",
platform=DOMAIN, platform=DOMAIN,
config_entry_id=mock_entry.entry_id, config_entry_id=mock_entry.entry_id,
), ),
ENTITY_SLEEP_NUMBER: er.RegistryEntry( ENTITY_SLEEP_NUMBER: RegistryEntryWithDefaults(
entity_id=ENTITY_SLEEP_NUMBER, entity_id=ENTITY_SLEEP_NUMBER,
unique_id=f"{BED_ID}_{SLEEPER_L_NAME}_{SLEEP_NUMBER}", unique_id=f"{BED_ID}_{SLEEPER_L_NAME}_{SLEEP_NUMBER}",
platform=DOMAIN, platform=DOMAIN,

View File

@ -44,6 +44,7 @@ from tests.common import (
MockEntityPlatform, MockEntityPlatform,
MockModule, MockModule,
MockPlatform, MockPlatform,
RegistryEntryWithDefaults,
mock_integration, mock_integration,
mock_registry, mock_registry,
) )
@ -683,7 +684,7 @@ async def test_warn_disabled(
hass: HomeAssistant, caplog: pytest.LogCaptureFixture hass: HomeAssistant, caplog: pytest.LogCaptureFixture
) -> None: ) -> None:
"""Test we warn once if we write to a disabled entity.""" """Test we warn once if we write to a disabled entity."""
entry = er.RegistryEntry( entry = RegistryEntryWithDefaults(
entity_id="hello.world", entity_id="hello.world",
unique_id="test-unique-id", unique_id="test-unique-id",
platform="test-platform", platform="test-platform",
@ -710,7 +711,7 @@ async def test_warn_disabled(
async def test_disabled_in_entity_registry(hass: HomeAssistant) -> None: async def test_disabled_in_entity_registry(hass: HomeAssistant) -> None:
"""Test entity is removed if we disable entity registry entry.""" """Test entity is removed if we disable entity registry entry."""
entry = er.RegistryEntry( entry = RegistryEntryWithDefaults(
entity_id="hello.world", entity_id="hello.world",
unique_id="test-unique-id", unique_id="test-unique-id",
platform="test-platform", platform="test-platform",

View File

@ -48,6 +48,7 @@ from tests.common import (
MockEntity, MockEntity,
MockEntityPlatform, MockEntityPlatform,
MockPlatform, MockPlatform,
RegistryEntryWithDefaults,
async_fire_time_changed, async_fire_time_changed,
mock_platform, mock_platform,
mock_registry, mock_registry,
@ -752,7 +753,7 @@ async def test_overriding_name_from_registry(hass: HomeAssistant) -> None:
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.world": er.RegistryEntry( "test_domain.world": RegistryEntryWithDefaults(
entity_id="test_domain.world", entity_id="test_domain.world",
unique_id="1234", unique_id="1234",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"
@ -785,7 +786,7 @@ async def test_registry_respect_entity_disabled(hass: HomeAssistant) -> None:
mock_registry( mock_registry(
hass, hass,
{ {
"test_domain.world": er.RegistryEntry( "test_domain.world": RegistryEntryWithDefaults(
entity_id="test_domain.world", entity_id="test_domain.world",
unique_id="1234", unique_id="1234",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"
@ -832,7 +833,7 @@ async def test_entity_registry_updates_name(hass: HomeAssistant) -> None:
registry = mock_registry( registry = mock_registry(
hass, hass,
{ {
"test_domain.world": er.RegistryEntry( "test_domain.world": RegistryEntryWithDefaults(
entity_id="test_domain.world", entity_id="test_domain.world",
unique_id="1234", unique_id="1234",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"
@ -1065,7 +1066,7 @@ async def test_entity_registry_updates_entity_id(hass: HomeAssistant) -> None:
registry = mock_registry( registry = mock_registry(
hass, hass,
{ {
"test_domain.world": er.RegistryEntry( "test_domain.world": RegistryEntryWithDefaults(
entity_id="test_domain.world", entity_id="test_domain.world",
unique_id="1234", unique_id="1234",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"
@ -1097,14 +1098,14 @@ async def test_entity_registry_updates_invalid_entity_id(hass: HomeAssistant) ->
registry = mock_registry( registry = mock_registry(
hass, hass,
{ {
"test_domain.world": er.RegistryEntry( "test_domain.world": RegistryEntryWithDefaults(
entity_id="test_domain.world", entity_id="test_domain.world",
unique_id="1234", unique_id="1234",
# Using component.async_add_entities is equal to platform "domain" # Using component.async_add_entities is equal to platform "domain"
platform="test_platform", platform="test_platform",
name="Some name", name="Some name",
), ),
"test_domain.existing": er.RegistryEntry( "test_domain.existing": RegistryEntryWithDefaults(
entity_id="test_domain.existing", entity_id="test_domain.existing",
unique_id="5678", unique_id="5678",
platform="test_platform", platform="test_platform",
@ -1529,14 +1530,19 @@ async def test_entity_info_added_to_entity_registry(
entry_default = entity_registry.async_get_or_create(DOMAIN, DOMAIN, "default") entry_default = entity_registry.async_get_or_create(DOMAIN, DOMAIN, "default")
assert entry_default == er.RegistryEntry( assert entry_default == er.RegistryEntry(
"test_domain.best_name", entity_id="test_domain.best_name",
"default", unique_id="default",
"test_domain", platform="test_domain",
capabilities={"max": 100}, capabilities={"max": 100},
config_entry_id=None,
config_subentry_id=None,
created_at=dt_util.utcnow(), created_at=dt_util.utcnow(),
device_class=None, device_class=None,
device_id=None,
disabled_by=None,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
has_entity_name=True, has_entity_name=True,
hidden_by=None,
icon=None, icon=None,
id=ANY, id=ANY,
modified_at=dt_util.utcnow(), modified_at=dt_util.utcnow(),
@ -1544,6 +1550,7 @@ async def test_entity_info_added_to_entity_registry(
original_device_class="mock-device-class", original_device_class="mock-device-class",
original_icon="nice:icon", original_icon="nice:icon",
original_name="best name", original_name="best name",
options=None,
supported_features=5, supported_features=5,
translation_key="my_translation_key", translation_key="my_translation_key",
unit_of_measurement=PERCENTAGE, unit_of_measurement=PERCENTAGE,

View File

@ -24,6 +24,7 @@ from homeassistant.util.dt import utc_from_timestamp
from tests.common import ( from tests.common import (
ANY, ANY,
MockConfigEntry, MockConfigEntry,
RegistryEntryWithDefaults,
async_capture_events, async_capture_events,
async_fire_time_changed, async_fire_time_changed,
flush_store, flush_store,
@ -122,9 +123,9 @@ def test_get_or_create_updates_data(
assert set(entity_registry.async_device_ids()) == {orig_device_entry.id} assert set(entity_registry.async_device_ids()) == {orig_device_entry.id}
assert orig_entry == er.RegistryEntry( assert orig_entry == er.RegistryEntry(
"light.hue_5678", entity_id="light.hue_5678",
"5678", unique_id="5678",
"hue", platform="hue",
capabilities={"max": 100}, capabilities={"max": 100},
config_entry_id=orig_config_entry.entry_id, config_entry_id=orig_config_entry.entry_id,
config_subentry_id=config_subentry_id, config_subentry_id=config_subentry_id,
@ -139,6 +140,7 @@ def test_get_or_create_updates_data(
id=orig_entry.id, id=orig_entry.id,
modified_at=created, modified_at=created,
name=None, name=None,
options=None,
original_device_class="mock-device-class", original_device_class="mock-device-class",
original_icon="initial-original_icon", original_icon="initial-original_icon",
original_name="initial-original_name", original_name="initial-original_name",
@ -177,9 +179,9 @@ def test_get_or_create_updates_data(
) )
assert new_entry == er.RegistryEntry( assert new_entry == er.RegistryEntry(
"light.hue_5678", entity_id="light.hue_5678",
"5678", unique_id="5678",
"hue", platform="hue",
aliases=set(), aliases=set(),
area_id=None, area_id=None,
capabilities={"new-max": 150}, capabilities={"new-max": 150},
@ -196,6 +198,7 @@ def test_get_or_create_updates_data(
id=orig_entry.id, id=orig_entry.id,
modified_at=modified, modified_at=modified,
name=None, name=None,
options=None,
original_device_class="new-mock-device-class", original_device_class="new-mock-device-class",
original_icon="updated-original_icon", original_icon="updated-original_icon",
original_name="updated-original_name", original_name="updated-original_name",
@ -228,13 +231,14 @@ def test_get_or_create_updates_data(
) )
assert new_entry == er.RegistryEntry( assert new_entry == er.RegistryEntry(
"light.hue_5678", entity_id="light.hue_5678",
"5678", unique_id="5678",
"hue", platform="hue",
aliases=set(), aliases=set(),
area_id=None, area_id=None,
capabilities=None, capabilities=None,
config_entry_id=None, config_entry_id=None,
config_subentry_id=None,
created_at=created, created_at=created,
device_class=None, device_class=None,
device_id=None, device_id=None,
@ -246,6 +250,7 @@ def test_get_or_create_updates_data(
id=orig_entry.id, id=orig_entry.id,
modified_at=modified, modified_at=modified,
name=None, name=None,
options=None,
original_device_class=None, original_device_class=None,
original_icon=None, original_icon=None,
original_name=None, original_name=None,
@ -2095,8 +2100,12 @@ def test_entity_registry_items() -> None:
assert entities.get_entity_id(("a", "b", "c")) is None assert entities.get_entity_id(("a", "b", "c")) is None
assert entities.get_entry("abc") is None assert entities.get_entry("abc") is None
entry1 = er.RegistryEntry("test.entity1", "1234", "hue") entry1 = RegistryEntryWithDefaults(
entry2 = er.RegistryEntry("test.entity2", "2345", "hue") entity_id="test.entity1", unique_id="1234", platform="hue"
)
entry2 = RegistryEntryWithDefaults(
entity_id="test.entity2", unique_id="2345", platform="hue"
)
entities["test.entity1"] = entry1 entities["test.entity1"] = entry1
entities["test.entity2"] = entry2 entities["test.entity2"] = entry2

View File

@ -49,6 +49,7 @@ from tests.common import (
MockEntity, MockEntity,
MockModule, MockModule,
MockUser, MockUser,
RegistryEntryWithDefaults,
async_mock_service, async_mock_service,
mock_area_registry, mock_area_registry,
mock_device_registry, mock_device_registry,
@ -158,94 +159,94 @@ def floor_area_mock(hass: HomeAssistant) -> None:
}, },
) )
entity_in_own_area = er.RegistryEntry( entity_in_own_area = RegistryEntryWithDefaults(
entity_id="light.in_own_area", entity_id="light.in_own_area",
unique_id="in-own-area-id", unique_id="in-own-area-id",
platform="test", platform="test",
area_id="own-area", area_id="own-area",
) )
config_entity_in_own_area = er.RegistryEntry( config_entity_in_own_area = RegistryEntryWithDefaults(
entity_id="light.config_in_own_area", entity_id="light.config_in_own_area",
unique_id="config-in-own-area-id", unique_id="config-in-own-area-id",
platform="test", platform="test",
area_id="own-area", area_id="own-area",
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
) )
hidden_entity_in_own_area = er.RegistryEntry( hidden_entity_in_own_area = RegistryEntryWithDefaults(
entity_id="light.hidden_in_own_area", entity_id="light.hidden_in_own_area",
unique_id="hidden-in-own-area-id", unique_id="hidden-in-own-area-id",
platform="test", platform="test",
area_id="own-area", area_id="own-area",
hidden_by=er.RegistryEntryHider.USER, hidden_by=er.RegistryEntryHider.USER,
) )
entity_in_area = er.RegistryEntry( entity_in_area = RegistryEntryWithDefaults(
entity_id="light.in_area", entity_id="light.in_area",
unique_id="in-area-id", unique_id="in-area-id",
platform="test", platform="test",
device_id=device_in_area.id, device_id=device_in_area.id,
) )
config_entity_in_area = er.RegistryEntry( config_entity_in_area = RegistryEntryWithDefaults(
entity_id="light.config_in_area", entity_id="light.config_in_area",
unique_id="config-in-area-id", unique_id="config-in-area-id",
platform="test", platform="test",
device_id=device_in_area.id, device_id=device_in_area.id,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
) )
hidden_entity_in_area = er.RegistryEntry( hidden_entity_in_area = RegistryEntryWithDefaults(
entity_id="light.hidden_in_area", entity_id="light.hidden_in_area",
unique_id="hidden-in-area-id", unique_id="hidden-in-area-id",
platform="test", platform="test",
device_id=device_in_area.id, device_id=device_in_area.id,
hidden_by=er.RegistryEntryHider.USER, hidden_by=er.RegistryEntryHider.USER,
) )
entity_in_other_area = er.RegistryEntry( entity_in_other_area = RegistryEntryWithDefaults(
entity_id="light.in_other_area", entity_id="light.in_other_area",
unique_id="in-area-a-id", unique_id="in-area-a-id",
platform="test", platform="test",
device_id=device_in_area.id, device_id=device_in_area.id,
area_id="other-area", area_id="other-area",
) )
entity_assigned_to_area = er.RegistryEntry( entity_assigned_to_area = RegistryEntryWithDefaults(
entity_id="light.assigned_to_area", entity_id="light.assigned_to_area",
unique_id="assigned-area-id", unique_id="assigned-area-id",
platform="test", platform="test",
device_id=device_in_area.id, device_id=device_in_area.id,
area_id="test-area", area_id="test-area",
) )
entity_no_area = er.RegistryEntry( entity_no_area = RegistryEntryWithDefaults(
entity_id="light.no_area", entity_id="light.no_area",
unique_id="no-area-id", unique_id="no-area-id",
platform="test", platform="test",
device_id=device_no_area.id, device_id=device_no_area.id,
) )
config_entity_no_area = er.RegistryEntry( config_entity_no_area = RegistryEntryWithDefaults(
entity_id="light.config_no_area", entity_id="light.config_no_area",
unique_id="config-no-area-id", unique_id="config-no-area-id",
platform="test", platform="test",
device_id=device_no_area.id, device_id=device_no_area.id,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
) )
hidden_entity_no_area = er.RegistryEntry( hidden_entity_no_area = RegistryEntryWithDefaults(
entity_id="light.hidden_no_area", entity_id="light.hidden_no_area",
unique_id="hidden-no-area-id", unique_id="hidden-no-area-id",
platform="test", platform="test",
device_id=device_no_area.id, device_id=device_no_area.id,
hidden_by=er.RegistryEntryHider.USER, hidden_by=er.RegistryEntryHider.USER,
) )
entity_diff_area = er.RegistryEntry( entity_diff_area = RegistryEntryWithDefaults(
entity_id="light.diff_area", entity_id="light.diff_area",
unique_id="diff-area-id", unique_id="diff-area-id",
platform="test", platform="test",
device_id=device_diff_area.id, device_id=device_diff_area.id,
) )
entity_in_area_a = er.RegistryEntry( entity_in_area_a = RegistryEntryWithDefaults(
entity_id="light.in_area_a", entity_id="light.in_area_a",
unique_id="in-area-a-id", unique_id="in-area-a-id",
platform="test", platform="test",
device_id=device_area_a.id, device_id=device_area_a.id,
area_id="area-a", area_id="area-a",
) )
entity_in_area_b = er.RegistryEntry( entity_in_area_b = RegistryEntryWithDefaults(
entity_id="light.in_area_b", entity_id="light.in_area_b",
unique_id="in-area-b-id", unique_id="in-area-b-id",
platform="test", platform="test",
@ -329,53 +330,53 @@ def label_mock(hass: HomeAssistant) -> None:
}, },
) )
entity_with_my_label = er.RegistryEntry( entity_with_my_label = RegistryEntryWithDefaults(
entity_id="light.with_my_label", entity_id="light.with_my_label",
unique_id="with_my_label", unique_id="with_my_label",
platform="test", platform="test",
labels={"my-label"}, labels={"my-label"},
) )
hidden_entity_with_my_label = er.RegistryEntry( hidden_entity_with_my_label = RegistryEntryWithDefaults(
entity_id="light.hidden_with_my_label", entity_id="light.hidden_with_my_label",
unique_id="hidden_with_my_label", unique_id="hidden_with_my_label",
platform="test", platform="test",
labels={"my-label"}, labels={"my-label"},
hidden_by=er.RegistryEntryHider.USER, hidden_by=er.RegistryEntryHider.USER,
) )
config_entity_with_my_label = er.RegistryEntry( config_entity_with_my_label = RegistryEntryWithDefaults(
entity_id="light.config_with_my_label", entity_id="light.config_with_my_label",
unique_id="config_with_my_label", unique_id="config_with_my_label",
platform="test", platform="test",
labels={"my-label"}, labels={"my-label"},
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
) )
entity_with_label1_from_device = er.RegistryEntry( entity_with_label1_from_device = RegistryEntryWithDefaults(
entity_id="light.with_label1_from_device", entity_id="light.with_label1_from_device",
unique_id="with_label1_from_device", unique_id="with_label1_from_device",
platform="test", platform="test",
device_id=device_has_label1.id, device_id=device_has_label1.id,
) )
entity_with_label1_from_device_and_different_area = er.RegistryEntry( entity_with_label1_from_device_and_different_area = RegistryEntryWithDefaults(
entity_id="light.with_label1_from_device_diff_area", entity_id="light.with_label1_from_device_diff_area",
unique_id="with_label1_from_device_diff_area", unique_id="with_label1_from_device_diff_area",
platform="test", platform="test",
device_id=device_has_label1.id, device_id=device_has_label1.id,
area_id=area_without_labels.id, area_id=area_without_labels.id,
) )
entity_with_label1_and_label2_from_device = er.RegistryEntry( entity_with_label1_and_label2_from_device = RegistryEntryWithDefaults(
entity_id="light.with_label1_and_label2_from_device", entity_id="light.with_label1_and_label2_from_device",
unique_id="with_label1_and_label2_from_device", unique_id="with_label1_and_label2_from_device",
platform="test", platform="test",
labels={"label1"}, labels={"label1"},
device_id=device_has_label2.id, device_id=device_has_label2.id,
) )
entity_with_labels_from_device = er.RegistryEntry( entity_with_labels_from_device = RegistryEntryWithDefaults(
entity_id="light.with_labels_from_device", entity_id="light.with_labels_from_device",
unique_id="with_labels_from_device", unique_id="with_labels_from_device",
platform="test", platform="test",
device_id=device_has_labels.id, device_id=device_has_labels.id,
) )
entity_with_no_labels = er.RegistryEntry( entity_with_no_labels = RegistryEntryWithDefaults(
entity_id="light.no_labels", entity_id="light.no_labels",
unique_id="no_labels", unique_id="no_labels",
platform="test", platform="test",
@ -1697,7 +1698,7 @@ async def test_domain_control_unauthorized(
mock_registry( mock_registry(
hass, hass,
{ {
"light.kitchen": er.RegistryEntry( "light.kitchen": RegistryEntryWithDefaults(
entity_id="light.kitchen", entity_id="light.kitchen",
unique_id="kitchen", unique_id="kitchen",
platform="test_domain", platform="test_domain",
@ -1738,7 +1739,7 @@ async def test_domain_control_admin(
mock_registry( mock_registry(
hass, hass,
{ {
"light.kitchen": er.RegistryEntry( "light.kitchen": RegistryEntryWithDefaults(
entity_id="light.kitchen", entity_id="light.kitchen",
unique_id="kitchen", unique_id="kitchen",
platform="test_domain", platform="test_domain",
@ -1776,7 +1777,7 @@ async def test_domain_control_no_user(hass: HomeAssistant) -> None:
mock_registry( mock_registry(
hass, hass,
{ {
"light.kitchen": er.RegistryEntry( "light.kitchen": RegistryEntryWithDefaults(
entity_id="light.kitchen", entity_id="light.kitchen",
unique_id="kitchen", unique_id="kitchen",
platform="test_domain", platform="test_domain",