async def test_no_attribution(hass: HomeAssistant): """Test that an empty attribution is handled.""" entry = MockConfigEntry( domain=DOMAIN, unique_id="0123456789", data={ CONF_ORIGIN_LATITUDE: float(CAR_ORIGIN_LATITUDE), CONF_ORIGIN_LONGITUDE: float(CAR_ORIGIN_LONGITUDE), CONF_DESTINATION_LATITUDE: float(CAR_DESTINATION_LATITUDE), CONF_DESTINATION_LONGITUDE: float(CAR_DESTINATION_LONGITUDE), CONF_API_KEY: API_KEY, CONF_MODE: TRAVEL_MODE_TRUCK, CONF_NAME: "test", }, options=default_options(hass), ) entry.add_to_hass(hass) await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() hass.bus.async_fire(EVENT_HOMEASSISTANT_START) await hass.async_block_till_done() assert hass.states.get("sensor.test").attributes.get( ATTR_ATTRIBUTION) is None
async def test_circular_ref(hass: HomeAssistant, caplog): """Test that a circular ref is handled.""" hass.states.async_set( "test.first", "test.second", ) hass.states.async_set("test.second", "test.first") entry = MockConfigEntry( domain=DOMAIN, unique_id="0123456789", data={ CONF_ORIGIN_ENTITY_ID: "test.first", CONF_DESTINATION_LATITUDE: float(CAR_DESTINATION_LATITUDE), CONF_DESTINATION_LONGITUDE: float(CAR_DESTINATION_LONGITUDE), CONF_API_KEY: API_KEY, CONF_MODE: TRAVEL_MODE_TRUCK, CONF_NAME: "test", }, options=default_options(hass), ) entry.add_to_hass(hass) await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() hass.bus.async_fire(EVENT_HOMEASSISTANT_START) await hass.async_block_till_done() assert "No coordinatnes found for test.first" in caplog.text
async def test_route_not_found(hass: HomeAssistant, caplog): """Test that route not found error is correctly handled.""" with patch( "herepy.RoutingApi.public_transport_timetable", side_effect=NoRouteFoundError, ): entry = MockConfigEntry( domain=DOMAIN, unique_id="0123456789", data={ CONF_ORIGIN_LATITUDE: float(CAR_ORIGIN_LATITUDE), CONF_ORIGIN_LONGITUDE: float(CAR_ORIGIN_LONGITUDE), CONF_DESTINATION_LATITUDE: float(CAR_DESTINATION_LATITUDE), CONF_DESTINATION_LONGITUDE: float(CAR_DESTINATION_LONGITUDE), CONF_API_KEY: API_KEY, CONF_MODE: TRAVEL_MODE_TRUCK, CONF_NAME: "test", }, options=default_options(hass), ) entry.add_to_hass(hass) await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() hass.bus.async_fire(EVENT_HOMEASSISTANT_START) await hass.async_block_till_done() assert NO_ROUTE_ERROR_MESSAGE in caplog.text
async def test_invalid_origin_entity_state(hass: HomeAssistant, caplog): """Test that an invalid state of the origin_entity_id is caught.""" hass.states.async_set( "device_tracker.test", "test_state", ) entry = MockConfigEntry( domain=DOMAIN, unique_id="0123456789", data={ CONF_ORIGIN_ENTITY_ID: "device_tracker.test", CONF_DESTINATION_LATITUDE: float(CAR_DESTINATION_LATITUDE), CONF_DESTINATION_LONGITUDE: float(CAR_DESTINATION_LONGITUDE), CONF_API_KEY: API_KEY, CONF_MODE: TRAVEL_MODE_TRUCK, CONF_NAME: "test", }, options=default_options(hass), ) entry.add_to_hass(hass) await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() hass.bus.async_fire(EVENT_HOMEASSISTANT_START) await hass.async_block_till_done() assert "test_state are not valid coordinates" in caplog.text
async def test_entity_ids(hass: HomeAssistant, valid_response: MagicMock): """Test that origin/destination supplied by entities works.""" zone_config = { "zone": [ { "name": "Origin", "latitude": CAR_ORIGIN_LATITUDE, "longitude": CAR_ORIGIN_LONGITUDE, "radius": 250, "passive": False, }, ] } assert await async_setup_component(hass, "zone", zone_config) hass.states.async_set( "device_tracker.test", "not_home", { "latitude": float(CAR_DESTINATION_LATITUDE), "longitude": float(CAR_DESTINATION_LONGITUDE), }, ) entry = MockConfigEntry( domain=DOMAIN, unique_id="0123456789", data={ CONF_ORIGIN_ENTITY_ID: "zone.origin", CONF_DESTINATION_ENTITY_ID: "device_tracker.test", CONF_API_KEY: API_KEY, CONF_MODE: TRAVEL_MODE_TRUCK, CONF_NAME: "test", }, options=default_options(hass), ) entry.add_to_hass(hass) await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() hass.bus.async_fire(EVENT_HOMEASSISTANT_START) await hass.async_block_till_done() sensor = hass.states.get("sensor.test") assert sensor.attributes.get(ATTR_DISTANCE) == 23.903 valid_response.assert_called_with( [CAR_ORIGIN_LATITUDE, CAR_ORIGIN_LONGITUDE], [CAR_DESTINATION_LATITUDE, CAR_DESTINATION_LONGITUDE], True, [ RouteMode[ROUTE_MODE_FASTEST], RouteMode[TRAVEL_MODE_TRUCK], RouteMode[TRAFFIC_MODE_ENABLED], ], arrival=None, departure="now", )
async def test_unload_entry(hass: HomeAssistant) -> None: """Test that unloading an entry works.""" entry = MockConfigEntry( domain=DOMAIN, unique_id="0123456789", data={ CONF_ORIGIN_LATITUDE: float(CAR_ORIGIN_LATITUDE), CONF_ORIGIN_LONGITUDE: float(CAR_ORIGIN_LONGITUDE), CONF_DESTINATION_LATITUDE: float(CAR_DESTINATION_LATITUDE), CONF_DESTINATION_LONGITUDE: float(CAR_DESTINATION_LONGITUDE), CONF_API_KEY: API_KEY, CONF_MODE: TRAVEL_MODE_CAR, CONF_NAME: "test", }, options=default_options(hass), ) entry.add_to_hass(hass) await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() assert await hass.config_entries.async_unload(entry.entry_id) assert not hass.data[DOMAIN]