mirror of
https://github.com/Electric-Special/ha-core.git
synced 2026-03-21 08:06:00 +01:00
Z-Wave: ESPHome discovery to update all options (#154113)
This commit is contained in:
@@ -956,6 +956,9 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
||||
CONF_ADDON_LR_S2_AUTHENTICATED_KEY: self.lr_s2_authenticated_key,
|
||||
}
|
||||
)
|
||||
if self.restart_addon:
|
||||
manager = get_addon_manager(self.hass)
|
||||
await manager.async_stop_addon()
|
||||
|
||||
self._abort_if_unique_id_configured(
|
||||
updates={
|
||||
@@ -1524,10 +1527,19 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
||||
# And use the add-on
|
||||
and existing_entry.data.get(CONF_USE_ADDON)
|
||||
):
|
||||
manager = get_addon_manager(self.hass)
|
||||
await self._async_set_addon_config(
|
||||
{CONF_ADDON_SOCKET: discovery_info.socket_path}
|
||||
)
|
||||
# Reloading will sync add-on options to config entry data
|
||||
if self.restart_addon:
|
||||
await manager.async_stop_addon()
|
||||
self.hass.config_entries.async_update_entry(
|
||||
existing_entry,
|
||||
data={
|
||||
**existing_entry.data,
|
||||
CONF_SOCKET_PATH: discovery_info.socket_path,
|
||||
},
|
||||
)
|
||||
self.hass.config_entries.async_schedule_reload(existing_entry.entry_id)
|
||||
return self.async_abort(reason="already_configured")
|
||||
|
||||
|
||||
@@ -1287,11 +1287,12 @@ async def test_esphome_discovery_intent_custom(
|
||||
assert len(mock_setup_entry.mock_calls) == 1
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("supervisor", "addon_installed", "addon_running", "addon_info")
|
||||
@pytest.mark.usefixtures("supervisor", "addon_running", "addon_running", "addon_info")
|
||||
async def test_esphome_discovery_intent_recommended(
|
||||
hass: HomeAssistant,
|
||||
set_addon_options: AsyncMock,
|
||||
addon_options: dict,
|
||||
stop_addon: AsyncMock,
|
||||
) -> None:
|
||||
"""Test ESPHome discovery success path."""
|
||||
addon_options.update(
|
||||
@@ -1359,15 +1360,18 @@ async def test_esphome_discovery_intent_recommended(
|
||||
}
|
||||
),
|
||||
)
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call("core_zwave_js")
|
||||
assert len(mock_setup.mock_calls) == 1
|
||||
assert len(mock_setup_entry.mock_calls) == 1
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("supervisor", "addon_installed", "addon_info")
|
||||
@pytest.mark.usefixtures("supervisor", "addon_running", "addon_info")
|
||||
async def test_esphome_discovery_already_configured(
|
||||
hass: HomeAssistant,
|
||||
set_addon_options: AsyncMock,
|
||||
addon_options: dict[str, Any],
|
||||
stop_addon: AsyncMock,
|
||||
) -> None:
|
||||
"""Test ESPHome discovery success path."""
|
||||
addon_options[CONF_ADDON_SOCKET] = "esphome://existing-device:6053"
|
||||
@@ -1408,6 +1412,13 @@ async def test_esphome_discovery_already_configured(
|
||||
}
|
||||
),
|
||||
)
|
||||
assert entry.data == {
|
||||
CONF_SOCKET_PATH: "esphome://192.168.1.100:6053",
|
||||
"use_addon": True,
|
||||
"integration_created_addon": True,
|
||||
}
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call("core_zwave_js")
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("supervisor", "addon_not_installed", "addon_info")
|
||||
|
||||
Reference in New Issue
Block a user