"""Test Subaru sensors.""" from unittest.mock import patch from homeassistant.components.subaru.sensor import ( API_GEN_2_SENSORS, EV_SENSORS, SAFETY_SENSORS, ) from homeassistant.util import slugify from homeassistant.util.unit_system import US_CUSTOMARY_SYSTEM from .api_responses import ( EXPECTED_STATE_EV_IMPERIAL, EXPECTED_STATE_EV_METRIC, EXPECTED_STATE_EV_UNAVAILABLE, VEHICLE_STATUS_EV, ) from .conftest import ( MOCK_API_FETCH, MOCK_API_GET_DATA, TEST_DEVICE_NAME, advance_time_to_next_fetch, ) async def test_sensors_ev_imperial(hass, ev_entry): """Test sensors supporting imperial units.""" hass.config.units = US_CUSTOMARY_SYSTEM with patch(MOCK_API_FETCH), patch( MOCK_API_GET_DATA, return_value=VEHICLE_STATUS_EV ): advance_time_to_next_fetch(hass) await hass.async_block_till_done() _assert_data(hass, EXPECTED_STATE_EV_IMPERIAL) async def test_sensors_ev_metric(hass, ev_entry): """Test sensors supporting metric units.""" _assert_data(hass, EXPECTED_STATE_EV_METRIC) async def test_sensors_missing_vin_data(hass, ev_entry): """Test for missing VIN dataset.""" with patch(MOCK_API_FETCH), patch(MOCK_API_GET_DATA, return_value=None): advance_time_to_next_fetch(hass) await hass.async_block_till_done() _assert_data(hass, EXPECTED_STATE_EV_UNAVAILABLE) def _assert_data(hass, expected_state): sensor_list = EV_SENSORS sensor_list.extend(API_GEN_2_SENSORS) sensor_list.extend(SAFETY_SENSORS) expected_states = {} for item in sensor_list: expected_states[ f"sensor.{slugify(f'{TEST_DEVICE_NAME} {item.name}')}" ] = expected_state[item.key] for sensor, value in expected_states.items(): actual = hass.states.get(sensor) assert actual.state == value