Use snapshot test for Landis+Gyr (#90126)

Initial commit for snapshot test
This commit is contained in:
Vincent Knoop Pathuis 2023-03-23 10:30:31 +01:00 committed by GitHub
parent 92bcb04e4f
commit 568a731e2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 310 additions and 47 deletions

View File

@ -0,0 +1,303 @@
# serializer version: 1
# name: test_create_sensors
list([
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'volume',
'friendly_name': 'Heat Meter Volume usage',
'icon': 'mdi:fire',
'state_class': <SensorStateClass.TOTAL: 'total'>,
'unit_of_measurement': <UnitOfVolume.CUBIC_METERS: 'm³'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_volume_usage',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': '456.0',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'energy',
'friendly_name': 'Heat Meter Heat usage GJ',
'icon': 'mdi:fire',
'state_class': <SensorStateClass.TOTAL: 'total'>,
'unit_of_measurement': <UnitOfEnergy.GIGA_JOULE: 'GJ'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_heat_usage_gj',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': '123.0',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Heat Meter Heat previous year GJ',
'icon': 'mdi:fire',
'unit_of_measurement': <UnitOfEnergy.GIGA_JOULE: 'GJ'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_heat_previous_year_gj',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': '111.0',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'volume',
'friendly_name': 'Heat Meter Volume usage previous year',
'icon': 'mdi:fire',
'unit_of_measurement': <UnitOfVolume.CUBIC_METERS: 'm³'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_volume_usage_previous_year',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Heat Meter Ownership number',
'icon': 'mdi:identifier',
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_ownership_number',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Heat Meter Error number',
'icon': 'mdi:home-alert',
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_error_number',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Heat Meter Device number',
'icon': 'mdi:identifier',
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_device_number',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'devicenr_789',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'duration',
'friendly_name': 'Heat Meter Measurement period minutes',
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_measurement_period_minutes',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'power',
'friendly_name': 'Heat Meter Power max',
'unit_of_measurement': <UnitOfPower.KILO_WATT: 'kW'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_power_max',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'power',
'friendly_name': 'Heat Meter Power max previous year',
'unit_of_measurement': <UnitOfPower.KILO_WATT: 'kW'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_power_max_previous_year',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Heat Meter Flowrate max',
'icon': 'mdi:water-outline',
'unit_of_measurement': <UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR: 'm³/h'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_flowrate_max',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Heat Meter Flowrate max previous year',
'icon': 'mdi:water-outline',
'unit_of_measurement': <UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR: 'm³/h'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_flowrate_max_previous_year',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'Heat Meter Return temperature max',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_return_temperature_max',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'Heat Meter Return temperature max previous year',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_return_temperature_max_previous_year',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'Heat Meter Flow temperature max',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_flow_temperature_max',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'Heat Meter Flow temperature max previous year',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_flow_temperature_max_previous_year',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'duration',
'friendly_name': 'Heat Meter Operating hours',
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_operating_hours',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'duration',
'friendly_name': 'Heat Meter Flow hours',
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_flow_hours',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'duration',
'friendly_name': 'Heat Meter Fault hours',
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_fault_hours',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'duration',
'friendly_name': 'Heat Meter Fault hours previous year',
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_fault_hours_previous_year',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Heat Meter Yearly set day',
'icon': 'mdi:clock-outline',
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_yearly_set_day',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Heat Meter Monthly set day',
'icon': 'mdi:clock-outline',
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_monthly_set_day',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'timestamp',
'friendly_name': 'Heat Meter Meter date time',
'icon': 'mdi:clock-outline',
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_meter_date_time',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': '2022-05-20T02:41:17+00:00',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Heat Meter Measuring range',
'icon': 'mdi:water-outline',
'unit_of_measurement': <UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR: 'm³/h'>,
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_measuring_range',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Heat Meter Settings and firmware',
}),
'context': <ANY>,
'entity_id': 'sensor.heat_meter_settings_and_firmware',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
}),
])
# ---

View File

@ -4,23 +4,11 @@ import datetime
from unittest.mock import patch
import serial
from syrupy import SnapshotAssertion
from homeassistant.components.homeassistant import DOMAIN as HA_DOMAIN
from homeassistant.components.landisgyr_heat_meter.const import DOMAIN, POLLING_INTERVAL
from homeassistant.components.sensor import (
ATTR_STATE_CLASS,
SensorDeviceClass,
SensorStateClass,
)
from homeassistant.const import (
ATTR_DEVICE_CLASS,
ATTR_ICON,
ATTR_UNIT_OF_MEASUREMENT,
STATE_UNAVAILABLE,
EntityCategory,
UnitOfEnergy,
UnitOfVolume,
)
from homeassistant.const import STATE_UNAVAILABLE
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from homeassistant.setup import async_setup_component
@ -46,7 +34,10 @@ class MockHeatMeterResponse:
@patch(API_HEAT_METER_SERVICE)
async def test_create_sensors(
mock_heat_meter, hass: HomeAssistant, entity_registry: er.EntityRegistry
mock_heat_meter,
hass: HomeAssistant,
entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
) -> None:
"""Test sensor."""
entry_data = {
@ -55,7 +46,6 @@ async def test_create_sensors(
"device_number": "123456789",
}
mock_entry = MockConfigEntry(domain=DOMAIN, unique_id=DOMAIN, data=entry_data)
mock_entry.add_to_hass(hass)
mock_heat_meter_response = MockHeatMeterResponse(
@ -72,37 +62,7 @@ async def test_create_sensors(
await async_setup_component(hass, HA_DOMAIN, {})
await hass.async_block_till_done()
# check if 26 attributes have been created
assert len(hass.states.async_all()) == 25
state = hass.states.get("sensor.heat_meter_heat_usage_gj")
assert state
assert state.state == "123.0"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == UnitOfEnergy.GIGA_JOULE
assert state.attributes.get(ATTR_STATE_CLASS) == SensorStateClass.TOTAL
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.ENERGY
state = hass.states.get("sensor.heat_meter_volume_usage")
assert state
assert state.state == "456.0"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == UnitOfVolume.CUBIC_METERS
assert state.attributes.get(ATTR_STATE_CLASS) == SensorStateClass.TOTAL
state = hass.states.get("sensor.heat_meter_device_number")
assert state
assert state.state == "devicenr_789"
assert state.attributes.get(ATTR_STATE_CLASS) is None
entity_registry_entry = entity_registry.async_get("sensor.heat_meter_device_number")
assert entity_registry_entry.entity_category == EntityCategory.DIAGNOSTIC
state = hass.states.get("sensor.heat_meter_meter_date_time")
assert state
assert state.attributes.get(ATTR_ICON) == "mdi:clock-outline"
assert state.attributes.get(ATTR_STATE_CLASS) is None
entity_registry_entry = entity_registry.async_get(
"sensor.heat_meter_meter_date_time"
)
assert entity_registry_entry.entity_category == EntityCategory.DIAGNOSTIC
assert hass.states.async_all() == snapshot
@patch(API_HEAT_METER_SERVICE)