Improve and fix Airzone config flow (#70474)

This commit is contained in:
Álvaro Fernández Rojas 2022-04-26 06:25:11 +02:00 committed by GitHub
parent 7894326270
commit 8d71595f31
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 26 deletions

View file

@ -21,10 +21,8 @@ CONFIG_SCHEMA = vol.Schema(
vol.Required(CONF_PORT, default=DEFAULT_PORT): int, vol.Required(CONF_PORT, default=DEFAULT_PORT): int,
} }
) )
SYSTEM_ID_SCHEMA = vol.Schema( SYSTEM_ID_SCHEMA = CONFIG_SCHEMA.extend(
{ {
vol.Required(CONF_HOST): str,
vol.Required(CONF_PORT, default=DEFAULT_PORT): int,
vol.Required(CONF_ID, default=1): int, vol.Required(CONF_ID, default=1): int,
} }
) )
@ -41,22 +39,14 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
errors = {} errors = {}
if user_input is not None: if user_input is not None:
system_id = user_input.get(CONF_ID, DEFAULT_SYSTEM_ID) self._async_abort_entries_match(user_input)
self._async_abort_entries_match(
{
CONF_HOST: user_input[CONF_HOST],
CONF_PORT: user_input[CONF_PORT],
CONF_ID: system_id,
}
)
airzone = AirzoneLocalApi( airzone = AirzoneLocalApi(
aiohttp_client.async_get_clientsession(self.hass), aiohttp_client.async_get_clientsession(self.hass),
ConnectionOptions( ConnectionOptions(
user_input[CONF_HOST], user_input[CONF_HOST],
user_input[CONF_PORT], user_input[CONF_PORT],
system_id, user_input.get(CONF_ID, DEFAULT_SYSTEM_ID),
), ),
) )
@ -64,7 +54,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
await airzone.validate() await airzone.validate()
except InvalidSystem: except InvalidSystem:
data_schema = SYSTEM_ID_SCHEMA data_schema = SYSTEM_ID_SCHEMA
errors["base"] = "invalid_system_id" errors[CONF_ID] = "invalid_system_id"
except AirzoneError: except AirzoneError:
errors["base"] = "cannot_connect" errors["base"] = "cannot_connect"
else: else:

View file

@ -16,7 +16,7 @@ from homeassistant.config_entries import SOURCE_USER, ConfigEntryState
from homeassistant.const import CONF_HOST, CONF_ID, CONF_PORT from homeassistant.const import CONF_HOST, CONF_ID, CONF_PORT
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from .util import CONFIG, CONFIG_ID1, CONFIG_NO_ID, HVAC_MOCK from .util import CONFIG, CONFIG_ID1, HVAC_MOCK
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -46,7 +46,7 @@ async def test_form(hass: HomeAssistant) -> None:
assert result["errors"] == {} assert result["errors"] == {}
result = await hass.config_entries.flow.async_configure( result = await hass.config_entries.flow.async_configure(
result["flow_id"], CONFIG_NO_ID result["flow_id"], CONFIG
) )
await hass.async_block_till_done() await hass.async_block_till_done()
@ -81,12 +81,12 @@ async def test_form_invalid_system_id(hass: HomeAssistant) -> None:
side_effect=InvalidMethod, side_effect=InvalidMethod,
): ):
result = await hass.config_entries.flow.async_init( result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}, data=CONFIG_NO_ID DOMAIN, context={"source": SOURCE_USER}, data=CONFIG
) )
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
assert result["step_id"] == SOURCE_USER assert result["step_id"] == SOURCE_USER
assert result["errors"] == {"base": "invalid_system_id"} assert result["errors"] == {CONF_ID: "invalid_system_id"}
mock_hvac.return_value = HVAC_MOCK[API_SYSTEMS][0] mock_hvac.return_value = HVAC_MOCK[API_SYSTEMS][0]
mock_hvac.side_effect = None mock_hvac.side_effect = None

View file

@ -39,17 +39,10 @@ from tests.common import MockConfigEntry
CONFIG = { CONFIG = {
CONF_HOST: "192.168.1.100", CONF_HOST: "192.168.1.100",
CONF_PORT: 3000, CONF_PORT: 3000,
CONF_ID: 0,
}
CONFIG_NO_ID = {
CONF_HOST: CONFIG[CONF_HOST],
CONF_PORT: CONFIG[CONF_PORT],
} }
CONFIG_ID1 = { CONFIG_ID1 = {
CONF_HOST: CONFIG[CONF_HOST], **CONFIG,
CONF_PORT: CONFIG[CONF_PORT],
CONF_ID: 1, CONF_ID: 1,
} }