mirror of
https://github.com/home-assistant/core.git
synced 2026-09-24 07:25:52 -05:00
Add the professionel5e filter series to eheimdigital (#155550)
This commit is contained in:
@@ -5,6 +5,7 @@ from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
from eheimdigital.classic_led_ctrl import EheimDigitalClassicLEDControl
|
||||
from eheimdigital.classic_vario import EheimDigitalClassicVario
|
||||
from eheimdigital.filter import EheimDigitalFilter
|
||||
from eheimdigital.heater import EheimDigitalHeater
|
||||
from eheimdigital.hub import EheimDigitalHub
|
||||
from eheimdigital.types import (
|
||||
@@ -13,6 +14,7 @@ from eheimdigital.types import (
|
||||
ClassicVarioDataPacket,
|
||||
ClockPacket,
|
||||
CloudPacket,
|
||||
FilterDataPacket,
|
||||
MoonPacket,
|
||||
UsrDtaPacket,
|
||||
)
|
||||
@@ -82,11 +84,25 @@ def classic_vario_mock():
|
||||
return classic_vario
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def filter_mock():
|
||||
"""Mock a filter device."""
|
||||
eheim_filter = EheimDigitalFilter(
|
||||
MagicMock(spec=EheimDigitalHub),
|
||||
UsrDtaPacket(load_json_object_fixture("filter/usrdta.json", DOMAIN)),
|
||||
)
|
||||
eheim_filter.filter_data = FilterDataPacket(
|
||||
load_json_object_fixture("filter/filter_data.json", DOMAIN)
|
||||
)
|
||||
return eheim_filter
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def eheimdigital_hub_mock(
|
||||
classic_led_ctrl_mock: MagicMock,
|
||||
heater_mock: MagicMock,
|
||||
classic_vario_mock: MagicMock,
|
||||
filter_mock: MagicMock,
|
||||
) -> Generator[AsyncMock]:
|
||||
"""Mock eheimdigital hub."""
|
||||
with (
|
||||
@@ -103,6 +119,7 @@ def eheimdigital_hub_mock(
|
||||
"00:00:00:00:00:01": classic_led_ctrl_mock,
|
||||
"00:00:00:00:00:02": heater_mock,
|
||||
"00:00:00:00:00:03": classic_vario_mock,
|
||||
"00:00:00:00:00:04": filter_mock,
|
||||
}
|
||||
eheimdigital_hub_mock.return_value.main = classic_led_ctrl_mock
|
||||
yield eheimdigital_hub_mock
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"title": "FILTER_DATA",
|
||||
"from": "00:00:00:00:00:04",
|
||||
"minFreq": 3500,
|
||||
"maxFreq": 6700,
|
||||
"maxFreqRglOff": 7200,
|
||||
"freq": 7200,
|
||||
"freqSoll": 7200,
|
||||
"dfs": 0,
|
||||
"dfsFaktor": 0,
|
||||
"sollStep": 14,
|
||||
"rotSpeed": 43,
|
||||
"pumpMode": 16,
|
||||
"sync": "",
|
||||
"partnerName": "",
|
||||
"filterActive": 1,
|
||||
"runTime": 106435,
|
||||
"actualTime": 106435,
|
||||
"serviceHour": 36774,
|
||||
"pm_dfs_soll_high": 10,
|
||||
"pm_dfs_soll_low": 1,
|
||||
"pm_time_high": 10,
|
||||
"pm_time_low": 10,
|
||||
"nm_dfs_soll_day": 10,
|
||||
"nm_dfs_soll_night": 4,
|
||||
"end_time_night_mode": 420,
|
||||
"start_time_night_mode": 1140,
|
||||
"version": 74,
|
||||
"isEheim": 1,
|
||||
"turnOffTime": 0,
|
||||
"turnTimeFeeding": 0
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"title": "USRDTA",
|
||||
"from": "00:00:00:00:00:04",
|
||||
"name": "Mock filter",
|
||||
"aqName": "Mock Aquarium",
|
||||
"version": 4,
|
||||
"language": "DE",
|
||||
"timezone": 60,
|
||||
"tID": 30,
|
||||
"dst": 1,
|
||||
"tankconfig": "WITHOUT_THERMO",
|
||||
"power": "",
|
||||
"netmode": "ST",
|
||||
"host": "eheimdigital",
|
||||
"groupID": 0,
|
||||
"meshing": 1,
|
||||
"firstStart": 0,
|
||||
"remote": 0,
|
||||
"revision": [1026, 1030],
|
||||
"build": ["1752053563000", "1752045985672"],
|
||||
"latestAvailableRevision": [1026, 1030, 2038, 2038],
|
||||
"firmwareAvailable": 0,
|
||||
"emailAddr": "",
|
||||
"stMail": 0,
|
||||
"stMailMode": 0,
|
||||
"fstTime": 720,
|
||||
"sstTime": 0,
|
||||
"liveTime": 103680,
|
||||
"usrName": "",
|
||||
"unit": 0,
|
||||
"demoUse": 0,
|
||||
"sysLED": 45,
|
||||
"to": "USER"
|
||||
}
|
||||
@@ -236,6 +236,85 @@
|
||||
'version': 18,
|
||||
}),
|
||||
}),
|
||||
'00:00:00:00:00:04': dict({
|
||||
'filter_data': dict({
|
||||
'actualTime': 106435,
|
||||
'dfs': 0,
|
||||
'dfsFaktor': 0,
|
||||
'end_time_night_mode': 420,
|
||||
'filterActive': 1,
|
||||
'freq': 7200,
|
||||
'freqSoll': 7200,
|
||||
'from': '00:00:00:00:00:04',
|
||||
'isEheim': 1,
|
||||
'maxFreq': 6700,
|
||||
'maxFreqRglOff': 7200,
|
||||
'minFreq': 3500,
|
||||
'nm_dfs_soll_day': 10,
|
||||
'nm_dfs_soll_night': 4,
|
||||
'partnerName': '',
|
||||
'pm_dfs_soll_high': 10,
|
||||
'pm_dfs_soll_low': 1,
|
||||
'pm_time_high': 10,
|
||||
'pm_time_low': 10,
|
||||
'pumpMode': 16,
|
||||
'rotSpeed': 43,
|
||||
'runTime': 106435,
|
||||
'serviceHour': 36774,
|
||||
'sollStep': 14,
|
||||
'start_time_night_mode': 1140,
|
||||
'sync': '',
|
||||
'title': 'FILTER_DATA',
|
||||
'turnOffTime': 0,
|
||||
'turnTimeFeeding': 0,
|
||||
'version': 74,
|
||||
}),
|
||||
'usrdta': dict({
|
||||
'aqName': 'Mock Aquarium',
|
||||
'build': list([
|
||||
'1752053563000',
|
||||
'1752045985672',
|
||||
]),
|
||||
'demoUse': 0,
|
||||
'dst': 1,
|
||||
'emailAddr': '',
|
||||
'firmwareAvailable': 0,
|
||||
'firstStart': 0,
|
||||
'from': '00:00:00:00:00:04',
|
||||
'fstTime': 720,
|
||||
'groupID': 0,
|
||||
'host': 'eheimdigital',
|
||||
'language': 'DE',
|
||||
'latestAvailableRevision': list([
|
||||
1026,
|
||||
1030,
|
||||
2038,
|
||||
2038,
|
||||
]),
|
||||
'liveTime': 103680,
|
||||
'meshing': 1,
|
||||
'name': 'Mock filter',
|
||||
'netmode': 'ST',
|
||||
'power': '',
|
||||
'remote': 0,
|
||||
'revision': list([
|
||||
1026,
|
||||
1030,
|
||||
]),
|
||||
'sstTime': 0,
|
||||
'stMail': 0,
|
||||
'stMailMode': 0,
|
||||
'sysLED': 45,
|
||||
'tID': 30,
|
||||
'tankconfig': 'WITHOUT_THERMO',
|
||||
'timezone': 60,
|
||||
'title': 'USRDTA',
|
||||
'to': 'USER',
|
||||
'unit': 0,
|
||||
'usrName': '',
|
||||
'version': 4,
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
'entry': dict({
|
||||
'data': dict({
|
||||
|
||||
@@ -289,6 +289,182 @@
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[number.mock_filter_high_pulse_duration-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 200000,
|
||||
'min': 5,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'number.mock_filter_high_pulse_duration',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.DURATION: 'duration'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'High pulse duration',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'high_pulse_time',
|
||||
'unique_id': '00:00:00:00:00:04_high_pulse_time',
|
||||
'unit_of_measurement': <UnitOfTime.SECONDS: 's'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[number.mock_filter_high_pulse_duration-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'duration',
|
||||
'friendly_name': 'Mock filter High pulse duration',
|
||||
'max': 200000,
|
||||
'min': 5,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': <UnitOfTime.SECONDS: 's'>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.mock_filter_high_pulse_duration',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[number.mock_filter_low_pulse_duration-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 200000,
|
||||
'min': 5,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'number.mock_filter_low_pulse_duration',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.DURATION: 'duration'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Low pulse duration',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'low_pulse_time',
|
||||
'unique_id': '00:00:00:00:00:04_low_pulse_time',
|
||||
'unit_of_measurement': <UnitOfTime.SECONDS: 's'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[number.mock_filter_low_pulse_duration-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'duration',
|
||||
'friendly_name': 'Mock filter Low pulse duration',
|
||||
'max': 200000,
|
||||
'min': 5,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': <UnitOfTime.SECONDS: 's'>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.mock_filter_low_pulse_duration',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[number.mock_filter_system_led_brightness-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'number.mock_filter_system_led_brightness',
|
||||
'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': 'System LED brightness',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'system_led',
|
||||
'unique_id': '00:00:00:00:00:04_system_led',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[number.mock_filter_system_led_brightness-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock filter System LED brightness',
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.mock_filter_system_led_brightness',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[number.mock_heater_night_temperature_offset-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
|
||||
@@ -58,3 +58,568 @@
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_constant_flow_speed-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'options': list([
|
||||
'400',
|
||||
'440',
|
||||
'480',
|
||||
'515',
|
||||
'550',
|
||||
'585',
|
||||
'620',
|
||||
'650',
|
||||
'680',
|
||||
'710',
|
||||
'740',
|
||||
'770',
|
||||
'800',
|
||||
'830',
|
||||
'860',
|
||||
]),
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'select',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'select.mock_filter_constant_flow_speed',
|
||||
'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': 'Constant flow speed',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'const_flow_speed',
|
||||
'unique_id': '00:00:00:00:00:04_const_flow_speed',
|
||||
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_HOUR: 'L/h'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_constant_flow_speed-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock filter Constant flow speed',
|
||||
'options': list([
|
||||
'400',
|
||||
'440',
|
||||
'480',
|
||||
'515',
|
||||
'550',
|
||||
'585',
|
||||
'620',
|
||||
'650',
|
||||
'680',
|
||||
'710',
|
||||
'740',
|
||||
'770',
|
||||
'800',
|
||||
'830',
|
||||
'860',
|
||||
]),
|
||||
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_HOUR: 'L/h'>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'select.mock_filter_constant_flow_speed',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_day_speed-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'options': list([
|
||||
'400',
|
||||
'440',
|
||||
'480',
|
||||
'515',
|
||||
'550',
|
||||
'585',
|
||||
'620',
|
||||
'650',
|
||||
'680',
|
||||
'710',
|
||||
'740',
|
||||
'770',
|
||||
'800',
|
||||
'830',
|
||||
'860',
|
||||
]),
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'select',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'select.mock_filter_day_speed',
|
||||
'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': 'Day speed',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'day_speed',
|
||||
'unique_id': '00:00:00:00:00:04_day_speed',
|
||||
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_HOUR: 'L/h'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_day_speed-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock filter Day speed',
|
||||
'options': list([
|
||||
'400',
|
||||
'440',
|
||||
'480',
|
||||
'515',
|
||||
'550',
|
||||
'585',
|
||||
'620',
|
||||
'650',
|
||||
'680',
|
||||
'710',
|
||||
'740',
|
||||
'770',
|
||||
'800',
|
||||
'830',
|
||||
'860',
|
||||
]),
|
||||
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_HOUR: 'L/h'>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'select.mock_filter_day_speed',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_filter_mode-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'options': list([
|
||||
'manual',
|
||||
'constant_flow',
|
||||
'pulse',
|
||||
'bio',
|
||||
]),
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'select',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'select.mock_filter_filter_mode',
|
||||
'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': 'Filter mode',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'filter_mode',
|
||||
'unique_id': '00:00:00:00:00:04_filter_mode',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_filter_mode-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock filter Filter mode',
|
||||
'options': list([
|
||||
'manual',
|
||||
'constant_flow',
|
||||
'pulse',
|
||||
'bio',
|
||||
]),
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'select.mock_filter_filter_mode',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_high_pulse_speed-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'options': list([
|
||||
'400',
|
||||
'440',
|
||||
'480',
|
||||
'515',
|
||||
'550',
|
||||
'585',
|
||||
'620',
|
||||
'650',
|
||||
'680',
|
||||
'710',
|
||||
'740',
|
||||
'770',
|
||||
'800',
|
||||
'830',
|
||||
'860',
|
||||
]),
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'select',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'select.mock_filter_high_pulse_speed',
|
||||
'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': 'High pulse speed',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'high_pulse_speed',
|
||||
'unique_id': '00:00:00:00:00:04_high_pulse_speed',
|
||||
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_HOUR: 'L/h'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_high_pulse_speed-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock filter High pulse speed',
|
||||
'options': list([
|
||||
'400',
|
||||
'440',
|
||||
'480',
|
||||
'515',
|
||||
'550',
|
||||
'585',
|
||||
'620',
|
||||
'650',
|
||||
'680',
|
||||
'710',
|
||||
'740',
|
||||
'770',
|
||||
'800',
|
||||
'830',
|
||||
'860',
|
||||
]),
|
||||
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_HOUR: 'L/h'>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'select.mock_filter_high_pulse_speed',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_low_pulse_speed-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'options': list([
|
||||
'400',
|
||||
'440',
|
||||
'480',
|
||||
'515',
|
||||
'550',
|
||||
'585',
|
||||
'620',
|
||||
'650',
|
||||
'680',
|
||||
'710',
|
||||
'740',
|
||||
'770',
|
||||
'800',
|
||||
'830',
|
||||
'860',
|
||||
]),
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'select',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'select.mock_filter_low_pulse_speed',
|
||||
'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': 'Low pulse speed',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'low_pulse_speed',
|
||||
'unique_id': '00:00:00:00:00:04_low_pulse_speed',
|
||||
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_HOUR: 'L/h'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_low_pulse_speed-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock filter Low pulse speed',
|
||||
'options': list([
|
||||
'400',
|
||||
'440',
|
||||
'480',
|
||||
'515',
|
||||
'550',
|
||||
'585',
|
||||
'620',
|
||||
'650',
|
||||
'680',
|
||||
'710',
|
||||
'740',
|
||||
'770',
|
||||
'800',
|
||||
'830',
|
||||
'860',
|
||||
]),
|
||||
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_HOUR: 'L/h'>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'select.mock_filter_low_pulse_speed',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_manual_speed-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'options': list([
|
||||
'35',
|
||||
'37.5',
|
||||
'40.5',
|
||||
'43',
|
||||
'45.5',
|
||||
'48',
|
||||
'51',
|
||||
'53.5',
|
||||
'56',
|
||||
'59',
|
||||
'61.5',
|
||||
'64',
|
||||
'66.5',
|
||||
'69.5',
|
||||
'72',
|
||||
]),
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'select',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'select.mock_filter_manual_speed',
|
||||
'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': 'Manual speed',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'manual_speed',
|
||||
'unique_id': '00:00:00:00:00:04_manual_speed',
|
||||
'unit_of_measurement': <UnitOfFrequency.HERTZ: 'Hz'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_manual_speed-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock filter Manual speed',
|
||||
'options': list([
|
||||
'35',
|
||||
'37.5',
|
||||
'40.5',
|
||||
'43',
|
||||
'45.5',
|
||||
'48',
|
||||
'51',
|
||||
'53.5',
|
||||
'56',
|
||||
'59',
|
||||
'61.5',
|
||||
'64',
|
||||
'66.5',
|
||||
'69.5',
|
||||
'72',
|
||||
]),
|
||||
'unit_of_measurement': <UnitOfFrequency.HERTZ: 'Hz'>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'select.mock_filter_manual_speed',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_night_speed-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'options': list([
|
||||
'400',
|
||||
'440',
|
||||
'480',
|
||||
'515',
|
||||
'550',
|
||||
'585',
|
||||
'620',
|
||||
'650',
|
||||
'680',
|
||||
'710',
|
||||
'740',
|
||||
'770',
|
||||
'800',
|
||||
'830',
|
||||
'860',
|
||||
]),
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'select',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'select.mock_filter_night_speed',
|
||||
'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': 'Night speed',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'night_speed',
|
||||
'unique_id': '00:00:00:00:00:04_night_speed',
|
||||
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_HOUR: 'L/h'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[select.mock_filter_night_speed-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock filter Night speed',
|
||||
'options': list([
|
||||
'400',
|
||||
'440',
|
||||
'480',
|
||||
'515',
|
||||
'550',
|
||||
'585',
|
||||
'620',
|
||||
'650',
|
||||
'680',
|
||||
'710',
|
||||
'740',
|
||||
'770',
|
||||
'800',
|
||||
'830',
|
||||
'860',
|
||||
]),
|
||||
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_HOUR: 'L/h'>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'select.mock_filter_night_speed',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# serializer version: 1
|
||||
# name: test_setup_classic_vario[sensor.mock_classicvario_current_speed-entry]
|
||||
# name: test_setup[sensor.mock_classicvario_current_speed-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
@@ -34,7 +34,7 @@
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup_classic_vario[sensor.mock_classicvario_current_speed-state]
|
||||
# name: test_setup[sensor.mock_classicvario_current_speed-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock classicVARIO Current speed',
|
||||
@@ -48,7 +48,7 @@
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup_classic_vario[sensor.mock_classicvario_error_code-entry]
|
||||
# name: test_setup[sensor.mock_classicvario_error_code-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
@@ -89,7 +89,7 @@
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup_classic_vario[sensor.mock_classicvario_error_code-state]
|
||||
# name: test_setup[sensor.mock_classicvario_error_code-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'enum',
|
||||
@@ -108,7 +108,7 @@
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup_classic_vario[sensor.mock_classicvario_remaining_hours_until_service-entry]
|
||||
# name: test_setup[sensor.mock_classicvario_remaining_hours_until_service-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
@@ -149,7 +149,7 @@
|
||||
'unit_of_measurement': <UnitOfTime.DAYS: 'd'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup_classic_vario[sensor.mock_classicvario_remaining_hours_until_service-state]
|
||||
# name: test_setup[sensor.mock_classicvario_remaining_hours_until_service-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'duration',
|
||||
@@ -164,3 +164,112 @@
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[sensor.mock_filter_current_speed-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': None,
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'sensor',
|
||||
'entity_category': None,
|
||||
'entity_id': 'sensor.mock_filter_current_speed',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
'suggested_display_precision': 1,
|
||||
}),
|
||||
}),
|
||||
'original_device_class': <SensorDeviceClass.FREQUENCY: 'frequency'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Current speed',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'current_speed',
|
||||
'unique_id': '00:00:00:00:00:04_current_speed',
|
||||
'unit_of_measurement': <UnitOfFrequency.HERTZ: 'Hz'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[sensor.mock_filter_current_speed-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'frequency',
|
||||
'friendly_name': 'Mock filter Current speed',
|
||||
'unit_of_measurement': <UnitOfFrequency.HERTZ: 'Hz'>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.mock_filter_current_speed',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[sensor.mock_filter_remaining_hours_until_service-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': None,
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'sensor',
|
||||
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
|
||||
'entity_id': 'sensor.mock_filter_remaining_hours_until_service',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
'suggested_display_precision': 2,
|
||||
}),
|
||||
'sensor.private': dict({
|
||||
'suggested_unit_of_measurement': <UnitOfTime.DAYS: 'd'>,
|
||||
}),
|
||||
}),
|
||||
'original_device_class': <SensorDeviceClass.DURATION: 'duration'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Remaining hours until service',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'service_hours',
|
||||
'unique_id': '00:00:00:00:00:04_service_hours',
|
||||
'unit_of_measurement': <UnitOfTime.DAYS: 'd'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[sensor.mock_filter_remaining_hours_until_service-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'duration',
|
||||
'friendly_name': 'Mock filter Remaining hours until service',
|
||||
'unit_of_measurement': <UnitOfTime.DAYS: 'd'>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.mock_filter_remaining_hours_until_service',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# serializer version: 1
|
||||
# name: test_setup_classic_vario[switch.mock_classicvario-entry]
|
||||
# name: test_setup[switch.mock_classicvario-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
@@ -34,7 +34,7 @@
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup_classic_vario[switch.mock_classicvario-state]
|
||||
# name: test_setup[switch.mock_classicvario-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock classicVARIO',
|
||||
@@ -47,3 +47,51 @@
|
||||
'state': 'on',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[switch.mock_filter-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': None,
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'switch',
|
||||
'entity_category': None,
|
||||
'entity_id': 'switch.mock_filter',
|
||||
'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': None,
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'filter_active',
|
||||
'unique_id': '00:00:00:00:00:04',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[switch.mock_filter-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock filter',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'switch.mock_filter',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'on',
|
||||
})
|
||||
# ---
|
||||
|
||||
@@ -95,6 +95,102 @@
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[time.mock_filter_day_start_time-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': None,
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'time',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'time.mock_filter_day_start_time',
|
||||
'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': 'Day start time',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'day_start_time',
|
||||
'unique_id': '00:00:00:00:00:04_day_start_time',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[time.mock_filter_day_start_time-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock filter Day start time',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'time.mock_filter_day_start_time',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[time.mock_filter_night_start_time-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': None,
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'time',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'time.mock_filter_night_start_time',
|
||||
'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': 'Night start time',
|
||||
'platform': 'eheimdigital',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'night_start_time',
|
||||
'unique_id': '00:00:00:00:00:04_night_start_time',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[time.mock_filter_night_start_time-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mock filter Night start time',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'time.mock_filter_night_start_time',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
})
|
||||
# ---
|
||||
# name: test_setup[time.mock_heater_day_start_time-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
|
||||
@@ -19,7 +19,6 @@ from .conftest import init_integration
|
||||
from tests.common import MockConfigEntry, snapshot_platform
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock", "heater_mock")
|
||||
async def test_setup(
|
||||
hass: HomeAssistant,
|
||||
eheimdigital_hub_mock: MagicMock,
|
||||
@@ -48,7 +47,6 @@ async def test_setup(
|
||||
await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock", "heater_mock")
|
||||
@pytest.mark.parametrize(
|
||||
("device_name", "entity_list"),
|
||||
[
|
||||
@@ -104,6 +102,23 @@ async def test_setup(
|
||||
),
|
||||
],
|
||||
),
|
||||
(
|
||||
"filter_mock",
|
||||
[
|
||||
(
|
||||
"number.mock_filter_low_pulse_duration",
|
||||
20,
|
||||
"time_low",
|
||||
20,
|
||||
),
|
||||
(
|
||||
"number.mock_filter_high_pulse_duration",
|
||||
20,
|
||||
"time_high",
|
||||
20,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_set_value(
|
||||
@@ -135,7 +150,6 @@ async def test_set_value(
|
||||
assert calls[-1][1][0][item[2]] == item[3]
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock", "heater_mock")
|
||||
@pytest.mark.parametrize(
|
||||
("device_name", "entity_list"),
|
||||
[
|
||||
@@ -198,6 +212,32 @@ async def test_set_value(
|
||||
),
|
||||
],
|
||||
),
|
||||
(
|
||||
"filter_mock",
|
||||
[
|
||||
(
|
||||
"number.mock_filter_low_pulse_duration",
|
||||
"filter_data",
|
||||
"pm_time_low",
|
||||
20,
|
||||
20,
|
||||
),
|
||||
(
|
||||
"number.mock_filter_high_pulse_duration",
|
||||
"filter_data",
|
||||
"pm_time_high",
|
||||
20,
|
||||
20,
|
||||
),
|
||||
(
|
||||
"number.mock_filter_system_led_brightness",
|
||||
"usrdta",
|
||||
"sysLED",
|
||||
20,
|
||||
20,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_state_update(
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
from eheimdigital.types import FilterMode
|
||||
from eheimdigital.types import FilterMode, FilterModeProf
|
||||
import pytest
|
||||
from syrupy.assertion import SnapshotAssertion
|
||||
|
||||
@@ -20,7 +20,6 @@ from .conftest import init_integration
|
||||
from tests.common import MockConfigEntry, snapshot_platform
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock")
|
||||
async def test_setup(
|
||||
hass: HomeAssistant,
|
||||
eheimdigital_hub_mock: MagicMock,
|
||||
@@ -49,7 +48,6 @@ async def test_setup(
|
||||
await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock")
|
||||
@pytest.mark.parametrize(
|
||||
("device_name", "entity_list"),
|
||||
[
|
||||
@@ -64,6 +62,28 @@ async def test_setup(
|
||||
),
|
||||
],
|
||||
),
|
||||
(
|
||||
"filter_mock",
|
||||
[
|
||||
(
|
||||
"select.mock_filter_filter_mode",
|
||||
"constant_flow",
|
||||
"title",
|
||||
"START_FILTER_NORMAL_MODE_WITH_COMP",
|
||||
),
|
||||
(
|
||||
"select.mock_filter_manual_speed",
|
||||
"61.5",
|
||||
"frequency",
|
||||
int(61.5 * 100),
|
||||
),
|
||||
("select.mock_filter_constant_flow_speed", "440", "flow_rate", 1),
|
||||
("select.mock_filter_day_speed", "480", "dfs_soll_day", 2),
|
||||
("select.mock_filter_night_speed", "860", "dfs_soll_night", 14),
|
||||
("select.mock_filter_high_pulse_speed", "620", "dfs_soll_high", 6),
|
||||
("select.mock_filter_low_pulse_speed", "770", "dfs_soll_low", 11),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_set_value(
|
||||
@@ -111,6 +131,60 @@ async def test_set_value(
|
||||
),
|
||||
],
|
||||
),
|
||||
(
|
||||
"filter_mock",
|
||||
[
|
||||
(
|
||||
"select.mock_filter_filter_mode",
|
||||
"filter_data",
|
||||
"pumpMode",
|
||||
int(FilterModeProf.CONSTANT_FLOW),
|
||||
"constant_flow",
|
||||
),
|
||||
(
|
||||
"select.mock_filter_manual_speed",
|
||||
"filter_data",
|
||||
"freqSoll",
|
||||
int(61.5 * 100),
|
||||
"61.5",
|
||||
),
|
||||
(
|
||||
"select.mock_filter_constant_flow_speed",
|
||||
"filter_data",
|
||||
"sollStep",
|
||||
1,
|
||||
"440",
|
||||
),
|
||||
(
|
||||
"select.mock_filter_day_speed",
|
||||
"filter_data",
|
||||
"nm_dfs_soll_day",
|
||||
2,
|
||||
"480",
|
||||
),
|
||||
(
|
||||
"select.mock_filter_night_speed",
|
||||
"filter_data",
|
||||
"nm_dfs_soll_night",
|
||||
14,
|
||||
"860",
|
||||
),
|
||||
(
|
||||
"select.mock_filter_high_pulse_speed",
|
||||
"filter_data",
|
||||
"pm_dfs_soll_high",
|
||||
6,
|
||||
"620",
|
||||
),
|
||||
(
|
||||
"select.mock_filter_low_pulse_speed",
|
||||
"filter_data",
|
||||
"pm_dfs_soll_low",
|
||||
11,
|
||||
"770",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_state_update(
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
from eheimdigital.types import EheimDeviceType, FilterErrorCode
|
||||
from eheimdigital.types import FilterErrorCode
|
||||
import pytest
|
||||
from syrupy.assertion import SnapshotAssertion
|
||||
|
||||
@@ -15,8 +15,7 @@ from .conftest import init_integration
|
||||
from tests.common import MockConfigEntry, get_sensor_display_state, snapshot_platform
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock")
|
||||
async def test_setup_classic_vario(
|
||||
async def test_setup(
|
||||
hass: HomeAssistant,
|
||||
eheimdigital_hub_mock: MagicMock,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
@@ -35,15 +34,15 @@ async def test_setup_classic_vario(
|
||||
):
|
||||
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||
|
||||
await eheimdigital_hub_mock.call_args.kwargs["device_found_callback"](
|
||||
"00:00:00:00:00:03", EheimDeviceType.VERSION_EHEIM_CLASSIC_VARIO
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
for device in eheimdigital_hub_mock.return_value.devices:
|
||||
await eheimdigital_hub_mock.call_args.kwargs["device_found_callback"](
|
||||
device, eheimdigital_hub_mock.return_value.devices[device].device_type
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock")
|
||||
@pytest.mark.parametrize(
|
||||
("device_name", "entity_list"),
|
||||
[
|
||||
@@ -73,6 +72,25 @@ async def test_setup_classic_vario(
|
||||
),
|
||||
],
|
||||
),
|
||||
(
|
||||
"filter_mock",
|
||||
[
|
||||
(
|
||||
"sensor.mock_filter_current_speed",
|
||||
"filter_data",
|
||||
"freq",
|
||||
7200,
|
||||
str(round(72.0, 1)),
|
||||
),
|
||||
(
|
||||
"sensor.mock_filter_remaining_hours_until_service",
|
||||
"filter_data",
|
||||
"serviceHour",
|
||||
100,
|
||||
str(round(100 / 24, 2)),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_state_update(
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
from eheimdigital.types import EheimDeviceType
|
||||
import pytest
|
||||
from syrupy.assertion import SnapshotAssertion
|
||||
|
||||
@@ -21,8 +20,7 @@ from .conftest import init_integration
|
||||
from tests.common import MockConfigEntry, snapshot_platform
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock")
|
||||
async def test_setup_classic_vario(
|
||||
async def test_setup(
|
||||
hass: HomeAssistant,
|
||||
eheimdigital_hub_mock: MagicMock,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
@@ -41,10 +39,11 @@ async def test_setup_classic_vario(
|
||||
):
|
||||
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||
|
||||
await eheimdigital_hub_mock.call_args.kwargs["device_found_callback"](
|
||||
"00:00:00:00:00:03", EheimDeviceType.VERSION_EHEIM_CLASSIC_VARIO
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
for device in eheimdigital_hub_mock.return_value.devices:
|
||||
await eheimdigital_hub_mock.call_args.kwargs["device_found_callback"](
|
||||
device, eheimdigital_hub_mock.return_value.devices[device].device_type
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id)
|
||||
|
||||
@@ -52,37 +51,45 @@ async def test_setup_classic_vario(
|
||||
@pytest.mark.parametrize(
|
||||
("service", "active"), [(SERVICE_TURN_OFF, False), (SERVICE_TURN_ON, True)]
|
||||
)
|
||||
@pytest.mark.parametrize(
|
||||
("device_name", "entity_id", "property_name"),
|
||||
[
|
||||
("classic_vario_mock", "switch.mock_classicvario", "filterActive"),
|
||||
("filter_mock", "switch.mock_filter", "active"),
|
||||
],
|
||||
)
|
||||
async def test_turn_on_off(
|
||||
hass: HomeAssistant,
|
||||
eheimdigital_hub_mock: MagicMock,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
classic_vario_mock: MagicMock,
|
||||
device_name: str,
|
||||
entity_id: str,
|
||||
property_name: str,
|
||||
service: str,
|
||||
active: bool,
|
||||
request: pytest.FixtureRequest,
|
||||
) -> None:
|
||||
"""Test turning on/off the switch."""
|
||||
device: MagicMock = request.getfixturevalue(device_name)
|
||||
await init_integration(hass, mock_config_entry)
|
||||
|
||||
await eheimdigital_hub_mock.call_args.kwargs["device_found_callback"](
|
||||
"00:00:00:00:00:03", EheimDeviceType.VERSION_EHEIM_CLASSIC_VARIO
|
||||
device.mac_address, device.device_type
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
await hass.services.async_call(
|
||||
SWITCH_DOMAIN,
|
||||
service,
|
||||
{ATTR_ENTITY_ID: "switch.mock_classicvario"},
|
||||
{ATTR_ENTITY_ID: entity_id},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
calls = [
|
||||
call for call in classic_vario_mock.hub.mock_calls if call[0] == "send_packet"
|
||||
]
|
||||
assert len(calls) == 1
|
||||
assert calls[0][1][0].get("filterActive") == int(active)
|
||||
calls = [call for call in device.hub.mock_calls if call[0] == "send_packet"]
|
||||
assert calls[-1][1][0][property_name] == int(active)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock")
|
||||
@pytest.mark.usefixtures("classic_vario_mock", "filter_mock")
|
||||
@pytest.mark.parametrize(
|
||||
("device_name", "entity_list"),
|
||||
[
|
||||
@@ -105,6 +112,25 @@ async def test_turn_on_off(
|
||||
),
|
||||
],
|
||||
),
|
||||
(
|
||||
"filter_mock",
|
||||
[
|
||||
(
|
||||
"switch.mock_filter",
|
||||
"filter_data",
|
||||
"filterActive",
|
||||
1,
|
||||
"on",
|
||||
),
|
||||
(
|
||||
"switch.mock_filter",
|
||||
"filter_data",
|
||||
"filterActive",
|
||||
0,
|
||||
"off",
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_state_update(
|
||||
|
||||
@@ -20,7 +20,6 @@ from .conftest import init_integration
|
||||
from tests.common import MockConfigEntry, snapshot_platform
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock", "heater_mock")
|
||||
async def test_setup(
|
||||
hass: HomeAssistant,
|
||||
eheimdigital_hub_mock: MagicMock,
|
||||
@@ -49,7 +48,6 @@ async def test_setup(
|
||||
await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock", "heater_mock")
|
||||
@pytest.mark.parametrize(
|
||||
("device_name", "entity_list"),
|
||||
[
|
||||
@@ -87,6 +85,23 @@ async def test_setup(
|
||||
),
|
||||
],
|
||||
),
|
||||
(
|
||||
"filter_mock",
|
||||
[
|
||||
(
|
||||
"time.mock_filter_day_start_time",
|
||||
time(9, 0, tzinfo=timezone(timedelta(hours=1))),
|
||||
"end_time_night_mode",
|
||||
9 * 60,
|
||||
),
|
||||
(
|
||||
"time.mock_filter_night_start_time",
|
||||
time(19, 0, tzinfo=timezone(timedelta(hours=1))),
|
||||
"start_time_night_mode",
|
||||
19 * 60,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_set_value(
|
||||
@@ -118,7 +133,6 @@ async def test_set_value(
|
||||
assert calls[-1][1][0][item[2]] == item[3]
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("classic_vario_mock", "heater_mock")
|
||||
@pytest.mark.parametrize(
|
||||
("device_name", "entity_list"),
|
||||
[
|
||||
@@ -160,6 +174,25 @@ async def test_set_value(
|
||||
),
|
||||
],
|
||||
),
|
||||
(
|
||||
"filter_mock",
|
||||
[
|
||||
(
|
||||
"time.mock_filter_day_start_time",
|
||||
"filter_data",
|
||||
"end_time_night_mode",
|
||||
540,
|
||||
time(9, 0, tzinfo=timezone(timedelta(hours=1))).isoformat(),
|
||||
),
|
||||
(
|
||||
"time.mock_filter_night_start_time",
|
||||
"filter_data",
|
||||
"start_time_night_mode",
|
||||
1320,
|
||||
time(22, 0, tzinfo=timezone(timedelta(hours=1))).isoformat(),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_state_update(
|
||||
|
||||
Reference in New Issue
Block a user