diff --git a/homeassistant/components/here_travel_time/config_flow.py b/homeassistant/components/here_travel_time/config_flow.py index bc6d57aa892..502eee68546 100644 --- a/homeassistant/components/here_travel_time/config_flow.py +++ b/homeassistant/components/here_travel_time/config_flow.py @@ -8,7 +8,13 @@ from herepy import HEREError, InvalidCredentialsError, RouteMode, RoutingApi import voluptuous as vol from homeassistant import config_entries -from homeassistant.const import CONF_API_KEY, CONF_MODE, CONF_NAME, CONF_UNIT_SYSTEM +from homeassistant.const import ( + CONF_API_KEY, + CONF_ENTITY_NAMESPACE, + CONF_MODE, + CONF_NAME, + CONF_UNIT_SYSTEM, +) from homeassistant.core import callback from homeassistant.data_entry_flow import FlowResult import homeassistant.helpers.config_validation as cv @@ -231,9 +237,7 @@ class HERETravelTimeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): ) return self.async_show_form(step_id="destination_entity", data_schema=schema) - async def async_step_import( - self, user_input: dict[str, Any] | None = None - ) -> FlowResult: + async def async_step_import(self, user_input: dict[str, Any]) -> FlowResult: """Import from configuration.yaml.""" options: dict[str, Any] = {} user_input, options = self._transform_import_input(user_input) @@ -249,39 +253,47 @@ class HERETravelTimeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): ) def _transform_import_input( - self, user_input + self, import_input: dict[str, Any] ) -> tuple[dict[str, Any], dict[str, Any]]: """Transform platform schema input to new model.""" options: dict[str, Any] = {} - if user_input.get(CONF_ORIGIN_LATITUDE) is not None: - user_input[CONF_ORIGIN_LATITUDE] = user_input.pop(CONF_ORIGIN_LATITUDE) - user_input[CONF_ORIGIN_LONGITUDE] = user_input.pop(CONF_ORIGIN_LONGITUDE) - else: - user_input[CONF_ORIGIN_ENTITY_ID] = user_input.pop(CONF_ORIGIN_ENTITY_ID) + user_input: dict[str, Any] = {} - if user_input.get(CONF_DESTINATION_LATITUDE) is not None: - user_input[CONF_DESTINATION_LATITUDE] = user_input.pop( - CONF_DESTINATION_LATITUDE - ) - user_input[CONF_DESTINATION_LONGITUDE] = user_input.pop( - CONF_DESTINATION_LONGITUDE - ) + if import_input.get(CONF_ORIGIN_LATITUDE) is not None: + user_input[CONF_ORIGIN_LATITUDE] = import_input[CONF_ORIGIN_LATITUDE] + user_input[CONF_ORIGIN_LONGITUDE] = import_input[CONF_ORIGIN_LONGITUDE] else: - user_input[CONF_DESTINATION_ENTITY_ID] = user_input.pop( + user_input[CONF_ORIGIN_ENTITY_ID] = import_input[CONF_ORIGIN_ENTITY_ID] + + if import_input.get(CONF_DESTINATION_LATITUDE) is not None: + user_input[CONF_DESTINATION_LATITUDE] = import_input[ + CONF_DESTINATION_LATITUDE + ] + user_input[CONF_DESTINATION_LONGITUDE] = import_input[ + CONF_DESTINATION_LONGITUDE + ] + else: + user_input[CONF_DESTINATION_ENTITY_ID] = import_input[ CONF_DESTINATION_ENTITY_ID - ) + ] + + user_input[CONF_API_KEY] = import_input[CONF_API_KEY] + user_input[CONF_MODE] = import_input[CONF_MODE] + user_input[CONF_NAME] = import_input[CONF_NAME] + if (namespace := import_input.get(CONF_ENTITY_NAMESPACE)) is not None: + user_input[CONF_NAME] = f"{namespace} {user_input[CONF_NAME]}" options[CONF_TRAFFIC_MODE] = ( TRAFFIC_MODE_ENABLED - if user_input.pop(CONF_TRAFFIC_MODE, False) + if import_input.get(CONF_TRAFFIC_MODE, False) else TRAFFIC_MODE_DISABLED ) - options[CONF_ROUTE_MODE] = user_input.pop(CONF_ROUTE_MODE) - options[CONF_UNIT_SYSTEM] = user_input.pop( + options[CONF_ROUTE_MODE] = import_input.get(CONF_ROUTE_MODE) + options[CONF_UNIT_SYSTEM] = import_input.get( CONF_UNIT_SYSTEM, self.hass.config.units.name ) - options[CONF_ARRIVAL_TIME] = user_input.pop(CONF_ARRIVAL, None) - options[CONF_DEPARTURE_TIME] = user_input.pop(CONF_DEPARTURE, None) + options[CONF_ARRIVAL_TIME] = import_input.get(CONF_ARRIVAL, None) + options[CONF_DEPARTURE_TIME] = import_input.get(CONF_DEPARTURE, None) return user_input, options diff --git a/tests/components/here_travel_time/test_config_flow.py b/tests/components/here_travel_time/test_config_flow.py index 105128c7cfb..350e1ae36f6 100644 --- a/tests/components/here_travel_time/test_config_flow.py +++ b/tests/components/here_travel_time/test_config_flow.py @@ -29,8 +29,10 @@ from homeassistant.components.here_travel_time.sensor import ( ) from homeassistant.const import ( CONF_API_KEY, + CONF_ENTITY_NAMESPACE, CONF_MODE, CONF_NAME, + CONF_SCAN_INTERVAL, CONF_UNIT_SYSTEM, CONF_UNIT_SYSTEM_IMPERIAL, CONF_UNIT_SYSTEM_METRIC, @@ -416,16 +418,18 @@ async def test_import_flow_entity_id(hass: HomeAssistant) -> None: CONF_ROUTE_MODE: ROUTE_MODE_FASTEST, CONF_UNIT_SYSTEM: CONF_UNIT_SYSTEM_IMPERIAL, CONF_TRAFFIC_MODE: TRAFFIC_MODE_ENABLED, + CONF_ENTITY_NAMESPACE: "namespace", + CONF_SCAN_INTERVAL: 2678400, }, ) await hass.async_block_till_done() assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY - assert result["title"] == "test_name" + assert result["title"] == "namespace test_name" entry = hass.config_entries.async_entries(DOMAIN)[0] assert entry.data == { - CONF_NAME: "test_name", + CONF_NAME: "namespace test_name", CONF_API_KEY: CONF_API_KEY, CONF_ORIGIN_ENTITY_ID: "sensor.origin", CONF_DESTINATION_ENTITY_ID: "sensor.destination",