Skip to content

Commit 96bb67b

Browse files
authored
Z-Wave: ESPHome discovery to update all options (home-assistant#154113)
1 parent 929d76e commit 96bb67b

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

homeassistant/components/zwave_js/config_flow.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -956,6 +956,9 @@ async def async_step_finish_addon_setup_user(
956956
CONF_ADDON_LR_S2_AUTHENTICATED_KEY: self.lr_s2_authenticated_key,
957957
}
958958
)
959+
if self.restart_addon:
960+
manager = get_addon_manager(self.hass)
961+
await manager.async_stop_addon()
959962

960963
self._abort_if_unique_id_configured(
961964
updates={
@@ -1524,10 +1527,19 @@ async def async_step_esphome(
15241527
# And use the add-on
15251528
and existing_entry.data.get(CONF_USE_ADDON)
15261529
):
1530+
manager = get_addon_manager(self.hass)
15271531
await self._async_set_addon_config(
15281532
{CONF_ADDON_SOCKET: discovery_info.socket_path}
15291533
)
1530-
# Reloading will sync add-on options to config entry data
1534+
if self.restart_addon:
1535+
await manager.async_stop_addon()
1536+
self.hass.config_entries.async_update_entry(
1537+
existing_entry,
1538+
data={
1539+
**existing_entry.data,
1540+
CONF_SOCKET_PATH: discovery_info.socket_path,
1541+
},
1542+
)
15311543
self.hass.config_entries.async_schedule_reload(existing_entry.entry_id)
15321544
return self.async_abort(reason="already_configured")
15331545

tests/components/zwave_js/test_config_flow.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1287,11 +1287,12 @@ async def test_esphome_discovery_intent_custom(
12871287
assert len(mock_setup_entry.mock_calls) == 1
12881288

12891289

1290-
@pytest.mark.usefixtures("supervisor", "addon_installed", "addon_running", "addon_info")
1290+
@pytest.mark.usefixtures("supervisor", "addon_running", "addon_running", "addon_info")
12911291
async def test_esphome_discovery_intent_recommended(
12921292
hass: HomeAssistant,
12931293
set_addon_options: AsyncMock,
12941294
addon_options: dict,
1295+
stop_addon: AsyncMock,
12951296
) -> None:
12961297
"""Test ESPHome discovery success path."""
12971298
addon_options.update(
@@ -1359,15 +1360,18 @@ async def test_esphome_discovery_intent_recommended(
13591360
}
13601361
),
13611362
)
1363+
assert stop_addon.call_count == 1
1364+
assert stop_addon.call_args == call("core_zwave_js")
13621365
assert len(mock_setup.mock_calls) == 1
13631366
assert len(mock_setup_entry.mock_calls) == 1
13641367

13651368

1366-
@pytest.mark.usefixtures("supervisor", "addon_installed", "addon_info")
1369+
@pytest.mark.usefixtures("supervisor", "addon_running", "addon_info")
13671370
async def test_esphome_discovery_already_configured(
13681371
hass: HomeAssistant,
13691372
set_addon_options: AsyncMock,
13701373
addon_options: dict[str, Any],
1374+
stop_addon: AsyncMock,
13711375
) -> None:
13721376
"""Test ESPHome discovery success path."""
13731377
addon_options[CONF_ADDON_SOCKET] = "esphome://existing-device:6053"
@@ -1408,6 +1412,13 @@ async def test_esphome_discovery_already_configured(
14081412
}
14091413
),
14101414
)
1415+
assert entry.data == {
1416+
CONF_SOCKET_PATH: "esphome://192.168.1.100:6053",
1417+
"use_addon": True,
1418+
"integration_created_addon": True,
1419+
}
1420+
assert stop_addon.call_count == 1
1421+
assert stop_addon.call_args == call("core_zwave_js")
14111422

14121423

14131424
@pytest.mark.usefixtures("supervisor", "addon_not_installed", "addon_info")

0 commit comments

Comments
 (0)