From 94c7f7bbb78dc560b8a46284ff903cdfa1f49fbd Mon Sep 17 00:00:00 2001 From: IceBotYT <34712694+IceBotYT@users.noreply.github.com> Date: Mon, 23 Jan 2023 19:11:07 -0500 Subject: [PATCH] Add 3 new fields to LaCrosse View (#86356) * Add BarometricPressure, FeelsLike, and WindChill * Improve test coverage --- .../components/lacrosse_view/sensor.py | 25 +++++++++++++++++++ tests/components/lacrosse_view/__init__.py | 11 ++++++++ tests/components/lacrosse_view/test_sensor.py | 21 ++++++++++++++++ 3 files changed, 57 insertions(+) diff --git a/homeassistant/components/lacrosse_view/sensor.py b/homeassistant/components/lacrosse_view/sensor.py index bb1ac7282be..1c2daa2ba4a 100644 --- a/homeassistant/components/lacrosse_view/sensor.py +++ b/homeassistant/components/lacrosse_view/sensor.py @@ -17,6 +17,7 @@ from homeassistant.const import ( DEGREE, PERCENTAGE, UnitOfPrecipitationDepth, + UnitOfPressure, UnitOfSpeed, UnitOfTemperature, ) @@ -115,6 +116,30 @@ SENSOR_DESCRIPTIONS = { name="Flex", value_fn=get_value, ), + "BarometricPressure": LaCrosseSensorEntityDescription( + key="BarometricPressure", + name="Barometric pressure", + state_class=SensorStateClass.MEASUREMENT, + value_fn=get_value, + device_class=SensorDeviceClass.ATMOSPHERIC_PRESSURE, + native_unit_of_measurement=UnitOfPressure.HPA, + ), + "FeelsLike": LaCrosseSensorEntityDescription( + key="FeelsLike", + name="Feels like", + state_class=SensorStateClass.MEASUREMENT, + value_fn=get_value, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), + "WindChill": LaCrosseSensorEntityDescription( + key="WindChill", + name="Wind chill", + state_class=SensorStateClass.MEASUREMENT, + value_fn=get_value, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + ), } diff --git a/tests/components/lacrosse_view/__init__.py b/tests/components/lacrosse_view/__init__.py index d242ea4d60a..66789508f05 100644 --- a/tests/components/lacrosse_view/__init__.py +++ b/tests/components/lacrosse_view/__init__.py @@ -96,3 +96,14 @@ TEST_NO_FIELD_SENSOR = Sensor( permissions={"read": True}, model="Test", ) +TEST_MISSING_FIELD_DATA_SENSOR = Sensor( + name="Test", + device_id="1", + type="Test", + sensor_id="2", + sensor_field_names=["Temperature"], + location=Location(id="1", name="Test"), + data={"Temperature": None}, + permissions={"read": True}, + model="Test", +) diff --git a/tests/components/lacrosse_view/test_sensor.py b/tests/components/lacrosse_view/test_sensor.py index 9c7c16bd5a8..b39ce7acc86 100644 --- a/tests/components/lacrosse_view/test_sensor.py +++ b/tests/components/lacrosse_view/test_sensor.py @@ -14,6 +14,7 @@ from . import ( TEST_ALREADY_FLOAT_SENSOR, TEST_ALREADY_INT_SENSOR, TEST_FLOAT_SENSOR, + TEST_MISSING_FIELD_DATA_SENSOR, TEST_NO_FIELD_SENSOR, TEST_NO_PERMISSION_SENSOR, TEST_SENSOR, @@ -131,3 +132,23 @@ async def test_no_field(hass: HomeAssistant, caplog: Any) -> None: assert len(entries) == 1 assert entries[0].state == ConfigEntryState.LOADED assert hass.states.get("sensor.test_temperature").state == "unavailable" + + +async def test_field_data_missing(hass: HomeAssistant) -> None: + """Test behavior when field data is missing.""" + config_entry = MockConfigEntry(domain=DOMAIN, data=MOCK_ENTRY_DATA) + config_entry.add_to_hass(hass) + + with patch("lacrosse_view.LaCrosse.login", return_value=True), patch( + "lacrosse_view.LaCrosse.get_sensors", + return_value=[TEST_MISSING_FIELD_DATA_SENSOR], + ): + assert await hass.config_entries.async_setup(config_entry.entry_id) + await hass.async_block_till_done() + + assert hass.data[DOMAIN] + entries = hass.config_entries.async_entries(DOMAIN) + assert entries + assert len(entries) == 1 + assert entries[0].state == ConfigEntryState.LOADED + assert hass.states.get("sensor.test_temperature").state == "unknown"