Allow hiding and unhiding group members (#68192)

This commit is contained in:
Erik Montnemery
2022-03-22 12:14:34 +01:00
committed by GitHub
parent b5d2c6e43a
commit 1b955970f8
7 changed files with 359 additions and 14 deletions

View File

@@ -1416,3 +1416,97 @@ async def test_setup_and_remove_config_entry(
# Check the state and entity registry entry are removed
assert hass.states.get(f"{group_type}.bed_room") is None
assert registry.async_get(f"{group_type}.bed_room") is None
@pytest.mark.parametrize(
"hide_members,hidden_by_initial,hidden_by",
(
(False, "integration", "integration"),
(False, None, None),
(False, "user", "user"),
(True, "integration", None),
(True, None, None),
(True, "user", "user"),
),
)
@pytest.mark.parametrize(
"group_type,extra_options",
(
("binary_sensor", {"all": False}),
("cover", {}),
("fan", {}),
("light", {}),
("media_player", {}),
),
)
async def test_unhide_members_on_remove(
hass: HomeAssistant,
group_type: str,
extra_options: dict[str, Any],
hide_members: bool,
hidden_by_initial: str,
hidden_by: str,
) -> None:
"""Test removing a config entry."""
registry = er.async_get(hass)
registry = er.async_get(hass)
entry1 = registry.async_get_or_create(
group_type,
"test",
"unique1",
suggested_object_id="one",
hidden_by=hidden_by_initial,
)
assert entry1.entity_id == f"{group_type}.one"
entry3 = registry.async_get_or_create(
group_type,
"test",
"unique3",
suggested_object_id="three",
hidden_by=hidden_by_initial,
)
assert entry3.entity_id == f"{group_type}.three"
entry4 = registry.async_get_or_create(
group_type,
"test",
"unique4",
suggested_object_id="four",
)
assert entry4.entity_id == f"{group_type}.four"
members = [f"{group_type}.one", f"{group_type}.two", entry3.id, entry4.id]
# Setup the config entry
group_config_entry = MockConfigEntry(
data={},
domain=group.DOMAIN,
options={
"entities": members,
"group_type": group_type,
"hide_members": hide_members,
"name": "Bed Room",
**extra_options,
},
title="Bed Room",
)
group_config_entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(group_config_entry.entry_id)
await hass.async_block_till_done()
# Check the state is present
assert hass.states.get(f"{group_type}.bed_room")
# Remove one entity registry entry, to make sure this does not trip up config entry
# removal
registry.async_remove(entry4.entity_id)
# Remove the config entry
assert await hass.config_entries.async_remove(group_config_entry.entry_id)
await hass.async_block_till_done()
# Check the group members are unhidden
assert registry.async_get(f"{group_type}.one").hidden_by == hidden_by
assert registry.async_get(f"{group_type}.three").hidden_by == hidden_by