Add WS command to help reset custom entity_id (#145504)

* Add WS command to help reset custom entity_id

* Calculate suggested object id from entity properties

* Fix logic and add additional tests

* Adjust test

* Update folder_watcher test

* Handle current entity id matches the automatic entity id

* Don't store calculated_object_id

* Update snapshots

* Update snapshots

* Update test

* Tweak logic for reusing current entity_id

* Improve test

* Don't assign same entity_id to several entities

* Prioritize custom entity name

* Update snapshots

* Update snapshots
This commit is contained in:
Erik Montnemery
2025-05-26 19:28:27 +02:00
committed by GitHub
parent bf92db6fd5
commit 4e1d5fbeb0
612 changed files with 7218 additions and 30 deletions

View File

@@ -1550,6 +1550,7 @@ async def test_entity_info_added_to_entity_registry(
original_icon="nice:icon",
original_name="best name",
options=None,
suggested_object_id=None,
supported_features=5,
translation_key="my_translation_key",
unit_of_measurement=PERCENTAGE,

View File

@@ -144,6 +144,7 @@ def test_get_or_create_updates_data(
original_device_class="mock-device-class",
original_icon="initial-original_icon",
original_name="initial-original_name",
suggested_object_id=None,
supported_features=5,
translation_key="initial-translation_key",
unit_of_measurement="initial-unit_of_measurement",
@@ -202,6 +203,7 @@ def test_get_or_create_updates_data(
original_device_class="new-mock-device-class",
original_icon="updated-original_icon",
original_name="updated-original_name",
suggested_object_id=None,
supported_features=10,
translation_key="updated-translation_key",
unit_of_measurement="updated-unit_of_measurement",
@@ -254,6 +256,7 @@ def test_get_or_create_updates_data(
original_device_class=None,
original_icon=None,
original_name=None,
suggested_object_id=None,
supported_features=0, # supported_features is stored as an int
translation_key=None,
unit_of_measurement=None,
@@ -514,6 +517,7 @@ async def test_load_bad_data(
{
"aliases": [],
"area_id": None,
"calculated_object_id": None,
"capabilities": None,
"categories": {},
"config_entry_id": None,
@@ -537,6 +541,7 @@ async def test_load_bad_data(
"original_name": None,
"platform": "super_platform",
"previous_unique_id": None,
"suggested_object_id": None,
"supported_features": 0,
"translation_key": None,
"unique_id": 123, # Should trigger warning
@@ -545,6 +550,7 @@ async def test_load_bad_data(
{
"aliases": [],
"area_id": None,
"calculated_object_id": None,
"capabilities": None,
"categories": {},
"config_entry_id": None,
@@ -568,6 +574,7 @@ async def test_load_bad_data(
"original_name": None,
"platform": "super_platform",
"previous_unique_id": None,
"suggested_object_id": None,
"supported_features": 0,
"translation_key": None,
"unique_id": ["not", "valid"], # Should not load
@@ -922,6 +929,7 @@ async def test_migration_1_1(hass: HomeAssistant, hass_storage: dict[str, Any])
"original_name": None,
"platform": "super_platform",
"previous_unique_id": None,
"suggested_object_id": None,
"supported_features": 0,
"translation_key": None,
"unique_id": "very_unique",
@@ -1101,6 +1109,7 @@ async def test_migration_1_11(
"original_name": None,
"platform": "super_platform",
"previous_unique_id": None,
"suggested_object_id": None,
"supported_features": 0,
"translation_key": None,
"unique_id": "very_unique",
@@ -2577,6 +2586,7 @@ async def test_restore_entity(
original_device_class="device_class_2",
original_icon="original_icon_2",
original_name="original_name_2",
suggested_object_id="suggested_2",
supported_features=2,
translation_key="translation_key_2",
unit_of_measurement="unit_2",