mirror of
https://github.com/home-assistant/core.git
synced 2026-04-02 00:20:30 +01:00
Unprefix entity name for entity ID generation (#166900)
This commit is contained in:
@@ -469,6 +469,7 @@ def _async_get_full_entity_name(
|
||||
original_name: str | None,
|
||||
original_name_unprefixed: str | None | UndefinedType = UNDEFINED,
|
||||
overridden_name: str | None = None,
|
||||
unprefix_name: bool = False,
|
||||
use_legacy_naming: bool = False,
|
||||
) -> str:
|
||||
"""Get full name for an entity.
|
||||
@@ -500,6 +501,10 @@ def _async_get_full_entity_name(
|
||||
if original_name_unprefixed is not None
|
||||
else original_name
|
||||
)
|
||||
elif unprefix_name:
|
||||
unprefixed_name = _async_strip_prefix_from_entity_name(name, device_name)
|
||||
if unprefixed_name is not None:
|
||||
name = unprefixed_name
|
||||
|
||||
if not name:
|
||||
name = device_name
|
||||
@@ -1235,6 +1240,7 @@ class EntityRegistry(BaseRegistry):
|
||||
name=name,
|
||||
original_name=object_id_base,
|
||||
overridden_name=suggested_object_id,
|
||||
unprefix_name=True,
|
||||
)
|
||||
return self.async_get_available_entity_id(
|
||||
domain,
|
||||
|
||||
@@ -571,6 +571,94 @@ def test_get_available_entity_id_considers_existing_entities(
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
(
|
||||
"device_name",
|
||||
"object_id_base",
|
||||
"suggested_object_id",
|
||||
"user_name",
|
||||
"expected_entity_id",
|
||||
),
|
||||
[
|
||||
(
|
||||
None,
|
||||
"My Sensor",
|
||||
None,
|
||||
None,
|
||||
"sensor.my_sensor",
|
||||
),
|
||||
(
|
||||
"Living Room",
|
||||
"Temperature",
|
||||
None,
|
||||
None,
|
||||
"sensor.living_room_temperature",
|
||||
),
|
||||
(
|
||||
"Living Room",
|
||||
"Temperature",
|
||||
"custom_id",
|
||||
None,
|
||||
"sensor.custom_id",
|
||||
),
|
||||
(
|
||||
"Living Room",
|
||||
"Temperature",
|
||||
"custom_id",
|
||||
"Humidity",
|
||||
"sensor.living_room_humidity",
|
||||
),
|
||||
(
|
||||
"Living Room",
|
||||
"Temperature",
|
||||
None,
|
||||
"Living Room Sensor",
|
||||
"sensor.living_room_sensor",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_regenerate_entity_id(
|
||||
hass: HomeAssistant,
|
||||
device_registry: dr.DeviceRegistry,
|
||||
entity_registry: er.EntityRegistry,
|
||||
device_name: str | None,
|
||||
object_id_base: str | None,
|
||||
suggested_object_id: str | None,
|
||||
user_name: str | None,
|
||||
expected_entity_id: str,
|
||||
) -> None:
|
||||
"""Test regenerating entity IDs."""
|
||||
config_entry = MockConfigEntry(domain="sensor")
|
||||
config_entry.add_to_hass(hass)
|
||||
|
||||
device_id: str | None = None
|
||||
if device_name is not None:
|
||||
device_entry = device_registry.async_get_or_create(
|
||||
config_entry_id=config_entry.entry_id,
|
||||
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
||||
name=device_name,
|
||||
)
|
||||
device_id = device_entry.id
|
||||
|
||||
entry = entity_registry.async_get_or_create(
|
||||
"sensor",
|
||||
"test",
|
||||
"1234",
|
||||
config_entry=config_entry,
|
||||
device_id=device_id,
|
||||
has_entity_name=True,
|
||||
object_id_base=object_id_base,
|
||||
original_name=object_id_base,
|
||||
suggested_object_id=suggested_object_id,
|
||||
)
|
||||
|
||||
if user_name is not None:
|
||||
entry = entity_registry.async_update_entity(entry.entity_id, name=user_name)
|
||||
|
||||
new_entity_id = entity_registry.async_regenerate_entity_id(entry)
|
||||
assert new_entity_id == expected_entity_id
|
||||
|
||||
|
||||
def test_is_registered(entity_registry: er.EntityRegistry) -> None:
|
||||
"""Test that is_registered works."""
|
||||
entry = entity_registry.async_get_or_create("light", "hue", "1234")
|
||||
|
||||
Reference in New Issue
Block a user