Improve Z-Wave config flow tests (#144871)

* Improve Z-Wave config flow tests

* Fix test

* Use identify check for result type
This commit is contained in:
Martin Hjelmare 2025-05-14 13:08:26 +02:00 committed by GitHub
parent 4f723232e3
commit e89333811e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -924,15 +924,15 @@ async def test_usb_discovery_migration(
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "intent_migrate" assert result["step_id"] == "intent_migrate"
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "backup_nvm" assert result["step_id"] == "backup_nvm"
with patch("pathlib.Path.write_bytes", MagicMock()) as mock_file: with patch("pathlib.Path.write_bytes") as mock_file:
await hass.async_block_till_done() await hass.async_block_till_done()
assert client.driver.controller.async_backup_nvm_raw.call_count == 1 assert client.driver.controller.async_backup_nvm_raw.call_count == 1
assert mock_file.call_count == 1 assert mock_file.call_count == 1
@ -942,13 +942,13 @@ async def test_usb_discovery_migration(
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "instruct_unplug" assert result["step_id"] == "instruct_unplug"
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert entry.state is config_entries.ConfigEntryState.NOT_LOADED assert entry.state is config_entries.ConfigEntryState.NOT_LOADED
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "start_addon" assert result["step_id"] == "start_addon"
assert set_addon_options.call_args == call( assert set_addon_options.call_args == call(
"core_zwave_js", AddonsOptions(config={"device": USB_DISCOVERY_INFO.device}) "core_zwave_js", AddonsOptions(config={"device": USB_DISCOVERY_INFO.device})
@ -960,7 +960,7 @@ async def test_usb_discovery_migration(
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "restore_nvm" assert result["step_id"] == "restore_nvm"
assert client.connect.call_count == 2 assert client.connect.call_count == 2
@ -1058,15 +1058,15 @@ async def test_usb_discovery_migration_driver_ready_timeout(
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "intent_migrate" assert result["step_id"] == "intent_migrate"
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "backup_nvm" assert result["step_id"] == "backup_nvm"
with patch("pathlib.Path.write_bytes", MagicMock()) as mock_file: with patch("pathlib.Path.write_bytes") as mock_file:
await hass.async_block_till_done() await hass.async_block_till_done()
assert client.driver.controller.async_backup_nvm_raw.call_count == 1 assert client.driver.controller.async_backup_nvm_raw.call_count == 1
assert mock_file.call_count == 1 assert mock_file.call_count == 1
@ -1076,13 +1076,13 @@ async def test_usb_discovery_migration_driver_ready_timeout(
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "instruct_unplug" assert result["step_id"] == "instruct_unplug"
assert entry.state is config_entries.ConfigEntryState.NOT_LOADED assert entry.state is config_entries.ConfigEntryState.NOT_LOADED
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "start_addon" assert result["step_id"] == "start_addon"
assert set_addon_options.call_args == call( assert set_addon_options.call_args == call(
"core_zwave_js", AddonsOptions(config={"device": USB_DISCOVERY_INFO.device}) "core_zwave_js", AddonsOptions(config={"device": USB_DISCOVERY_INFO.device})
@ -1094,7 +1094,7 @@ async def test_usb_discovery_migration_driver_ready_timeout(
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "restore_nvm" assert result["step_id"] == "restore_nvm"
assert client.connect.call_count == 2 assert client.connect.call_count == 2
@ -3718,22 +3718,22 @@ async def test_reconfigure_migrate_with_addon(
result = await entry.start_reconfigure_flow(hass) result = await entry.start_reconfigure_flow(hass)
assert result["type"] == FlowResultType.MENU assert result["type"] is FlowResultType.MENU
assert result["step_id"] == "reconfigure" assert result["step_id"] == "reconfigure"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"next_step_id": "intent_migrate"} result["flow_id"], {"next_step_id": "intent_migrate"}
) )
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "intent_migrate" assert result["step_id"] == "intent_migrate"
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "backup_nvm" assert result["step_id"] == "backup_nvm"
with patch("pathlib.Path.write_bytes", MagicMock()) as mock_file: with patch("pathlib.Path.write_bytes") as mock_file:
await hass.async_block_till_done() await hass.async_block_till_done()
assert client.driver.controller.async_backup_nvm_raw.call_count == 1 assert client.driver.controller.async_backup_nvm_raw.call_count == 1
assert mock_file.call_count == 1 assert mock_file.call_count == 1
@ -3743,13 +3743,13 @@ async def test_reconfigure_migrate_with_addon(
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "instruct_unplug" assert result["step_id"] == "instruct_unplug"
assert entry.state is config_entries.ConfigEntryState.NOT_LOADED assert entry.state is config_entries.ConfigEntryState.NOT_LOADED
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "choose_serial_port" assert result["step_id"] == "choose_serial_port"
assert result["data_schema"].schema[CONF_USB_PATH] assert result["data_schema"].schema[CONF_USB_PATH]
@ -3760,7 +3760,7 @@ async def test_reconfigure_migrate_with_addon(
}, },
) )
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "start_addon" assert result["step_id"] == "start_addon"
assert set_addon_options.call_args == call( assert set_addon_options.call_args == call(
"core_zwave_js", AddonsOptions(config={"device": "/test"}) "core_zwave_js", AddonsOptions(config={"device": "/test"})
@ -3772,7 +3772,7 @@ async def test_reconfigure_migrate_with_addon(
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "restore_nvm" assert result["step_id"] == "restore_nvm"
assert client.connect.call_count == 2 assert client.connect.call_count == 2
@ -3860,22 +3860,22 @@ async def test_reconfigure_migrate_driver_ready_timeout(
result = await entry.start_reconfigure_flow(hass) result = await entry.start_reconfigure_flow(hass)
assert result["type"] == FlowResultType.MENU assert result["type"] is FlowResultType.MENU
assert result["step_id"] == "reconfigure" assert result["step_id"] == "reconfigure"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"next_step_id": "intent_migrate"} result["flow_id"], {"next_step_id": "intent_migrate"}
) )
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "intent_migrate" assert result["step_id"] == "intent_migrate"
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "backup_nvm" assert result["step_id"] == "backup_nvm"
with patch("pathlib.Path.write_bytes", MagicMock()) as mock_file: with patch("pathlib.Path.write_bytes") as mock_file:
await hass.async_block_till_done() await hass.async_block_till_done()
assert client.driver.controller.async_backup_nvm_raw.call_count == 1 assert client.driver.controller.async_backup_nvm_raw.call_count == 1
assert mock_file.call_count == 1 assert mock_file.call_count == 1
@ -3885,13 +3885,13 @@ async def test_reconfigure_migrate_driver_ready_timeout(
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "instruct_unplug" assert result["step_id"] == "instruct_unplug"
assert entry.state is config_entries.ConfigEntryState.NOT_LOADED assert entry.state is config_entries.ConfigEntryState.NOT_LOADED
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "choose_serial_port" assert result["step_id"] == "choose_serial_port"
assert result["data_schema"].schema[CONF_USB_PATH] assert result["data_schema"].schema[CONF_USB_PATH]
@ -3902,7 +3902,7 @@ async def test_reconfigure_migrate_driver_ready_timeout(
}, },
) )
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "start_addon" assert result["step_id"] == "start_addon"
assert set_addon_options.call_args == call( assert set_addon_options.call_args == call(
"core_zwave_js", AddonsOptions(config={"device": "/test"}) "core_zwave_js", AddonsOptions(config={"device": "/test"})
@ -3914,7 +3914,7 @@ async def test_reconfigure_migrate_driver_ready_timeout(
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "restore_nvm" assert result["step_id"] == "restore_nvm"
assert client.connect.call_count == 2 assert client.connect.call_count == 2
@ -3950,19 +3950,19 @@ async def test_reconfigure_migrate_backup_failure(
result = await entry.start_reconfigure_flow(hass) result = await entry.start_reconfigure_flow(hass)
assert result["type"] == FlowResultType.MENU assert result["type"] is FlowResultType.MENU
assert result["step_id"] == "reconfigure" assert result["step_id"] == "reconfigure"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"next_step_id": "intent_migrate"} result["flow_id"], {"next_step_id": "intent_migrate"}
) )
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "intent_migrate" assert result["step_id"] == "intent_migrate"
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.ABORT assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "backup_failed" assert result["reason"] == "backup_failed"
@ -3985,30 +3985,28 @@ async def test_reconfigure_migrate_backup_file_failure(
result = await entry.start_reconfigure_flow(hass) result = await entry.start_reconfigure_flow(hass)
assert result["type"] == FlowResultType.MENU assert result["type"] is FlowResultType.MENU
assert result["step_id"] == "reconfigure" assert result["step_id"] == "reconfigure"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"next_step_id": "intent_migrate"} result["flow_id"], {"next_step_id": "intent_migrate"}
) )
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "intent_migrate" assert result["step_id"] == "intent_migrate"
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "backup_nvm" assert result["step_id"] == "backup_nvm"
with patch( with patch("pathlib.Path.write_bytes", side_effect=OSError("test_error")):
"pathlib.Path.write_bytes", MagicMock(side_effect=OSError("test_error"))
):
await hass.async_block_till_done() await hass.async_block_till_done()
assert client.driver.controller.async_backup_nvm_raw.call_count == 1 assert client.driver.controller.async_backup_nvm_raw.call_count == 1
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.ABORT assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "backup_failed" assert result["reason"] == "backup_failed"
@ -4053,35 +4051,35 @@ async def test_reconfigure_migrate_start_addon_failure(
result = await entry.start_reconfigure_flow(hass) result = await entry.start_reconfigure_flow(hass)
assert result["type"] == FlowResultType.MENU assert result["type"] is FlowResultType.MENU
assert result["step_id"] == "reconfigure" assert result["step_id"] == "reconfigure"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"next_step_id": "intent_migrate"} result["flow_id"], {"next_step_id": "intent_migrate"}
) )
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "intent_migrate" assert result["step_id"] == "intent_migrate"
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "backup_nvm" assert result["step_id"] == "backup_nvm"
with patch("pathlib.Path.write_bytes", MagicMock()) as mock_file: with patch("pathlib.Path.write_bytes") as mock_file:
await hass.async_block_till_done() await hass.async_block_till_done()
assert client.driver.controller.async_backup_nvm_raw.call_count == 1 assert client.driver.controller.async_backup_nvm_raw.call_count == 1
assert mock_file.call_count == 1 assert mock_file.call_count == 1
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "instruct_unplug" assert result["step_id"] == "instruct_unplug"
assert entry.state is config_entries.ConfigEntryState.NOT_LOADED assert entry.state is config_entries.ConfigEntryState.NOT_LOADED
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "choose_serial_port" assert result["step_id"] == "choose_serial_port"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
@ -4096,13 +4094,13 @@ async def test_reconfigure_migrate_start_addon_failure(
"core_zwave_js", AddonsOptions(config={"device": "/test"}) "core_zwave_js", AddonsOptions(config={"device": "/test"})
) )
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "start_addon" assert result["step_id"] == "start_addon"
await hass.async_block_till_done() await hass.async_block_till_done()
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.ABORT assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "addon_start_failed" assert result["reason"] == "addon_start_failed"
@ -4148,35 +4146,35 @@ async def test_reconfigure_migrate_restore_failure(
result = await entry.start_reconfigure_flow(hass) result = await entry.start_reconfigure_flow(hass)
assert result["type"] == FlowResultType.MENU assert result["type"] is FlowResultType.MENU
assert result["step_id"] == "reconfigure" assert result["step_id"] == "reconfigure"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"next_step_id": "intent_migrate"} result["flow_id"], {"next_step_id": "intent_migrate"}
) )
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "intent_migrate" assert result["step_id"] == "intent_migrate"
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "backup_nvm" assert result["step_id"] == "backup_nvm"
with patch("pathlib.Path.write_bytes", MagicMock()) as mock_file: with patch("pathlib.Path.write_bytes") as mock_file:
await hass.async_block_till_done() await hass.async_block_till_done()
assert client.driver.controller.async_backup_nvm_raw.call_count == 1 assert client.driver.controller.async_backup_nvm_raw.call_count == 1
assert mock_file.call_count == 1 assert mock_file.call_count == 1
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "instruct_unplug" assert result["step_id"] == "instruct_unplug"
assert entry.state is config_entries.ConfigEntryState.NOT_LOADED assert entry.state is config_entries.ConfigEntryState.NOT_LOADED
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "choose_serial_port" assert result["step_id"] == "choose_serial_port"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
@ -4186,13 +4184,13 @@ async def test_reconfigure_migrate_restore_failure(
}, },
) )
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "start_addon" assert result["step_id"] == "start_addon"
await hass.async_block_till_done() await hass.async_block_till_done()
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "restore_nvm" assert result["step_id"] == "restore_nvm"
await hass.async_block_till_done() await hass.async_block_till_done()
@ -4201,13 +4199,13 @@ async def test_reconfigure_migrate_restore_failure(
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "restore_failed" assert result["step_id"] == "restore_failed"
assert result["description_placeholders"]["file_path"] assert result["description_placeholders"]["file_path"]
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "restore_nvm" assert result["step_id"] == "restore_nvm"
await hass.async_block_till_done() await hass.async_block_till_done()
@ -4216,7 +4214,7 @@ async def test_reconfigure_migrate_restore_failure(
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "restore_failed" assert result["step_id"] == "restore_failed"
hass.config_entries.flow.async_abort(result["flow_id"]) hass.config_entries.flow.async_abort(result["flow_id"])
@ -4224,29 +4222,77 @@ async def test_reconfigure_migrate_restore_failure(
assert len(hass.config_entries.flow.async_progress()) == 0 assert len(hass.config_entries.flow.async_progress()) == 0
async def test_get_driver_failure(hass: HomeAssistant, integration, client) -> None: async def test_get_driver_failure_intent_migrate(
"""Test get driver failure.""" hass: HomeAssistant,
integration: MockConfigEntry,
) -> None:
"""Test get driver failure in intent migrate step."""
entry = integration entry = integration
hass.config_entries.async_update_entry( hass.config_entries.async_update_entry(
integration, unique_id="1234", data={**integration.data, "use_addon": True} integration, unique_id="1234", data={**integration.data, "use_addon": True}
) )
result = await entry.start_reconfigure_flow(hass) result = await entry.start_reconfigure_flow(hass)
assert result["type"] == FlowResultType.MENU assert result["type"] is FlowResultType.MENU
assert result["step_id"] == "reconfigure"
await hass.config_entries.async_unload(integration.entry_id)
result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"next_step_id": "intent_migrate"}
)
assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "config_entry_not_loaded"
async def test_get_driver_failure_instruct_unplug(
hass: HomeAssistant,
client: MagicMock,
integration: MockConfigEntry,
) -> None:
"""Test get driver failure in instruct unplug step."""
async def mock_backup_nvm_raw():
await asyncio.sleep(0)
client.driver.controller.emit(
"nvm backup progress", {"bytesRead": 100, "total": 200}
)
return b"test_nvm_data"
client.driver.controller.async_backup_nvm_raw = AsyncMock(
side_effect=mock_backup_nvm_raw
)
entry = integration
hass.config_entries.async_update_entry(
integration, unique_id="1234", data={**integration.data, "use_addon": True}
)
result = await entry.start_reconfigure_flow(hass)
assert result["type"] is FlowResultType.MENU
assert result["step_id"] == "reconfigure" assert result["step_id"] == "reconfigure"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"next_step_id": "intent_migrate"} result["flow_id"], {"next_step_id": "intent_migrate"}
) )
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "intent_migrate" assert result["step_id"] == "intent_migrate"
await hass.config_entries.async_unload(integration.entry_id)
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.ABORT assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["reason"] == "config_entry_not_loaded" assert result["step_id"] == "backup_nvm"
with patch("pathlib.Path.write_bytes") as mock_file:
await hass.async_block_till_done()
assert client.driver.controller.async_backup_nvm_raw.call_count == 1
assert mock_file.call_count == 1
await hass.config_entries.async_unload(integration.entry_id)
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "reset_failed"
async def test_hard_reset_failure(hass: HomeAssistant, integration, client) -> None: async def test_hard_reset_failure(hass: HomeAssistant, integration, client) -> None:
@ -4269,29 +4315,29 @@ async def test_hard_reset_failure(hass: HomeAssistant, integration, client) -> N
result = await entry.start_reconfigure_flow(hass) result = await entry.start_reconfigure_flow(hass)
assert result["type"] == FlowResultType.MENU assert result["type"] is FlowResultType.MENU
assert result["step_id"] == "reconfigure" assert result["step_id"] == "reconfigure"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"next_step_id": "intent_migrate"} result["flow_id"], {"next_step_id": "intent_migrate"}
) )
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "intent_migrate" assert result["step_id"] == "intent_migrate"
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "backup_nvm" assert result["step_id"] == "backup_nvm"
with patch("pathlib.Path.write_bytes", MagicMock()) as mock_file: with patch("pathlib.Path.write_bytes") as mock_file:
await hass.async_block_till_done() await hass.async_block_till_done()
assert client.driver.controller.async_backup_nvm_raw.call_count == 1 assert client.driver.controller.async_backup_nvm_raw.call_count == 1
assert mock_file.call_count == 1 assert mock_file.call_count == 1
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.ABORT assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "reset_failed" assert result["reason"] == "reset_failed"
@ -4314,29 +4360,29 @@ async def test_choose_serial_port_usb_ports_failure(
result = await entry.start_reconfigure_flow(hass) result = await entry.start_reconfigure_flow(hass)
assert result["type"] == FlowResultType.MENU assert result["type"] is FlowResultType.MENU
assert result["step_id"] == "reconfigure" assert result["step_id"] == "reconfigure"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"next_step_id": "intent_migrate"} result["flow_id"], {"next_step_id": "intent_migrate"}
) )
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "intent_migrate" assert result["step_id"] == "intent_migrate"
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.SHOW_PROGRESS assert result["type"] is FlowResultType.SHOW_PROGRESS
assert result["step_id"] == "backup_nvm" assert result["step_id"] == "backup_nvm"
with patch("pathlib.Path.write_bytes", MagicMock()) as mock_file: with patch("pathlib.Path.write_bytes") as mock_file:
await hass.async_block_till_done() await hass.async_block_till_done()
assert client.driver.controller.async_backup_nvm_raw.call_count == 1 assert client.driver.controller.async_backup_nvm_raw.call_count == 1
assert mock_file.call_count == 1 assert mock_file.call_count == 1
result = await hass.config_entries.flow.async_configure(result["flow_id"]) result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "instruct_unplug" assert result["step_id"] == "instruct_unplug"
assert entry.state is config_entries.ConfigEntryState.NOT_LOADED assert entry.state is config_entries.ConfigEntryState.NOT_LOADED
@ -4345,7 +4391,7 @@ async def test_choose_serial_port_usb_ports_failure(
side_effect=OSError("test_error"), side_effect=OSError("test_error"),
): ):
result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert result["type"] == FlowResultType.ABORT assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "usb_ports_failed" assert result["reason"] == "usb_ports_failed"
@ -4356,14 +4402,14 @@ async def test_configure_addon_usb_ports_failure(
entry = integration entry = integration
result = await entry.start_reconfigure_flow(hass) result = await entry.start_reconfigure_flow(hass)
assert result["type"] == FlowResultType.MENU assert result["type"] is FlowResultType.MENU
assert result["step_id"] == "reconfigure" assert result["step_id"] == "reconfigure"
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"next_step_id": "intent_reconfigure"} result["flow_id"], {"next_step_id": "intent_reconfigure"}
) )
assert result["type"] == FlowResultType.FORM assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "on_supervisor_reconfigure" assert result["step_id"] == "on_supervisor_reconfigure"
with patch( with patch(
@ -4373,5 +4419,5 @@ async def test_configure_addon_usb_ports_failure(
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], {"use_addon": True} result["flow_id"], {"use_addon": True}
) )
assert result["type"] == FlowResultType.ABORT assert result["type"] is FlowResultType.ABORT
assert result["reason"] == "usb_ports_failed" assert result["reason"] == "usb_ports_failed"