Use snapshot in Sensibo tests (#130994)

This commit is contained in:
G Johansson 2024-11-19 22:21:12 +01:00 committed by GitHub
parent ea989f7ca1
commit fa28936995
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 1242 additions and 50 deletions

View File

@ -10,8 +10,9 @@ from pysensibo import SensiboClient
from pysensibo.model import SensiboData from pysensibo.model import SensiboData
import pytest import pytest
from homeassistant.components.sensibo.const import DOMAIN from homeassistant.components.sensibo.const import DOMAIN, PLATFORMS
from homeassistant.config_entries import SOURCE_USER from homeassistant.config_entries import SOURCE_USER
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from . import ENTRY_CONFIG from . import ENTRY_CONFIG
@ -20,8 +21,18 @@ from tests.common import MockConfigEntry, load_fixture
from tests.test_util.aiohttp import AiohttpClientMocker from tests.test_util.aiohttp import AiohttpClientMocker
@pytest.fixture(name="load_platforms")
async def patch_platform_constant() -> list[Platform]:
"""Return list of platforms to load."""
return PLATFORMS
@pytest.fixture @pytest.fixture
async def load_int(hass: HomeAssistant, get_data: SensiboData) -> MockConfigEntry: async def load_int(
hass: HomeAssistant,
get_data: SensiboData,
load_platforms: list[Platform],
) -> MockConfigEntry:
"""Set up the Sensibo integration in Home Assistant.""" """Set up the Sensibo integration in Home Assistant."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,
@ -35,6 +46,7 @@ async def load_int(hass: HomeAssistant, get_data: SensiboData) -> MockConfigEntr
config_entry.add_to_hass(hass) config_entry.add_to_hass(hass)
with ( with (
patch("homeassistant.components.sensibo.PLATFORMS", load_platforms),
patch( patch(
"homeassistant.components.sensibo.coordinator.SensiboClient.async_get_devices_data", "homeassistant.components.sensibo.coordinator.SensiboClient.async_get_devices_data",
return_value=get_data, return_value=get_data,

View File

@ -1,28 +1,818 @@
# serializer version: 1 # serializer version: 1
# name: test_sensor # name: test_sensor[load_platforms0][sensor.bedroom_filter_last_reset-entry]
ReadOnlyDict({ EntityRegistryEntrySnapshot({
'device_class': 'enum', 'aliases': set({
'friendly_name': 'Kitchen Pure AQI', }),
'options': list([ 'area_id': None,
'good', 'capabilities': None,
'moderate', 'config_entry_id': <ANY>,
'bad', 'device_class': None,
]), 'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.bedroom_filter_last_reset',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TIMESTAMP: 'timestamp'>,
'original_icon': None,
'original_name': 'Filter last reset',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'filter_last_reset',
'unique_id': 'BBZZBBZZ-filter_last_reset',
'unit_of_measurement': None,
}) })
# --- # ---
# name: test_sensor.1 # name: test_sensor[load_platforms0][sensor.bedroom_filter_last_reset-state]
ReadOnlyDict({ StateSnapshot({
'device_class': 'temperature', 'attributes': ReadOnlyDict({
'fanlevel': 'low', 'device_class': 'timestamp',
'friendly_name': 'Hallway Climate React low temperature threshold', 'friendly_name': 'Bedroom Filter last reset',
'horizontalswing': 'stopped', }),
'light': 'on', 'context': <ANY>,
'mode': 'heat', 'entity_id': 'sensor.bedroom_filter_last_reset',
'on': True, 'last_changed': <ANY>,
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'last_reported': <ANY>,
'swing': 'stopped', 'last_updated': <ANY>,
'targettemperature': 21, 'state': '2022-04-23T15:58:45+00:00',
'temperatureunit': 'c', })
# ---
# name: test_sensor[load_platforms0][sensor.bedroom_pure_aqi-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'options': list([
'good',
'moderate',
'bad',
]),
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.bedroom_pure_aqi',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
'original_icon': None,
'original_name': 'Pure AQI',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'pm25_pure',
'unique_id': 'BBZZBBZZ-pm25',
'unit_of_measurement': None,
})
# ---
# name: test_sensor[load_platforms0][sensor.bedroom_pure_aqi-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'enum',
'friendly_name': 'Bedroom Pure AQI',
'options': list([
'good',
'moderate',
'bad',
]),
}),
'context': <ANY>,
'entity_id': 'sensor.bedroom_pure_aqi',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'good',
})
# ---
# name: test_sensor[load_platforms0][sensor.bedroom_pure_sensitivity-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.bedroom_pure_sensitivity',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Pure sensitivity',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'sensitivity',
'unique_id': 'BBZZBBZZ-pure_sensitivity',
'unit_of_measurement': None,
})
# ---
# name: test_sensor[load_platforms0][sensor.bedroom_pure_sensitivity-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Bedroom Pure sensitivity',
}),
'context': <ANY>,
'entity_id': 'sensor.bedroom_pure_sensitivity',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'n',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_climate_react_high_temperature_threshold-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.hallway_climate_react_high_temperature_threshold',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Climate React high temperature threshold',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'climate_react_high',
'unique_id': 'ABC999111-climate_react_high',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>, 'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}) })
# --- # ---
# name: test_sensor[load_platforms0][sensor.hallway_climate_react_high_temperature_threshold-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'fanlevel': 'high',
'friendly_name': 'Hallway Climate React high temperature threshold',
'horizontalswing': 'stopped',
'light': 'on',
'mode': 'cool',
'on': True,
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'swing': 'stopped',
'targettemperature': 21,
'temperatureunit': 'c',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.hallway_climate_react_high_temperature_threshold',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '27.5',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_climate_react_low_temperature_threshold-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.hallway_climate_react_low_temperature_threshold',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Climate React low temperature threshold',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'climate_react_low',
'unique_id': 'ABC999111-climate_react_low',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_climate_react_low_temperature_threshold-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'fanlevel': 'low',
'friendly_name': 'Hallway Climate React low temperature threshold',
'horizontalswing': 'stopped',
'light': 'on',
'mode': 'heat',
'on': True,
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'swing': 'stopped',
'targettemperature': 21,
'temperatureunit': 'c',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.hallway_climate_react_low_temperature_threshold',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0.0',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_climate_react_type-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.hallway_climate_react_type',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Climate React type',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'smart_type',
'unique_id': 'ABC999111-climate_react_type',
'unit_of_measurement': None,
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_climate_react_type-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Hallway Climate React type',
}),
'context': <ANY>,
'entity_id': 'sensor.hallway_climate_react_type',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'temperature',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_filter_last_reset-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.hallway_filter_last_reset',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TIMESTAMP: 'timestamp'>,
'original_icon': None,
'original_name': 'Filter last reset',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'filter_last_reset',
'unique_id': 'ABC999111-filter_last_reset',
'unit_of_measurement': None,
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_filter_last_reset-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'timestamp',
'friendly_name': 'Hallway Filter last reset',
}),
'context': <ANY>,
'entity_id': 'sensor.hallway_filter_last_reset',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '2022-03-12T15:24:26+00:00',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_motion_sensor_battery_voltage-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.hallway_motion_sensor_battery_voltage',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.VOLTAGE: 'voltage'>,
'original_icon': None,
'original_name': 'Battery voltage',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'battery_voltage',
'unique_id': 'AABBCC-battery_voltage',
'unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_motion_sensor_battery_voltage-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'voltage',
'friendly_name': 'Hallway Motion Sensor Battery voltage',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
}),
'context': <ANY>,
'entity_id': 'sensor.hallway_motion_sensor_battery_voltage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '3000',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_motion_sensor_humidity-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.hallway_motion_sensor_humidity',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.HUMIDITY: 'humidity'>,
'original_icon': None,
'original_name': 'Humidity',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': 'AABBCC-humidity',
'unit_of_measurement': '%',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_motion_sensor_humidity-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'humidity',
'friendly_name': 'Hallway Motion Sensor Humidity',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'sensor.hallway_motion_sensor_humidity',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '57',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_motion_sensor_rssi-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.hallway_motion_sensor_rssi',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.SIGNAL_STRENGTH: 'signal_strength'>,
'original_icon': None,
'original_name': 'RSSI',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'rssi',
'unique_id': 'AABBCC-rssi',
'unit_of_measurement': 'dBm',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_motion_sensor_rssi-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'signal_strength',
'friendly_name': 'Hallway Motion Sensor RSSI',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'dBm',
}),
'context': <ANY>,
'entity_id': 'sensor.hallway_motion_sensor_rssi',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '-72',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_motion_sensor_temperature-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.hallway_motion_sensor_temperature',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Temperature',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': 'AABBCC-temperature',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_motion_sensor_temperature-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'Hallway Motion Sensor Temperature',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.hallway_motion_sensor_temperature',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '23.9',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_temperature_feels_like-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.hallway_temperature_feels_like',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Temperature feels like',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'feels_like',
'unique_id': 'ABC999111-feels_like',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_temperature_feels_like-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'Hallway Temperature feels like',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.hallway_temperature_feels_like',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '21.2',
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_timer_end_time-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.hallway_timer_end_time',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TIMESTAMP: 'timestamp'>,
'original_icon': None,
'original_name': 'Timer end time',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'timer_time',
'unique_id': 'ABC999111-timer_time',
'unit_of_measurement': None,
})
# ---
# name: test_sensor[load_platforms0][sensor.hallway_timer_end_time-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'timestamp',
'friendly_name': 'Hallway Timer end time',
'id': None,
'turn_on': None,
}),
'context': <ANY>,
'entity_id': 'sensor.hallway_timer_end_time',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
})
# ---
# name: test_sensor[load_platforms0][sensor.kitchen_filter_last_reset-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.kitchen_filter_last_reset',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TIMESTAMP: 'timestamp'>,
'original_icon': None,
'original_name': 'Filter last reset',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'filter_last_reset',
'unique_id': 'AAZZAAZZ-filter_last_reset',
'unit_of_measurement': None,
})
# ---
# name: test_sensor[load_platforms0][sensor.kitchen_filter_last_reset-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'timestamp',
'friendly_name': 'Kitchen Filter last reset',
}),
'context': <ANY>,
'entity_id': 'sensor.kitchen_filter_last_reset',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '2022-04-23T15:58:45+00:00',
})
# ---
# name: test_sensor[load_platforms0][sensor.kitchen_pure_aqi-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'options': list([
'good',
'moderate',
'bad',
]),
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.kitchen_pure_aqi',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
'original_icon': None,
'original_name': 'Pure AQI',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'pm25_pure',
'unique_id': 'AAZZAAZZ-pm25',
'unit_of_measurement': None,
})
# ---
# name: test_sensor[load_platforms0][sensor.kitchen_pure_aqi-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'enum',
'friendly_name': 'Kitchen Pure AQI',
'options': list([
'good',
'moderate',
'bad',
]),
}),
'context': <ANY>,
'entity_id': 'sensor.kitchen_pure_aqi',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'good',
})
# ---
# name: test_sensor[load_platforms0][sensor.kitchen_pure_sensitivity-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.kitchen_pure_sensitivity',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Pure sensitivity',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'sensitivity',
'unique_id': 'AAZZAAZZ-pure_sensitivity',
'unit_of_measurement': None,
})
# ---
# name: test_sensor[load_platforms0][sensor.kitchen_pure_sensitivity-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Kitchen Pure sensitivity',
}),
'context': <ANY>,
'entity_id': 'sensor.kitchen_pure_sensitivity',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'n',
})
# ---

View File

@ -0,0 +1,192 @@
# serializer version: 1
# name: test_switch[load_platforms0][switch.bedroom_pure_boost-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'switch',
'entity_category': None,
'entity_id': 'switch.bedroom_pure_boost',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SwitchDeviceClass.SWITCH: 'switch'>,
'original_icon': None,
'original_name': 'Pure Boost',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'pure_boost_switch',
'unique_id': 'BBZZBBZZ-pure_boost_switch',
'unit_of_measurement': None,
})
# ---
# name: test_switch[load_platforms0][switch.bedroom_pure_boost-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'switch',
'friendly_name': 'Bedroom Pure Boost',
}),
'context': <ANY>,
'entity_id': 'switch.bedroom_pure_boost',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'off',
})
# ---
# name: test_switch[load_platforms0][switch.hallway_climate_react-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'switch',
'entity_category': None,
'entity_id': 'switch.hallway_climate_react',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SwitchDeviceClass.SWITCH: 'switch'>,
'original_icon': None,
'original_name': 'Climate React',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'climate_react_switch',
'unique_id': 'ABC999111-climate_react_switch',
'unit_of_measurement': None,
})
# ---
# name: test_switch[load_platforms0][switch.hallway_climate_react-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'switch',
'friendly_name': 'Hallway Climate React',
'type': 'temperature',
}),
'context': <ANY>,
'entity_id': 'switch.hallway_climate_react',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'off',
})
# ---
# name: test_switch[load_platforms0][switch.hallway_timer-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'switch',
'entity_category': None,
'entity_id': 'switch.hallway_timer',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SwitchDeviceClass.SWITCH: 'switch'>,
'original_icon': None,
'original_name': 'Timer',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'timer_on_switch',
'unique_id': 'ABC999111-timer_on_switch',
'unit_of_measurement': None,
})
# ---
# name: test_switch[load_platforms0][switch.hallway_timer-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'switch',
'friendly_name': 'Hallway Timer',
'id': None,
'turn_on': None,
}),
'context': <ANY>,
'entity_id': 'switch.hallway_timer',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'off',
})
# ---
# name: test_switch[load_platforms0][switch.kitchen_pure_boost-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'switch',
'entity_category': None,
'entity_id': 'switch.kitchen_pure_boost',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SwitchDeviceClass.SWITCH: 'switch'>,
'original_icon': None,
'original_name': 'Pure Boost',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'pure_boost_switch',
'unique_id': 'AAZZAAZZ-pure_boost_switch',
'unit_of_measurement': None,
})
# ---
# name: test_switch[load_platforms0][switch.kitchen_pure_boost-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'switch',
'friendly_name': 'Kitchen Pure Boost',
}),
'context': <ANY>,
'entity_id': 'switch.kitchen_pure_boost',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'off',
})
# ---

View File

@ -0,0 +1,178 @@
# serializer version: 1
# name: test_update[load_platforms0][update.bedroom_firmware-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'update',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'update.bedroom_firmware',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <UpdateDeviceClass.FIRMWARE: 'firmware'>,
'original_icon': None,
'original_name': 'Firmware',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': 'BBZZBBZZ-fw_ver_available',
'unit_of_measurement': None,
})
# ---
# name: test_update[load_platforms0][update.bedroom_firmware-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'auto_update': False,
'device_class': 'firmware',
'display_precision': 0,
'entity_picture': 'https://brands.home-assistant.io/_/sensibo/icon.png',
'friendly_name': 'Bedroom Firmware',
'in_progress': False,
'installed_version': 'PUR00111',
'latest_version': 'PUR00111',
'release_summary': None,
'release_url': None,
'skipped_version': None,
'supported_features': <UpdateEntityFeature: 0>,
'title': 'pure',
'update_percentage': None,
}),
'context': <ANY>,
'entity_id': 'update.bedroom_firmware',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'off',
})
# ---
# name: test_update[load_platforms0][update.hallway_firmware-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'update',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'update.hallway_firmware',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <UpdateDeviceClass.FIRMWARE: 'firmware'>,
'original_icon': None,
'original_name': 'Firmware',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': 'ABC999111-fw_ver_available',
'unit_of_measurement': None,
})
# ---
# name: test_update[load_platforms0][update.hallway_firmware-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'auto_update': False,
'device_class': 'firmware',
'display_precision': 0,
'entity_picture': 'https://brands.home-assistant.io/_/sensibo/icon.png',
'friendly_name': 'Hallway Firmware',
'in_progress': False,
'installed_version': 'SKY30046',
'latest_version': 'SKY30048',
'release_summary': None,
'release_url': None,
'skipped_version': None,
'supported_features': <UpdateEntityFeature: 0>,
'title': 'skyv2',
'update_percentage': None,
}),
'context': <ANY>,
'entity_id': 'update.hallway_firmware',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'on',
})
# ---
# name: test_update[load_platforms0][update.kitchen_firmware-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'update',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'update.kitchen_firmware',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <UpdateDeviceClass.FIRMWARE: 'firmware'>,
'original_icon': None,
'original_name': 'Firmware',
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': 'AAZZAAZZ-fw_ver_available',
'unit_of_measurement': None,
})
# ---
# name: test_update[load_platforms0][update.kitchen_firmware-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'auto_update': False,
'device_class': 'firmware',
'display_precision': 0,
'entity_picture': 'https://brands.home-assistant.io/_/sensibo/icon.png',
'friendly_name': 'Kitchen Firmware',
'in_progress': False,
'installed_version': 'PUR00111',
'latest_version': 'PUR00111',
'release_summary': None,
'release_url': None,
'skipped_version': None,
'supported_features': <UpdateEntityFeature: 0>,
'title': 'pure',
'update_percentage': None,
}),
'context': <ANY>,
'entity_id': 'update.kitchen_firmware',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'off',
})
# ---

View File

@ -5,37 +5,37 @@ from __future__ import annotations
from datetime import timedelta from datetime import timedelta
from unittest.mock import patch from unittest.mock import patch
from freezegun.api import FrozenDateTimeFactory
from pysensibo.model import PureAQI, SensiboData from pysensibo.model import PureAQI, SensiboData
import pytest import pytest
from syrupy.assertion import SnapshotAssertion from syrupy.assertion import SnapshotAssertion
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from homeassistant.util import dt as dt_util from homeassistant.util import dt as dt_util
from tests.common import async_fire_time_changed from tests.common import async_fire_time_changed, snapshot_platform
@pytest.mark.usefixtures("entity_registry_enabled_by_default") @pytest.mark.usefixtures("entity_registry_enabled_by_default")
@pytest.mark.parametrize(
"load_platforms",
[[Platform.SENSOR]],
)
async def test_sensor( async def test_sensor(
hass: HomeAssistant, hass: HomeAssistant,
load_int: ConfigEntry, load_int: ConfigEntry,
monkeypatch: pytest.MonkeyPatch, monkeypatch: pytest.MonkeyPatch,
get_data: SensiboData, get_data: SensiboData,
entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion, snapshot: SnapshotAssertion,
freezer: FrozenDateTimeFactory,
) -> None: ) -> None:
"""Test the Sensibo sensor.""" """Test the Sensibo sensor."""
state1 = hass.states.get("sensor.hallway_motion_sensor_battery_voltage") await snapshot_platform(hass, entity_registry, snapshot, load_int.entry_id)
state2 = hass.states.get("sensor.kitchen_pure_aqi")
state3 = hass.states.get("sensor.kitchen_pure_sensitivity")
state4 = hass.states.get("sensor.hallway_climate_react_low_temperature_threshold")
assert state1.state == "3000"
assert state2.state == "good"
assert state3.state == "n"
assert state4.state == "0.0"
assert state2.attributes == snapshot
assert state4.attributes == snapshot
monkeypatch.setattr(get_data.parsed["AAZZAAZZ"], "pm25_pure", PureAQI(2)) monkeypatch.setattr(get_data.parsed["AAZZAAZZ"], "pm25_pure", PureAQI(2))

View File

@ -7,6 +7,7 @@ from unittest.mock import patch
from pysensibo.model import SensiboData from pysensibo.model import SensiboData
import pytest import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
@ -16,12 +17,29 @@ from homeassistant.const import (
SERVICE_TURN_ON, SERVICE_TURN_ON,
STATE_OFF, STATE_OFF,
STATE_ON, STATE_ON,
Platform,
) )
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import entity_registry as er
from homeassistant.util import dt as dt_util from homeassistant.util import dt as dt_util
from tests.common import async_fire_time_changed from tests.common import async_fire_time_changed, snapshot_platform
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
@pytest.mark.parametrize(
"load_platforms",
[[Platform.SWITCH]],
)
async def test_switch(
hass: HomeAssistant,
load_int: ConfigEntry,
entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
) -> None:
"""Test the Sensibo switch."""
await snapshot_platform(hass, entity_registry, snapshot, load_int.entry_id)
async def test_switch_timer( async def test_switch_timer(

View File

@ -5,32 +5,36 @@ from __future__ import annotations
from datetime import timedelta from datetime import timedelta
from unittest.mock import patch from unittest.mock import patch
from freezegun.api import FrozenDateTimeFactory
from pysensibo.model import SensiboData from pysensibo.model import SensiboData
import pytest import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import STATE_OFF, STATE_ON from homeassistant.const import STATE_OFF, Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.util import dt as dt_util from homeassistant.helpers import entity_registry as er
from tests.common import async_fire_time_changed from tests.common import async_fire_time_changed, snapshot_platform
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
@pytest.mark.parametrize(
"load_platforms",
[[Platform.UPDATE]],
)
async def test_update( async def test_update(
hass: HomeAssistant, hass: HomeAssistant,
load_int: ConfigEntry, load_int: ConfigEntry,
monkeypatch: pytest.MonkeyPatch, monkeypatch: pytest.MonkeyPatch,
get_data: SensiboData, get_data: SensiboData,
entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
freezer: FrozenDateTimeFactory,
) -> None: ) -> None:
"""Test the Sensibo update.""" """Test the Sensibo update."""
state1 = hass.states.get("update.hallway_firmware") await snapshot_platform(hass, entity_registry, snapshot, load_int.entry_id)
state2 = hass.states.get("update.kitchen_firmware")
assert state1.state == STATE_ON
assert state1.attributes["installed_version"] == "SKY30046"
assert state1.attributes["latest_version"] == "SKY30048"
assert state1.attributes["title"] == "skyv2"
assert state2.state == STATE_OFF
monkeypatch.setattr(get_data.parsed["ABC999111"], "fw_ver", "SKY30048") monkeypatch.setattr(get_data.parsed["ABC999111"], "fw_ver", "SKY30048")
@ -38,10 +42,8 @@ async def test_update(
"homeassistant.components.sensibo.coordinator.SensiboClient.async_get_devices_data", "homeassistant.components.sensibo.coordinator.SensiboClient.async_get_devices_data",
return_value=get_data, return_value=get_data,
): ):
async_fire_time_changed( freezer.tick(timedelta(minutes=5))
hass, async_fire_time_changed(hass)
dt_util.utcnow() + timedelta(minutes=5),
)
await hass.async_block_till_done() await hass.async_block_till_done()
state1 = hass.states.get("update.hallway_firmware") state1 = hass.states.get("update.hallway_firmware")