Add 3 new fields to LaCrosse View (#86356)

* Add BarometricPressure, FeelsLike, and WindChill

* Improve test coverage
This commit is contained in:
IceBotYT 2023-01-23 19:11:07 -05:00 committed by GitHub
parent 7d1dec8d31
commit 94c7f7bbb7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 57 additions and 0 deletions

View File

@ -17,6 +17,7 @@ from homeassistant.const import (
DEGREE, DEGREE,
PERCENTAGE, PERCENTAGE,
UnitOfPrecipitationDepth, UnitOfPrecipitationDepth,
UnitOfPressure,
UnitOfSpeed, UnitOfSpeed,
UnitOfTemperature, UnitOfTemperature,
) )
@ -115,6 +116,30 @@ SENSOR_DESCRIPTIONS = {
name="Flex", name="Flex",
value_fn=get_value, 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,
),
} }

View File

@ -96,3 +96,14 @@ TEST_NO_FIELD_SENSOR = Sensor(
permissions={"read": True}, permissions={"read": True},
model="Test", 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",
)

View File

@ -14,6 +14,7 @@ from . import (
TEST_ALREADY_FLOAT_SENSOR, TEST_ALREADY_FLOAT_SENSOR,
TEST_ALREADY_INT_SENSOR, TEST_ALREADY_INT_SENSOR,
TEST_FLOAT_SENSOR, TEST_FLOAT_SENSOR,
TEST_MISSING_FIELD_DATA_SENSOR,
TEST_NO_FIELD_SENSOR, TEST_NO_FIELD_SENSOR,
TEST_NO_PERMISSION_SENSOR, TEST_NO_PERMISSION_SENSOR,
TEST_SENSOR, TEST_SENSOR,
@ -131,3 +132,23 @@ async def test_no_field(hass: HomeAssistant, caplog: Any) -> None:
assert len(entries) == 1 assert len(entries) == 1
assert entries[0].state == ConfigEntryState.LOADED assert entries[0].state == ConfigEntryState.LOADED
assert hass.states.get("sensor.test_temperature").state == "unavailable" 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"