Add tests for config flow

This commit is contained in:
Jules 2024-01-08 20:20:31 +01:00
parent 90d4dd3a78
commit 2cca89f5ba
Signed by: jdejaegh
GPG key ID: 99D6D184CA66933A
3 changed files with 7 additions and 6 deletions

View file

@ -27,6 +27,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
await coordinator.async_config_entry_first_refresh() await coordinator.async_config_entry_first_refresh()
except ConfigEntryError: except ConfigEntryError:
# This happens when the zone is out of Benelux (no forecast available there) # This happens when the zone is out of Benelux (no forecast available there)
# This should be caught by the config flow anyway
return False return False
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)

View file

@ -39,11 +39,11 @@ class IrmKmiConfigFlow(ConfigFlow, domain=DOMAIN):
"""Define the user step of the configuration flow.""" """Define the user step of the configuration flow."""
errors = {} errors = {}
if user_input is not None: if user_input:
_LOGGER.debug(f"Provided config user is: {user_input}") _LOGGER.debug(f"Provided config user is: {user_input}")
if (zone := self.hass.states.get(user_input[CONF_ZONE])) is None: if (zone := self.hass.states.get(user_input[CONF_ZONE])) is None:
errors[CONF_ZONE] = 'Zone does not exist' errors[CONF_ZONE] = 'zone_not_exist'
# Check if zone is in Benelux # Check if zone is in Benelux
if not errors: if not errors:
@ -56,10 +56,10 @@ class IrmKmiConfigFlow(ConfigFlow, domain=DOMAIN):
'long': zone.attributes[ATTR_LONGITUDE]} 'long': zone.attributes[ATTR_LONGITUDE]}
) )
except Exception: except Exception:
errors['base'] = "Could not get data from the API" errors['base'] = "api_error"
if api_data.get('cityName', None) in OUT_OF_BENELUX: if api_data.get('cityName', None) in OUT_OF_BENELUX:
errors[CONF_ZONE] = 'Zone is outside of Benelux' errors[CONF_ZONE] = 'out_of_benelux'
if not errors: if not errors:
await self.async_set_unique_id(user_input[CONF_ZONE]) await self.async_set_unique_id(user_input[CONF_ZONE])
@ -77,6 +77,7 @@ class IrmKmiConfigFlow(ConfigFlow, domain=DOMAIN):
return self.async_show_form( return self.async_show_form(
step_id="user", step_id="user",
errors=errors, errors=errors,
description_placeholders={'zone': user_input.get('zone') if user_input is not None else None},
data_schema=vol.Schema({ data_schema=vol.Schema({
vol.Required(CONF_ZONE): vol.Required(CONF_ZONE):
EntitySelector(EntitySelectorConfig(domain=ZONE_DOMAIN)), EntitySelector(EntitySelectorConfig(domain=ZONE_DOMAIN)),

View file

@ -1,6 +1,5 @@
[tool:pytest] [tool:pytest]
testpaths = tests testpaths = tests
norecursedirs = .git norecursedirs = .git
addopts = addopts = -s -v
--cov=custom_components
asyncio_mode = auto asyncio_mode = auto