Adjust distance unit check in here travel time (#80243)

* Adjust distance unit check in here travel time

* Add tests

* Use system compare

* Use is not ==
pull/80313/head
epenet 2022-10-14 12:22:48 +02:00 committed by GitHub
parent 02d0b8eef6
commit 4c8f8c2e61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 6 deletions

View File

@ -15,6 +15,8 @@ from homeassistant.const import (
CONF_MODE,
CONF_NAME,
CONF_UNIT_SYSTEM,
CONF_UNIT_SYSTEM_IMPERIAL,
CONF_UNIT_SYSTEM_METRIC,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.data_entry_flow import FlowResult
@ -24,6 +26,7 @@ from homeassistant.helpers.selector import (
LocationSelector,
TimeSelector,
)
from homeassistant.util.unit_system import IMPERIAL_SYSTEM
from .const import (
CONF_ARRIVAL_TIME,
@ -88,13 +91,16 @@ def get_user_step_schema(data: dict[str, Any]) -> vol.Schema:
def default_options(hass: HomeAssistant) -> dict[str, str | None]:
"""Get the default options."""
return {
default = {
CONF_TRAFFIC_MODE: TRAFFIC_MODE_ENABLED,
CONF_ROUTE_MODE: ROUTE_MODE_FASTEST,
CONF_ARRIVAL_TIME: None,
CONF_DEPARTURE_TIME: None,
CONF_UNIT_SYSTEM: hass.config.units.name,
CONF_UNIT_SYSTEM: CONF_UNIT_SYSTEM_METRIC,
}
if hass.config.units is IMPERIAL_SYSTEM:
default[CONF_UNIT_SYSTEM] = CONF_UNIT_SYSTEM_IMPERIAL
return default
class HERETravelTimeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
@ -255,24 +261,25 @@ class HERETravelTimeOptionsFlow(config_entries.OptionsFlow):
menu_options=["departure_time", "no_time"],
)
defaults = default_options(self.hass)
schema = vol.Schema(
{
vol.Optional(
CONF_TRAFFIC_MODE,
default=self.config_entry.options.get(
CONF_TRAFFIC_MODE, TRAFFIC_MODE_ENABLED
CONF_TRAFFIC_MODE, defaults[CONF_TRAFFIC_MODE]
),
): vol.In(TRAFFIC_MODES),
vol.Optional(
CONF_ROUTE_MODE,
default=self.config_entry.options.get(
CONF_ROUTE_MODE, ROUTE_MODE_FASTEST
CONF_ROUTE_MODE, defaults[CONF_ROUTE_MODE]
),
): vol.In(ROUTE_MODES),
vol.Optional(
CONF_UNIT_SYSTEM,
default=self.config_entry.options.get(
CONF_UNIT_SYSTEM, self.hass.config.units.name
CONF_UNIT_SYSTEM, defaults[CONF_UNIT_SYSTEM]
),
): vol.In(UNITS),
}

View File

@ -31,6 +31,7 @@ from homeassistant.const import (
CONF_UNIT_SYSTEM_METRIC,
)
from homeassistant.core import HomeAssistant
from homeassistant.util.unit_system import IMPERIAL_SYSTEM, METRIC_SYSTEM, UnitSystem
from .const import (
API_KEY,
@ -227,10 +228,21 @@ async def test_step_destination_coordinates(
@pytest.mark.usefixtures("valid_response")
@pytest.mark.parametrize(
"unit_system, expected_unit_option",
[
(METRIC_SYSTEM, CONF_UNIT_SYSTEM_METRIC),
(IMPERIAL_SYSTEM, CONF_UNIT_SYSTEM_IMPERIAL),
],
)
async def test_step_destination_entity(
hass: HomeAssistant, origin_step_result: data_entry_flow.FlowResult
hass: HomeAssistant,
origin_step_result: data_entry_flow.FlowResult,
unit_system: UnitSystem,
expected_unit_option: str,
) -> None:
"""Test the origin coordinates step."""
hass.config.units = unit_system
menu_result = await hass.config_entries.flow.async_configure(
origin_step_result["flow_id"], {"next_step_id": "destination_entity"}
)
@ -250,6 +262,13 @@ async def test_step_destination_entity(
CONF_DESTINATION_ENTITY_ID: "zone.home",
CONF_MODE: TRAVEL_MODE_CAR,
}
assert entry.options == {
CONF_UNIT_SYSTEM: expected_unit_option,
CONF_ROUTE_MODE: ROUTE_MODE_FASTEST,
CONF_TRAFFIC_MODE: TRAFFIC_MODE_ENABLED,
CONF_ARRIVAL_TIME: None,
CONF_DEPARTURE_TIME: None,
}
async def test_form_invalid_auth(hass: HomeAssistant) -> None: