From 4c6ab3921a7d0bac70f46feeab95a49e1b1291db Mon Sep 17 00:00:00 2001 From: Erik Montnemery <erik@montnemery.com> Date: Wed, 2 Oct 2024 19:59:44 +0200 Subject: [PATCH] Store modern_forms flow data in flow handler attributes (#127175) --- .../components/modern_forms/config_flow.py | 27 +++++++++---------- .../modern_forms/test_config_flow.py | 7 +++-- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/homeassistant/components/modern_forms/config_flow.py b/homeassistant/components/modern_forms/config_flow.py index c2b88d65a1b..dee08736234 100644 --- a/homeassistant/components/modern_forms/config_flow.py +++ b/homeassistant/components/modern_forms/config_flow.py @@ -20,6 +20,10 @@ class ModernFormsFlowHandler(ConfigFlow, domain=DOMAIN): VERSION = 1 + host: str | None = None + mac: str | None = None + name: str | None = None + async def async_step_user( self, user_input: dict[str, Any] | None = None ) -> ConfigFlowResult: @@ -33,14 +37,10 @@ class ModernFormsFlowHandler(ConfigFlow, domain=DOMAIN): host = discovery_info.hostname.rstrip(".") name, _ = host.rsplit(".") - self.context.update( - { - CONF_HOST: discovery_info.host, - CONF_NAME: name, - CONF_MAC: discovery_info.properties.get(CONF_MAC), - "title_placeholders": {"name": name}, - } - ) + self.context["title_placeholders"] = {"name": name} + self.host = discovery_info.host + self.mac = discovery_info.properties.get(CONF_MAC) + self.name = name # Prepare configuration flow return await self._handle_config_flow({}, True) @@ -55,7 +55,7 @@ class ModernFormsFlowHandler(ConfigFlow, domain=DOMAIN): self, user_input: dict[str, Any] | None = None, prepare: bool = False ) -> ConfigFlowResult: """Config flow handler for ModernForms.""" - source = self.context.get("source") + source = self.context["source"] # Request user input, unless we are preparing discovery flow if user_input is None: @@ -66,8 +66,8 @@ class ModernFormsFlowHandler(ConfigFlow, domain=DOMAIN): return self._show_setup_form() if source == SOURCE_ZEROCONF: - user_input[CONF_HOST] = self.context.get(CONF_HOST) - user_input[CONF_MAC] = self.context.get(CONF_MAC) + user_input[CONF_HOST] = self.host + user_input[CONF_MAC] = self.mac if user_input.get(CONF_MAC) is None or not prepare: session = async_get_clientsession(self.hass) @@ -87,7 +87,7 @@ class ModernFormsFlowHandler(ConfigFlow, domain=DOMAIN): title = device.info.device_name if source == SOURCE_ZEROCONF: - title = self.context.get(CONF_NAME) + title = self.name if prepare: return await self.async_step_zeroconf_confirm() @@ -107,9 +107,8 @@ class ModernFormsFlowHandler(ConfigFlow, domain=DOMAIN): def _show_confirm_dialog(self, errors: dict | None = None) -> ConfigFlowResult: """Show the confirm dialog to the user.""" - name = self.context.get(CONF_NAME) return self.async_show_form( step_id="zeroconf_confirm", - description_placeholders={"name": name}, + description_placeholders={"name": self.name}, errors=errors or {}, ) diff --git a/tests/components/modern_forms/test_config_flow.py b/tests/components/modern_forms/test_config_flow.py index 4c39f83f688..1484b5d5992 100644 --- a/tests/components/modern_forms/test_config_flow.py +++ b/tests/components/modern_forms/test_config_flow.py @@ -84,10 +84,9 @@ async def test_full_zeroconf_flow_implementation( assert result.get("step_id") == "zeroconf_confirm" assert result.get("type") is FlowResultType.FORM - flow = flows[0] - assert "context" in flow - assert flow["context"][CONF_HOST] == "192.168.1.123" - assert flow["context"][CONF_NAME] == "example" + flow = hass.config_entries.flow._progress[flows[0]["flow_id"]] + assert flow.host == "192.168.1.123" + assert flow.name == "example" result2 = await hass.config_entries.flow.async_configure( result["flow_id"], user_input={} -- GitLab