Add tests of behavior when completing an aborted data entry flow (#142590)

This commit is contained in:
Erik Montnemery 2025-04-09 15:17:54 +02:00 committed by GitHub
parent e7c2e86c93
commit 075a0ad780
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -210,6 +210,21 @@ async def test_abort_removes_instance(manager: MockFlowManager) -> None:
assert len(manager.mock_created_entries) == 0
async def test_abort_aborted_flow(manager: MockFlowManager) -> None:
"""Test return abort from aborted flow."""
@manager.mock_reg_handler("test")
class TestFlow(data_entry_flow.FlowHandler):
async def async_step_init(self, user_input=None):
manager.async_abort(self.flow_id)
return self.async_abort(reason="blah")
with pytest.raises(data_entry_flow.UnknownFlow):
await manager.async_init("test")
assert len(manager.async_progress()) == 0
assert len(manager.mock_created_entries) == 0
async def test_abort_calls_async_remove(manager: MockFlowManager) -> None:
"""Test abort calling the async_remove FlowHandler method."""
@ -272,6 +287,37 @@ async def test_create_saves_data(manager: MockFlowManager) -> None:
assert entry["source"] is None
async def test_create_aborted_flow(manager: MockFlowManager) -> None:
"""Test return create_entry from aborted flow.
Note: The entry is created even if the flow is already aborted, then the
flow raises an UnknownFlow exception. This behavior is not logical, and
we should consider changing it to not create the entry if the flow is
aborted.
"""
@manager.mock_reg_handler("test")
class TestFlow(data_entry_flow.FlowHandler):
VERSION = 5
async def async_step_init(self, user_input=None):
manager.async_abort(self.flow_id)
return self.async_create_entry(title="Test Title", data="Test Data")
with pytest.raises(data_entry_flow.UnknownFlow):
await manager.async_init("test")
assert len(manager.async_progress()) == 0
# The entry is created even if the flow is aborted
assert len(manager.mock_created_entries) == 1
entry = manager.mock_created_entries[0]
assert entry["handler"] == "test"
assert entry["title"] == "Test Title"
assert entry["data"] == "Test Data"
assert entry["source"] is None
async def test_discovery_init_flow(manager: MockFlowManager) -> None:
"""Test a flow initialized by discovery."""