Fix suggested values in openuv config flow (#82479)

* Fix suggested values in openuv config flow

* Don't use new helper
This commit is contained in:
epenet 2022-11-21 17:12:28 +01:00 committed by GitHub
parent 4b0b2ecc0e
commit 13c03d022b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 1 deletions

View file

@ -200,7 +200,7 @@ class OpenUvOptionsFlowHandler(config_entries.OptionsFlow):
CONF_TO_WINDOW, CONF_TO_WINDOW,
description={ description={
"suggested_value": self.entry.options.get( "suggested_value": self.entry.options.get(
CONF_FROM_WINDOW, DEFAULT_TO_WINDOW CONF_TO_WINDOW, DEFAULT_TO_WINDOW
) )
}, },
): vol.Coerce(float), ): vol.Coerce(float),

View file

@ -2,6 +2,7 @@
from unittest.mock import patch from unittest.mock import patch
from pyopenuv.errors import InvalidApiKeyError from pyopenuv.errors import InvalidApiKeyError
import voluptuous as vol
from homeassistant import data_entry_flow from homeassistant import data_entry_flow
from homeassistant.components.openuv import CONF_FROM_WINDOW, CONF_TO_WINDOW, DOMAIN from homeassistant.components.openuv import CONF_FROM_WINDOW, CONF_TO_WINDOW, DOMAIN
@ -36,6 +37,13 @@ async def test_invalid_api_key(hass, config):
assert result["errors"] == {CONF_API_KEY: "invalid_api_key"} assert result["errors"] == {CONF_API_KEY: "invalid_api_key"}
def _get_schema_marker(data_schema: vol.Schema, key: str) -> vol.Marker:
for k in data_schema.schema:
if k == key and isinstance(k, vol.Marker):
return k
return None
async def test_options_flow(hass, config_entry): async def test_options_flow(hass, config_entry):
"""Test config flow options.""" """Test config flow options."""
with patch("homeassistant.components.openuv.async_setup_entry", return_value=True): with patch("homeassistant.components.openuv.async_setup_entry", return_value=True):
@ -43,6 +51,13 @@ async def test_options_flow(hass, config_entry):
result = await hass.config_entries.options.async_init(config_entry.entry_id) result = await hass.config_entries.options.async_init(config_entry.entry_id)
assert result["type"] == data_entry_flow.FlowResultType.FORM assert result["type"] == data_entry_flow.FlowResultType.FORM
assert result["step_id"] == "init" assert result["step_id"] == "init"
# Original schema uses defaults for suggested values
assert _get_schema_marker(
result["data_schema"], CONF_FROM_WINDOW
).description == {"suggested_value": 3.5}
assert _get_schema_marker(
result["data_schema"], CONF_TO_WINDOW
).description == {"suggested_value": 3.5}
result = await hass.config_entries.options.async_configure( result = await hass.config_entries.options.async_configure(
result["flow_id"], user_input={CONF_FROM_WINDOW: 3.5, CONF_TO_WINDOW: 2.0} result["flow_id"], user_input={CONF_FROM_WINDOW: 3.5, CONF_TO_WINDOW: 2.0}
@ -50,6 +65,17 @@ async def test_options_flow(hass, config_entry):
assert result["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY assert result["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY
assert config_entry.options == {CONF_FROM_WINDOW: 3.5, CONF_TO_WINDOW: 2.0} assert config_entry.options == {CONF_FROM_WINDOW: 3.5, CONF_TO_WINDOW: 2.0}
# Subsequent schema uses previous input for suggested values
result = await hass.config_entries.options.async_init(config_entry.entry_id)
assert result["type"] == data_entry_flow.FlowResultType.FORM
assert result["step_id"] == "init"
assert _get_schema_marker(
result["data_schema"], CONF_FROM_WINDOW
).description == {"suggested_value": 3.5}
assert _get_schema_marker(
result["data_schema"], CONF_TO_WINDOW
).description == {"suggested_value": 2.0}
async def test_step_reauth(hass, config, config_entry, setup_openuv): async def test_step_reauth(hass, config, config_entry, setup_openuv):
"""Test that the reauth step works.""" """Test that the reauth step works."""