Improve and fix Airzone config flow (#70474)
This commit is contained in:
parent
7894326270
commit
8d71595f31
3 changed files with 9 additions and 26 deletions
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue