Store subentry type in subentry
parent
07734239b4
commit
1fbf929819
|
@ -681,6 +681,7 @@ async def config_subentry_list(
|
|||
result = [
|
||||
{
|
||||
"subentry_id": subentry.subentry_id,
|
||||
"subentry_type": subentry.subentry_type,
|
||||
"title": subentry.title,
|
||||
"unique_id": subentry.unique_id,
|
||||
}
|
||||
|
|
|
@ -326,6 +326,7 @@ class ConfigSubentryData(TypedDict):
|
|||
"""
|
||||
|
||||
data: Mapping[str, Any]
|
||||
subentry_type: str
|
||||
title: str
|
||||
unique_id: str | None
|
||||
|
||||
|
@ -358,6 +359,7 @@ class ConfigSubentry:
|
|||
|
||||
data: MappingProxyType[str, Any]
|
||||
subentry_id: str = field(default_factory=ulid_util.ulid_now)
|
||||
subentry_type: str
|
||||
title: str
|
||||
unique_id: str | None
|
||||
|
||||
|
@ -366,6 +368,7 @@ class ConfigSubentry:
|
|||
return {
|
||||
"data": dict(self.data),
|
||||
"subentry_id": self.subentry_id,
|
||||
"subentry_type": self.subentry_type,
|
||||
"title": self.title,
|
||||
"unique_id": self.unique_id,
|
||||
}
|
||||
|
@ -462,6 +465,7 @@ class ConfigEntry(Generic[_DataT]):
|
|||
subentry_kwargs["subentry_id"] = subentry_data["subentry_id"] # type: ignore[typeddict-item]
|
||||
subentry = ConfigSubentry(
|
||||
data=MappingProxyType(subentry_data["data"]),
|
||||
subentry_type=subentry_data["subentry_type"],
|
||||
title=subentry_data["title"],
|
||||
unique_id=subentry_data.get("unique_id"),
|
||||
**subentry_kwargs,
|
||||
|
@ -3345,7 +3349,7 @@ class ConfigSubentryFlowManager(
|
|||
if result["type"] != data_entry_flow.FlowResultType.CREATE_ENTRY:
|
||||
return result
|
||||
|
||||
entry_id = flow.handler[0]
|
||||
entry_id, subentry_type = flow.handler
|
||||
entry = self.hass.config_entries.async_get_entry(entry_id)
|
||||
if entry is None:
|
||||
raise UnknownEntry(entry_id)
|
||||
|
@ -3358,6 +3362,7 @@ class ConfigSubentryFlowManager(
|
|||
entry,
|
||||
ConfigSubentry(
|
||||
data=MappingProxyType(result["data"]),
|
||||
subentry_type=subentry_type,
|
||||
title=result["title"],
|
||||
unique_id=unique_id,
|
||||
),
|
||||
|
|
|
@ -1192,7 +1192,11 @@ async def test_subentry_reconfigure_flow(hass: HomeAssistant, client) -> None:
|
|||
source="bla",
|
||||
subentries_data=[
|
||||
core_ce.ConfigSubentryData(
|
||||
data={}, subentry_id="mock_id", title="Title", unique_id=None
|
||||
data={},
|
||||
subentry_id="mock_id",
|
||||
subentry_type="test",
|
||||
title="Title",
|
||||
unique_id=None,
|
||||
)
|
||||
],
|
||||
).add_to_hass(hass)
|
||||
|
@ -2874,6 +2878,7 @@ async def test_list_subentries(
|
|||
core_ce.ConfigSubentryData(
|
||||
data={"test": "test"},
|
||||
subentry_id="mock_id",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
)
|
||||
|
@ -2894,7 +2899,12 @@ async def test_list_subentries(
|
|||
|
||||
assert response["success"]
|
||||
assert response["result"] == [
|
||||
{"subentry_id": "mock_id", "title": "Mock title", "unique_id": "test"},
|
||||
{
|
||||
"subentry_id": "mock_id",
|
||||
"subentry_type": "test",
|
||||
"title": "Mock title",
|
||||
"unique_id": "test",
|
||||
},
|
||||
]
|
||||
|
||||
# Try listing subentries for an unknown entry
|
||||
|
@ -2925,7 +2935,10 @@ async def test_delete_subentry(
|
|||
state=core_ce.ConfigEntryState.LOADED,
|
||||
subentries_data=[
|
||||
core_ce.ConfigSubentryData(
|
||||
data={"test": "test"}, subentry_id="mock_id", title="Mock title"
|
||||
data={"test": "test"},
|
||||
subentry_id="mock_id",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
)
|
||||
],
|
||||
)
|
||||
|
|
|
@ -132,6 +132,7 @@ async def test_subentry_flow(hass: HomeAssistant) -> None:
|
|||
subentry_id: config_entries.ConfigSubentry(
|
||||
data={"state": 15},
|
||||
subentry_id=subentry_id,
|
||||
subentry_type="add_entity",
|
||||
title="Sensor 1",
|
||||
unique_id=None,
|
||||
)
|
||||
|
@ -150,6 +151,7 @@ async def test_subentry_reconfigure_flow(hass: HomeAssistant) -> None:
|
|||
config_entries.ConfigSubentryData(
|
||||
data={"state": 15},
|
||||
subentry_id="mock_id",
|
||||
subentry_type="add_entity",
|
||||
title="Sensor 1",
|
||||
unique_id=None,
|
||||
)
|
||||
|
@ -177,6 +179,7 @@ async def test_subentry_reconfigure_flow(hass: HomeAssistant) -> None:
|
|||
subentry_id: config_entries.ConfigSubentry(
|
||||
data={"state": 5},
|
||||
subentry_id=subentry_id,
|
||||
subentry_type="add_entity",
|
||||
title="Renamed sensor 1",
|
||||
unique_id=None,
|
||||
)
|
||||
|
|
|
@ -182,6 +182,7 @@ async def test_multiple_config_subentries(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -193,6 +194,7 @@ async def test_multiple_config_subentries(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-2-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -1566,6 +1568,7 @@ async def test_removing_config_subentries(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -1577,6 +1580,7 @@ async def test_removing_config_subentries(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-2-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -1677,6 +1681,7 @@ async def test_deleted_device_removing_config_subentries(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-2-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -2508,6 +2513,7 @@ async def test_update_remove_config_subentries(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -2519,6 +2525,7 @@ async def test_update_remove_config_subentries(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-2-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
|
|
@ -881,6 +881,7 @@ async def test_setup_entry(
|
|||
ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -1166,6 +1167,7 @@ async def test_device_info_called(
|
|||
ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
|
|
@ -84,6 +84,7 @@ def test_get_or_create_updates_data(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id=config_subentry_id,
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
)
|
||||
|
@ -718,6 +719,7 @@ async def test_removing_config_subentry_id(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
)
|
||||
|
@ -762,12 +764,14 @@ async def test_deleted_entity_removing_config_subentry_id(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-2",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -1557,12 +1561,14 @@ async def test_remove_config_subentry_from_device_removes_entities(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-2",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -1646,12 +1652,14 @@ async def test_remove_config_subentry_from_device_removes_entities_2(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-2",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -2135,6 +2143,7 @@ def test_migrate_entity_to_new_platform(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -2169,6 +2178,7 @@ def test_migrate_entity_to_new_platform(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-2",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -2234,6 +2244,7 @@ def test_migrate_entity_to_new_platform_error_handling(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -2263,6 +2274,7 @@ def test_migrate_entity_to_new_platform_error_handling(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-2",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -2327,6 +2339,7 @@ async def test_restore_entity(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -2690,12 +2703,14 @@ async def test_subentry(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-1-2",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
),
|
||||
|
@ -2709,6 +2724,7 @@ async def test_subentry(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="mock-subentry-id-2-1",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
)
|
||||
|
|
|
@ -925,10 +925,13 @@ async def test_saving_and_loading(
|
|||
await self.async_set_unique_id("unique")
|
||||
subentries = [
|
||||
config_entries.ConfigSubentryData(
|
||||
data={"foo": "bar"}, title="subentry 1"
|
||||
data={"foo": "bar"}, subentry_type="test", title="subentry 1"
|
||||
),
|
||||
config_entries.ConfigSubentryData(
|
||||
data={"sun": "moon"}, title="subentry 2", unique_id="very_unique"
|
||||
data={"sun": "moon"},
|
||||
subentry_type="test",
|
||||
title="subentry 2",
|
||||
unique_id="very_unique",
|
||||
),
|
||||
]
|
||||
return self.async_create_entry(
|
||||
|
@ -1005,12 +1008,14 @@ async def test_saving_and_loading(
|
|||
{
|
||||
"data": {"foo": "bar"},
|
||||
"subentry_id": ANY,
|
||||
"subentry_type": "test",
|
||||
"title": "subentry 1",
|
||||
"unique_id": None,
|
||||
},
|
||||
{
|
||||
"data": {"sun": "moon"},
|
||||
"subentry_id": ANY,
|
||||
"subentry_type": "test",
|
||||
"title": "subentry 2",
|
||||
"unique_id": "very_unique",
|
||||
},
|
||||
|
@ -1547,7 +1552,10 @@ async def test_update_subentry_and_trigger_listener(
|
|||
update_listener_calls = []
|
||||
|
||||
subentry = config_entries.ConfigSubentry(
|
||||
data={"test": "test"}, unique_id="test", title="Mock title"
|
||||
data={"test": "test"},
|
||||
subentry_type="test",
|
||||
unique_id="test",
|
||||
title="Mock title",
|
||||
)
|
||||
|
||||
async def update_listener(
|
||||
|
@ -1914,6 +1922,7 @@ async def test_create_entry_subentries(
|
|||
subentrydata = config_entries.ConfigSubentryData(
|
||||
data={"test": "test"},
|
||||
title="Mock title",
|
||||
subentry_type="test",
|
||||
unique_id="test",
|
||||
)
|
||||
|
||||
|
@ -1966,6 +1975,7 @@ async def test_create_entry_subentries(
|
|||
subentry = config_entries.ConfigSubentry(
|
||||
data=subentrydata["data"],
|
||||
subentry_id=subentry_id,
|
||||
subentry_type="test",
|
||||
title=subentrydata["title"],
|
||||
unique_id="test",
|
||||
)
|
||||
|
@ -2018,6 +2028,7 @@ async def test_entry_subentry(
|
|||
subentry_id: config_entries.ConfigSubentry(
|
||||
data={"second": True},
|
||||
subentry_id=subentry_id,
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id="test",
|
||||
)
|
||||
|
@ -2117,6 +2128,7 @@ async def test_entry_subentry_duplicate(
|
|||
config_entries.ConfigSubentryData(
|
||||
data={},
|
||||
subentry_id="blabla",
|
||||
subentry_type="test",
|
||||
title="Mock title",
|
||||
unique_id=unique_id,
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue