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
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.const import Platform
from homeassistant.core import HomeAssistant
from . import ENTRY_CONFIG
@ -20,8 +21,18 @@ from tests.common import MockConfigEntry, load_fixture
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
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."""
config_entry = MockConfigEntry(
domain=DOMAIN,
@ -35,6 +46,7 @@ async def load_int(hass: HomeAssistant, get_data: SensiboData) -> MockConfigEntr
config_entry.add_to_hass(hass)
with (
patch("homeassistant.components.sensibo.PLATFORMS", load_platforms),
patch(
"homeassistant.components.sensibo.coordinator.SensiboClient.async_get_devices_data",
return_value=get_data,

View File

@ -1,28 +1,818 @@
# serializer version: 1
# name: test_sensor
ReadOnlyDict({
'device_class': 'enum',
'friendly_name': 'Kitchen Pure AQI',
'options': list([
'good',
'moderate',
'bad',
]),
# name: test_sensor[load_platforms0][sensor.bedroom_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.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
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',
# name: test_sensor[load_platforms0][sensor.bedroom_filter_last_reset-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'timestamp',
'friendly_name': 'Bedroom Filter last reset',
}),
'context': <ANY>,
'entity_id': 'sensor.bedroom_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.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'>,
})
# ---
# 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 unittest.mock import patch
from freezegun.api import FrozenDateTimeFactory
from pysensibo.model import PureAQI, SensiboData
import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
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.SENSOR]],
)
async def test_sensor(
hass: HomeAssistant,
load_int: ConfigEntry,
monkeypatch: pytest.MonkeyPatch,
get_data: SensiboData,
entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
freezer: FrozenDateTimeFactory,
) -> None:
"""Test the Sensibo sensor."""
state1 = hass.states.get("sensor.hallway_motion_sensor_battery_voltage")
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
await snapshot_platform(hass, entity_registry, snapshot, load_int.entry_id)
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
import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN
from homeassistant.config_entries import ConfigEntry
@ -16,12 +17,29 @@ from homeassistant.const import (
SERVICE_TURN_ON,
STATE_OFF,
STATE_ON,
Platform,
)
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import entity_registry as er
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(

View File

@ -5,32 +5,36 @@ from __future__ import annotations
from datetime import timedelta
from unittest.mock import patch
from freezegun.api import FrozenDateTimeFactory
from pysensibo.model import SensiboData
import pytest
from syrupy.assertion import SnapshotAssertion
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.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(
hass: HomeAssistant,
load_int: ConfigEntry,
monkeypatch: pytest.MonkeyPatch,
get_data: SensiboData,
entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
freezer: FrozenDateTimeFactory,
) -> None:
"""Test the Sensibo update."""
state1 = hass.states.get("update.hallway_firmware")
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
await snapshot_platform(hass, entity_registry, snapshot, load_int.entry_id)
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",
return_value=get_data,
):
async_fire_time_changed(
hass,
dt_util.utcnow() + timedelta(minutes=5),
)
freezer.tick(timedelta(minutes=5))
async_fire_time_changed(hass)
await hass.async_block_till_done()
state1 = hass.states.get("update.hallway_firmware")