mirror of
https://github.com/home-assistant/core.git
synced 2026-10-06 22:38:02 -04:00
Fix friendly names for empty entity name overrides (#181576)
This commit is contained in:
@@ -550,7 +550,7 @@ def _async_get_full_entity_name(
|
||||
if name is None and overridden_name is not None:
|
||||
full_name = overridden_name
|
||||
|
||||
elif not use_legacy_naming or name is None:
|
||||
elif not use_legacy_naming or not name:
|
||||
raw_device_name: str | None = None
|
||||
device_name: str | None = None
|
||||
parent_device_name: str | None = None
|
||||
|
||||
@@ -1042,6 +1042,44 @@ async def _test_friendly_name(
|
||||
assert state.attributes.get(ATTR_FRIENDLY_NAME) == expected_friendly_name
|
||||
|
||||
|
||||
@pytest.mark.parametrize("has_entity_name", [False, True])
|
||||
async def test_friendly_name_empty_override_uses_device_name(
|
||||
hass: HomeAssistant,
|
||||
entity_registry: er.EntityRegistry,
|
||||
device_registry: dr.DeviceRegistry,
|
||||
has_entity_name: bool,
|
||||
) -> None:
|
||||
"""Test an empty name follows the device until the override is reset."""
|
||||
ent = MockEntity(
|
||||
unique_id="empty_name",
|
||||
device_info={
|
||||
"identifiers": {("test", "device")},
|
||||
"name": "Device Bla",
|
||||
},
|
||||
has_entity_name=has_entity_name,
|
||||
name="Temperature",
|
||||
)
|
||||
await _test_friendly_name(hass, ent, "Device Bla Temperature")
|
||||
|
||||
entry = entity_registry.async_update_entity(ent.entity_id, name="")
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.get(ent.entity_id).attributes[ATTR_FRIENDLY_NAME] == "Device Bla"
|
||||
|
||||
assert entry.device_id is not None
|
||||
device_registry.async_update_device(entry.device_id, name_by_user="Living room")
|
||||
await hass.async_block_till_done()
|
||||
assert (
|
||||
hass.states.get(ent.entity_id).attributes[ATTR_FRIENDLY_NAME] == "Living room"
|
||||
)
|
||||
|
||||
entity_registry.async_update_entity(ent.entity_id, name=None)
|
||||
await hass.async_block_till_done()
|
||||
assert (
|
||||
hass.states.get(ent.entity_id).attributes[ATTR_FRIENDLY_NAME]
|
||||
== "Living room Temperature"
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
(
|
||||
"has_entity_name",
|
||||
|
||||
@@ -3658,6 +3658,16 @@ async def test_restore_states(
|
||||
pytest.param(
|
||||
None, None, "Living Room Fan", "Living Room Fan", id="device_rename_applied"
|
||||
),
|
||||
pytest.param(
|
||||
"Temperature", "", None, "Pedestal Fan", id="empty_name_uses_device_name"
|
||||
),
|
||||
pytest.param(
|
||||
"Temperature",
|
||||
"",
|
||||
"Living Room Fan",
|
||||
"Living Room Fan",
|
||||
id="empty_name_uses_renamed_device",
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_restore_state_uses_device_name(
|
||||
|
||||
Reference in New Issue
Block a user