Add FlowManager.async_has_matching_flow (#126804)
* Add FlowManager.async_flow_has_matching_flow * Revert changes from the future * Apply suggested changes to apple_tv config flow * Rename methods after discussion * Update homeassistant/data_entry_flow.py Co-authored-by: J. Nick Koston <nick@koston.org> * Move deduplication functions to config_entries, add tests * Adjust tests --------- Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
@@ -781,83 +781,6 @@ async def test_async_get_unknown_flow(manager: MockFlowManager) -> None:
|
||||
await manager.async_get("does_not_exist")
|
||||
|
||||
|
||||
async def test_async_has_matching_flow(
|
||||
hass: HomeAssistant, manager: MockFlowManager
|
||||
) -> None:
|
||||
"""Test we can check for matching flows."""
|
||||
manager.hass = hass
|
||||
assert (
|
||||
manager.async_has_matching_flow(
|
||||
"test",
|
||||
{"source": config_entries.SOURCE_HOMEKIT},
|
||||
{"properties": {"id": "aa:bb:cc:dd:ee:ff"}},
|
||||
)
|
||||
is False
|
||||
)
|
||||
|
||||
@manager.mock_reg_handler("test")
|
||||
class TestFlow(data_entry_flow.FlowHandler):
|
||||
VERSION = 5
|
||||
|
||||
async def async_step_init(self, user_input=None):
|
||||
return self.async_show_progress(
|
||||
step_id="init",
|
||||
progress_action="task_one",
|
||||
)
|
||||
|
||||
result = await manager.async_init(
|
||||
"test",
|
||||
context={"source": config_entries.SOURCE_HOMEKIT},
|
||||
data={"properties": {"id": "aa:bb:cc:dd:ee:ff"}},
|
||||
)
|
||||
assert result["type"] == data_entry_flow.FlowResultType.SHOW_PROGRESS
|
||||
assert result["progress_action"] == "task_one"
|
||||
assert len(manager.async_progress()) == 1
|
||||
assert len(manager.async_progress_by_handler("test")) == 1
|
||||
assert (
|
||||
len(
|
||||
manager.async_progress_by_handler(
|
||||
"test", match_context={"source": config_entries.SOURCE_HOMEKIT}
|
||||
)
|
||||
)
|
||||
== 1
|
||||
)
|
||||
assert (
|
||||
len(
|
||||
manager.async_progress_by_handler(
|
||||
"test", match_context={"source": config_entries.SOURCE_BLUETOOTH}
|
||||
)
|
||||
)
|
||||
== 0
|
||||
)
|
||||
assert manager.async_get(result["flow_id"])["handler"] == "test"
|
||||
|
||||
assert (
|
||||
manager.async_has_matching_flow(
|
||||
"test",
|
||||
{"source": config_entries.SOURCE_HOMEKIT},
|
||||
{"properties": {"id": "aa:bb:cc:dd:ee:ff"}},
|
||||
)
|
||||
is True
|
||||
)
|
||||
assert (
|
||||
manager.async_has_matching_flow(
|
||||
"test",
|
||||
{"source": config_entries.SOURCE_SSDP},
|
||||
{"properties": {"id": "aa:bb:cc:dd:ee:ff"}},
|
||||
)
|
||||
is False
|
||||
)
|
||||
assert (
|
||||
manager.async_has_matching_flow(
|
||||
"other",
|
||||
{"source": config_entries.SOURCE_HOMEKIT},
|
||||
{"properties": {"id": "aa:bb:cc:dd:ee:ff"}},
|
||||
)
|
||||
is False
|
||||
)
|
||||
|
||||
|
||||
async def test_move_to_unknown_step_raises_and_removes_from_in_progress(
|
||||
manager: MockFlowManager,
|
||||
) -> None:
|
||||
|
||||
Reference in New Issue
Block a user