@@ -243,6 +243,23 @@ async def async_step_init(self, user_input=None):
243
243
assert len (manager .mock_created_entries ) == 0
244
244
245
245
246
+ async def test_abort_calls_async_flow_removed (manager : MockFlowManager ) -> None :
247
+ """Test abort calling the async_flow_removed FlowManager method."""
248
+
249
+ @manager .mock_reg_handler ("test" )
250
+ class TestFlow (data_entry_flow .FlowHandler ):
251
+ async def async_step_init (self , user_input = None ):
252
+ return self .async_abort (reason = "reason" )
253
+
254
+ manager .async_flow_removed = Mock ()
255
+ await manager .async_init ("test" )
256
+
257
+ manager .async_flow_removed .assert_called_once ()
258
+
259
+ assert len (manager .async_progress ()) == 0
260
+ assert len (manager .mock_created_entries ) == 0
261
+
262
+
246
263
async def test_abort_calls_async_remove_with_exception (
247
264
manager : MockFlowManager , caplog : pytest .LogCaptureFixture
248
265
) -> None :
@@ -288,13 +305,7 @@ async def async_step_init(self, user_input=None):
288
305
289
306
290
307
async def test_create_aborted_flow (manager : MockFlowManager ) -> None :
291
- """Test return create_entry from aborted flow.
292
-
293
- Note: The entry is created even if the flow is already aborted, then the
294
- flow raises an UnknownFlow exception. This behavior is not logical, and
295
- we should consider changing it to not create the entry if the flow is
296
- aborted.
297
- """
308
+ """Test return create_entry from aborted flow."""
298
309
299
310
@manager .mock_reg_handler ("test" )
300
311
class TestFlow (data_entry_flow .FlowHandler ):
@@ -308,14 +319,25 @@ async def async_step_init(self, user_input=None):
308
319
await manager .async_init ("test" )
309
320
assert len (manager .async_progress ()) == 0
310
321
311
- # The entry is created even if the flow is aborted
312
- assert len (manager .mock_created_entries ) == 1
322
+ # No entry should be created if the flow is aborted
323
+ assert len (manager .mock_created_entries ) == 0
313
324
314
- entry = manager .mock_created_entries [0 ]
315
- assert entry ["handler" ] == "test"
316
- assert entry ["title" ] == "Test Title"
317
- assert entry ["data" ] == "Test Data"
318
- assert entry ["source" ] is None
325
+
326
+ async def test_create_calls_async_flow_removed (manager : MockFlowManager ) -> None :
327
+ """Test create calling the async_flow_removed FlowManager method."""
328
+
329
+ @manager .mock_reg_handler ("test" )
330
+ class TestFlow (data_entry_flow .FlowHandler ):
331
+ async def async_step_init (self , user_input = None ):
332
+ return self .async_create_entry (title = "Test Title" , data = "Test Data" )
333
+
334
+ manager .async_flow_removed = Mock ()
335
+ await manager .async_init ("test" )
336
+
337
+ manager .async_flow_removed .assert_called_once ()
338
+
339
+ assert len (manager .async_progress ()) == 0
340
+ assert len (manager .mock_created_entries ) == 1
319
341
320
342
321
343
async def test_discovery_init_flow (manager : MockFlowManager ) -> None :
@@ -930,12 +952,34 @@ async def test_configure_raises_unknown_flow_if_not_in_progress(
930
952
await manager .async_configure ("wrong_flow_id" )
931
953
932
954
933
- async def test_abort_raises_unknown_flow_if_not_in_progress (
955
+ async def test_manager_abort_raises_unknown_flow_if_not_in_progress (
934
956
manager : MockFlowManager ,
935
957
) -> None :
936
958
"""Test abort raises UnknownFlow if the flow is not in progress."""
937
959
with pytest .raises (data_entry_flow .UnknownFlow ):
938
- await manager .async_abort ("wrong_flow_id" )
960
+ manager .async_abort ("wrong_flow_id" )
961
+
962
+
963
+ async def test_manager_abort_calls_async_flow_removed (manager : MockFlowManager ) -> None :
964
+ """Test abort calling the async_flow_removed FlowManager method."""
965
+
966
+ @manager .mock_reg_handler ("test" )
967
+ class TestFlow (data_entry_flow .FlowHandler ):
968
+ async def async_step_init (self , user_input = None ):
969
+ return self .async_show_form (step_id = "init" )
970
+
971
+ manager .async_flow_removed = Mock ()
972
+ result = await manager .async_init ("test" )
973
+ assert result ["type" ] == data_entry_flow .FlowResultType .FORM
974
+ assert result ["step_id" ] == "init"
975
+
976
+ manager .async_flow_removed .assert_not_called ()
977
+
978
+ manager .async_abort (result ["flow_id" ])
979
+ manager .async_flow_removed .assert_called_once ()
980
+
981
+ assert len (manager .async_progress ()) == 0
982
+ assert len (manager .mock_created_entries ) == 0
939
983
940
984
941
985
@pytest .mark .parametrize (
0 commit comments