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:
parent
e5523ef6b6
commit
5ae48bcf74
8 changed files with 137 additions and 60 deletions
|
@ -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"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue