Add config flow for binary_sensor group (#67802)

* Add config flow for binary_sensor group

* Address review comments

* Remove device class selection from flow

* Update translation strings
This commit is contained in:
Erik Montnemery 2022-03-10 10:39:51 +01:00 committed by GitHub
parent e5523ef6b6
commit 5ae48bcf74
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 137 additions and 60 deletions

View file

@ -10,16 +10,25 @@ from homeassistant.data_entry_flow import RESULT_TYPE_CREATE_ENTRY, RESULT_TYPE_
@pytest.mark.parametrize(
"group_type,group_state,member_state,member_attributes",
"group_type,group_state,member_state,member_attributes,extra_input,extra_options,extra_attrs",
(
("cover", "open", "open", {}),
("fan", "on", "on", {}),
("light", "on", "on", {}),
("media_player", "on", "on", {}),
("binary_sensor", "on", "on", {}, {}, {"all": False}, {}),
("binary_sensor", "on", "on", {}, {"all": True}, {"all": True}, {}),
("cover", "open", "open", {}, {}, {}, {}),
("fan", "on", "on", {}, {}, {}, {}),
("light", "on", "on", {}, {}, {}, {}),
("media_player", "on", "on", {}, {}, {}, {}),
),
)
async def test_config_flow(
hass: HomeAssistant, group_type, group_state, member_state, member_attributes
hass: HomeAssistant,
group_type,
group_state,
member_state,
member_attributes,
extra_input,
extra_options,
extra_attrs,
) -> None:
"""Test the config flow."""
members = [f"{group_type}.one", f"{group_type}.two"]
@ -48,6 +57,7 @@ async def test_config_flow(
{
"name": "Living Room",
"entities": members,
**extra_input,
},
)
await hass.async_block_till_done()
@ -59,6 +69,7 @@ async def test_config_flow(
"group_type": group_type,
"entities": members,
"name": "Living Room",
**extra_options,
}
assert len(mock_setup_entry.mock_calls) == 1
@ -68,11 +79,14 @@ async def test_config_flow(
"group_type": group_type,
"name": "Living Room",
"entities": members,
**extra_options,
}
state = hass.states.get(f"{group_type}.living_room")
assert state.state == group_state
assert state.attributes["entity_id"] == members
for key in extra_attrs:
assert state.attributes[key] == extra_attrs[key]
def get_suggested(schema, key):
@ -87,10 +101,18 @@ def get_suggested(schema, key):
@pytest.mark.parametrize(
"group_type,member_state",
(("cover", "open"), ("fan", "on"), ("light", "on"), ("media_player", "on")),
"group_type,member_state,extra_options",
(
("binary_sensor", "on", {"all": False}),
("cover", "open", {}),
("fan", "on", {}),
("light", "on", {}),
("media_player", "on", {}),
),
)
async def test_options(hass: HomeAssistant, group_type, member_state) -> None:
async def test_options(
hass: HomeAssistant, group_type, member_state, extra_options
) -> None:
"""Test reconfiguring."""
members1 = [f"{group_type}.one", f"{group_type}.two"]
members2 = [f"{group_type}.four", f"{group_type}.five"]
@ -138,6 +160,7 @@ async def test_options(hass: HomeAssistant, group_type, member_state) -> None:
"group_type": group_type,
"entities": members1,
"name": "Bed Room",
**extra_options,
}
result = await hass.config_entries.options.async_init(config_entry.entry_id)
@ -157,12 +180,14 @@ async def test_options(hass: HomeAssistant, group_type, member_state) -> None:
"group_type": group_type,
"entities": members2,
"name": "Bed Room",
**extra_options,
}
assert config_entry.data == {}
assert config_entry.options == {
"group_type": group_type,
"entities": members2,
"name": "Bed Room",
**extra_options,
}
assert config_entry.title == "Bed Room"