From 037b3ebd26c5c211306650fe7a6fb2de3cc54b02 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 20 Feb 2023 03:11:05 +0100 Subject: [PATCH] Refactor EnergyZero tests (#88458) --- .../snapshots/test_config_flow.ambr | 35 + .../snapshots/test_diagnostics.ambr | 43 + .../energyzero/snapshots/test_sensor.ambr | 784 ++++++++++++++++++ .../components/energyzero/test_config_flow.py | 6 +- .../components/energyzero/test_diagnostics.py | 57 +- tests/components/energyzero/test_init.py | 4 +- tests/components/energyzero/test_sensor.py | 200 ++--- 7 files changed, 938 insertions(+), 191 deletions(-) create mode 100644 tests/components/energyzero/snapshots/test_config_flow.ambr create mode 100644 tests/components/energyzero/snapshots/test_diagnostics.ambr create mode 100644 tests/components/energyzero/snapshots/test_sensor.ambr diff --git a/tests/components/energyzero/snapshots/test_config_flow.ambr b/tests/components/energyzero/snapshots/test_config_flow.ambr new file mode 100644 index 00000000000..68c46a705d7 --- /dev/null +++ b/tests/components/energyzero/snapshots/test_config_flow.ambr @@ -0,0 +1,35 @@ +# serializer version: 1 +# name: test_full_user_flow + FlowResultSnapshot({ + 'context': dict({ + 'source': 'user', + 'unique_id': 'energyzero', + }), + 'data': dict({ + }), + 'description': None, + 'description_placeholders': None, + 'flow_id': , + 'handler': 'energyzero', + 'options': dict({ + }), + 'result': ConfigEntrySnapshot({ + 'data': dict({ + }), + 'disabled_by': None, + 'domain': 'energyzero', + 'entry_id': , + 'options': dict({ + }), + 'pref_disable_new_entities': False, + 'pref_disable_polling': False, + 'source': 'user', + 'title': 'EnergyZero', + 'unique_id': 'energyzero', + 'version': 1, + }), + 'title': 'EnergyZero', + 'type': , + 'version': 1, + }) +# --- diff --git a/tests/components/energyzero/snapshots/test_diagnostics.ambr b/tests/components/energyzero/snapshots/test_diagnostics.ambr new file mode 100644 index 00000000000..488e01e8d18 --- /dev/null +++ b/tests/components/energyzero/snapshots/test_diagnostics.ambr @@ -0,0 +1,43 @@ +# serializer version: 1 +# name: test_diagnostics + dict({ + 'energy': dict({ + 'average_price': 0.37, + 'current_hour_price': 0.49, + 'highest_price_time': '2022-12-07T16:00:00+00:00', + 'lowest_price_time': '2022-12-07T02:00:00+00:00', + 'max_price': 0.55, + 'min_price': 0.26, + 'next_hour_price': 0.55, + 'percentage_of_max': 89.09, + }), + 'entry': dict({ + 'title': 'energy', + }), + 'gas': dict({ + 'current_hour_price': 1.47, + 'next_hour_price': 1.47, + }), + }) +# --- +# name: test_diagnostics_no_gas_today + dict({ + 'energy': dict({ + 'average_price': 0.37, + 'current_hour_price': 0.49, + 'highest_price_time': '2022-12-07T16:00:00+00:00', + 'lowest_price_time': '2022-12-07T02:00:00+00:00', + 'max_price': 0.55, + 'min_price': 0.26, + 'next_hour_price': 0.55, + 'percentage_of_max': 89.09, + }), + 'entry': dict({ + 'title': 'energy', + }), + 'gas': dict({ + 'current_hour_price': None, + 'next_hour_price': None, + }), + }) +# --- diff --git a/tests/components/energyzero/snapshots/test_sensor.ambr b/tests/components/energyzero/snapshots/test_sensor.ambr new file mode 100644 index 00000000000..f758e8f53ca --- /dev/null +++ b/tests/components/energyzero/snapshots/test_sensor.ambr @@ -0,0 +1,784 @@ +# serializer version: 1 +# name: test_energy_today + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'friendly_name': 'Energy market price Current hour', + 'state_class': , + 'unit_of_measurement': '€/kWh', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_energy_current_hour_price', + 'last_changed': , + 'last_updated': , + 'state': '0.49', + }) +# --- +# name: test_energy_today.1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_energy_current_hour_price', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Current hour', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': '€/kWh', + }) +# --- +# name: test_energy_today.2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Energy market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_average_price-today_energy_average_price-] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'friendly_name': 'Energy market price Average - today', + 'unit_of_measurement': '€/kWh', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_energy_average_price', + 'last_changed': , + 'last_updated': , + 'state': '0.37', + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_average_price-today_energy_average_price-].1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_energy_average_price', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Average - today', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': '€/kWh', + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_average_price-today_energy_average_price-].2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Energy market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_average_price-today_energy_average_price-today_energy] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'friendly_name': 'Energy market price Average - today', + 'unit_of_measurement': '€/kWh', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_energy_average_price', + 'last_changed': , + 'last_updated': , + 'state': '0.37', + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_average_price-today_energy_average_price-today_energy].1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_energy_average_price', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Average - today', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': '€/kWh', + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_average_price-today_energy_average_price-today_energy].2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Energy market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_current_hour_price-today_energy_current_hour_price-] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'friendly_name': 'Energy market price Current hour', + 'state_class': , + 'unit_of_measurement': '€/kWh', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_energy_current_hour_price', + 'last_changed': , + 'last_updated': , + 'state': '0.49', + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_current_hour_price-today_energy_current_hour_price-].1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_energy_current_hour_price', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Current hour', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': '€/kWh', + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_current_hour_price-today_energy_current_hour_price-].2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Energy market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_current_hour_price-today_energy_current_hour_price-today_energy] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'friendly_name': 'Energy market price Current hour', + 'state_class': , + 'unit_of_measurement': '€/kWh', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_energy_current_hour_price', + 'last_changed': , + 'last_updated': , + 'state': '0.49', + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_current_hour_price-today_energy_current_hour_price-today_energy].1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_energy_current_hour_price', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Current hour', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': '€/kWh', + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_current_hour_price-today_energy_current_hour_price-today_energy].2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Energy market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_highest_price_time-today_energy_highest_price_time-today_energy] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'device_class': 'timestamp', + 'friendly_name': 'Energy market price Time of highest price - today', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_energy_highest_price_time', + 'last_changed': , + 'last_updated': , + 'state': '2022-12-07T16:00:00+00:00', + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_highest_price_time-today_energy_highest_price_time-today_energy].1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_energy_highest_price_time', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Time of highest price - today', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': None, + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_highest_price_time-today_energy_highest_price_time-today_energy].2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Energy market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_max_price-today_energy_max_price-today_energy] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'friendly_name': 'Energy market price Highest price - today', + 'unit_of_measurement': '€/kWh', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_energy_max_price', + 'last_changed': , + 'last_updated': , + 'state': '0.55', + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_max_price-today_energy_max_price-today_energy].1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_energy_max_price', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Highest price - today', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': '€/kWh', + }) +# --- +# name: test_energy_today[sensor.energyzero_today_energy_max_price-today_energy_max_price-today_energy].2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Energy market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_average_price-today_energy_average_price-today_energy] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'friendly_name': 'Energy market price Average - today', + 'unit_of_measurement': '€/kWh', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_energy_average_price', + 'last_changed': , + 'last_updated': , + 'state': '0.37', + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_average_price-today_energy_average_price-today_energy].1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_energy_average_price', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Average - today', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': '€/kWh', + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_average_price-today_energy_average_price-today_energy].2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Energy market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_current_hour_price-today_energy_current_hour_price-today_energy] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'friendly_name': 'Energy market price Current hour', + 'state_class': , + 'unit_of_measurement': '€/kWh', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_energy_current_hour_price', + 'last_changed': , + 'last_updated': , + 'state': '0.49', + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_current_hour_price-today_energy_current_hour_price-today_energy].1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_energy_current_hour_price', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Current hour', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': '€/kWh', + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_current_hour_price-today_energy_current_hour_price-today_energy].2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Energy market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_highest_price_time-today_energy_highest_price_time-today_energy] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'device_class': 'timestamp', + 'friendly_name': 'Energy market price Time of highest price - today', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_energy_highest_price_time', + 'last_changed': , + 'last_updated': , + 'state': '2022-12-07T16:00:00+00:00', + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_highest_price_time-today_energy_highest_price_time-today_energy].1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_energy_highest_price_time', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Time of highest price - today', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_highest_price_time-today_energy_highest_price_time-today_energy].2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Energy market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_max_price-today_energy_max_price-today_energy] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'friendly_name': 'Energy market price Highest price - today', + 'unit_of_measurement': '€/kWh', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_energy_max_price', + 'last_changed': , + 'last_updated': , + 'state': '0.55', + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_max_price-today_energy_max_price-today_energy].1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_energy_max_price', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Highest price - today', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': '€/kWh', + }) +# --- +# name: test_sensor[sensor.energyzero_today_energy_max_price-today_energy_max_price-today_energy].2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Energy market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- +# name: test_sensor[sensor.energyzero_today_gas_current_hour_price-today_gas_current_hour_price-today_gas] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'attribution': 'Data provided by EnergyZero', + 'friendly_name': 'Gas market price Current hour', + 'state_class': , + 'unit_of_measurement': '€/m³', + }), + 'context': , + 'entity_id': 'sensor.energyzero_today_gas_current_hour_price', + 'last_changed': , + 'last_updated': , + 'state': '1.47', + }) +# --- +# name: test_sensor[sensor.energyzero_today_gas_current_hour_price-today_gas_current_hour_price-today_gas].1 + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.energyzero_today_gas_current_hour_price', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Current hour', + 'platform': 'energyzero', + 'supported_features': 0, + 'translation_key': None, + 'unit_of_measurement': '€/m³', + }) +# --- +# name: test_sensor[sensor.energyzero_today_gas_current_hour_price-today_gas_current_hour_price-today_gas].2 + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'is_new': False, + 'manufacturer': 'EnergyZero', + 'model': None, + 'name': 'Gas market price', + 'name_by_user': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- diff --git a/tests/components/energyzero/test_config_flow.py b/tests/components/energyzero/test_config_flow.py index b75b0c00dab..c24eed9b259 100644 --- a/tests/components/energyzero/test_config_flow.py +++ b/tests/components/energyzero/test_config_flow.py @@ -1,6 +1,8 @@ """Test the EnergyZero config flow.""" from unittest.mock import MagicMock +from syrupy.assertion import SnapshotAssertion + from homeassistant.components.energyzero.const import DOMAIN from homeassistant.config_entries import SOURCE_USER from homeassistant.core import HomeAssistant @@ -10,6 +12,7 @@ from homeassistant.data_entry_flow import FlowResultType async def test_full_user_flow( hass: HomeAssistant, mock_setup_entry: MagicMock, + snapshot: SnapshotAssertion, ) -> None: """Test the full user configuration flow.""" result = await hass.config_entries.flow.async_init( @@ -26,7 +29,6 @@ async def test_full_user_flow( ) assert result2.get("type") == FlowResultType.CREATE_ENTRY - assert result2.get("title") == "EnergyZero" - assert result2.get("data") == {} + assert result2 == snapshot assert len(mock_setup_entry.mock_calls) == 1 diff --git a/tests/components/energyzero/test_diagnostics.py b/tests/components/energyzero/test_diagnostics.py index 2a024478308..db0821cc951 100644 --- a/tests/components/energyzero/test_diagnostics.py +++ b/tests/components/energyzero/test_diagnostics.py @@ -3,6 +3,7 @@ from unittest.mock import MagicMock from energyzero import EnergyZeroNoDataError import pytest +from syrupy.assertion import SnapshotAssertion from homeassistant.components.homeassistant import SERVICE_UPDATE_ENTITY from homeassistant.const import ATTR_ENTITY_ID @@ -13,43 +14,28 @@ from tests.common import MockConfigEntry from tests.components.diagnostics import get_diagnostics_for_config_entry from tests.typing import ClientSessionGenerator +pytestmark = pytest.mark.freeze_time("2022-12-07 15:00:00") + -@pytest.mark.freeze_time("2022-12-07 15:00:00") async def test_diagnostics( hass: HomeAssistant, hass_client: ClientSessionGenerator, init_integration: MockConfigEntry, + snapshot: SnapshotAssertion, ) -> None: """Test diagnostics.""" - assert await get_diagnostics_for_config_entry( - hass, hass_client, init_integration - ) == { - "entry": { - "title": "energy", - }, - "energy": { - "current_hour_price": 0.49, - "next_hour_price": 0.55, - "average_price": 0.37, - "max_price": 0.55, - "min_price": 0.26, - "highest_price_time": "2022-12-07T16:00:00+00:00", - "lowest_price_time": "2022-12-07T02:00:00+00:00", - "percentage_of_max": 89.09, - }, - "gas": { - "current_hour_price": 1.47, - "next_hour_price": 1.47, - }, - } + assert ( + await get_diagnostics_for_config_entry(hass, hass_client, init_integration) + == snapshot + ) -@pytest.mark.freeze_time("2022-12-07 15:00:00") async def test_diagnostics_no_gas_today( hass: HomeAssistant, hass_client: ClientSessionGenerator, mock_energyzero: MagicMock, init_integration: MockConfigEntry, + snapshot: SnapshotAssertion, ) -> None: """Test diagnostics, no gas sensors available.""" await async_setup_component(hass, "homeassistant", {}) @@ -63,24 +49,7 @@ async def test_diagnostics_no_gas_today( ) await hass.async_block_till_done() - assert await get_diagnostics_for_config_entry( - hass, hass_client, init_integration - ) == { - "entry": { - "title": "energy", - }, - "energy": { - "current_hour_price": 0.49, - "next_hour_price": 0.55, - "average_price": 0.37, - "max_price": 0.55, - "min_price": 0.26, - "highest_price_time": "2022-12-07T16:00:00+00:00", - "lowest_price_time": "2022-12-07T02:00:00+00:00", - "percentage_of_max": 89.09, - }, - "gas": { - "current_hour_price": None, - "next_hour_price": None, - }, - } + assert ( + await get_diagnostics_for_config_entry(hass, hass_client, init_integration) + == snapshot + ) diff --git a/tests/components/energyzero/test_init.py b/tests/components/energyzero/test_init.py index 489e4346e25..b7072108b35 100644 --- a/tests/components/energyzero/test_init.py +++ b/tests/components/energyzero/test_init.py @@ -2,6 +2,7 @@ from unittest.mock import MagicMock, patch from energyzero import EnergyZeroConnectionError +import pytest from homeassistant.components.energyzero.const import DOMAIN from homeassistant.config_entries import ConfigEntryState @@ -10,8 +11,9 @@ from homeassistant.core import HomeAssistant from tests.common import MockConfigEntry +@pytest.mark.usefixtures("mock_energyzero") async def test_load_unload_config_entry( - hass: HomeAssistant, mock_config_entry: MockConfigEntry, mock_energyzero: MagicMock + hass: HomeAssistant, mock_config_entry: MockConfigEntry ) -> None: """Test the EnergyZero configuration entry loading/unloading.""" mock_config_entry.add_to_hass(hass) diff --git a/tests/components/energyzero/test_sensor.py b/tests/components/energyzero/test_sensor.py index e1773e5349c..4e961d1a68e 100644 --- a/tests/components/energyzero/test_sensor.py +++ b/tests/components/energyzero/test_sensor.py @@ -4,164 +4,77 @@ from unittest.mock import MagicMock from energyzero import EnergyZeroNoDataError import pytest +from syrupy.assertion import SnapshotAssertion +from syrupy.filters import props from homeassistant.components.energyzero.const import DOMAIN from homeassistant.components.homeassistant import SERVICE_UPDATE_ENTITY -from homeassistant.components.sensor import ( - ATTR_STATE_CLASS, - SensorDeviceClass, - SensorStateClass, -) -from homeassistant.const import ( - ATTR_DEVICE_CLASS, - ATTR_ENTITY_ID, - ATTR_FRIENDLY_NAME, - ATTR_ICON, - ATTR_UNIT_OF_MEASUREMENT, - CURRENCY_EURO, - STATE_UNKNOWN, - UnitOfEnergy, - UnitOfVolume, -) +from homeassistant.const import ATTR_ENTITY_ID, STATE_UNKNOWN from homeassistant.core import HomeAssistant from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.setup import async_setup_component from tests.common import MockConfigEntry +pytestmark = [pytest.mark.freeze_time("2022-12-07 15:00:00")] -@pytest.mark.freeze_time("2022-12-07 15:00:00") -async def test_energy_today( - hass: HomeAssistant, init_integration: MockConfigEntry + +@pytest.mark.parametrize( + ("entity_id", "entity_unique_id", "device_identifier"), + [ + ( + "sensor.energyzero_today_energy_current_hour_price", + "today_energy_current_hour_price", + "today_energy", + ), + ( + "sensor.energyzero_today_energy_average_price", + "today_energy_average_price", + "today_energy", + ), + ( + "sensor.energyzero_today_energy_max_price", + "today_energy_max_price", + "today_energy", + ), + ( + "sensor.energyzero_today_energy_highest_price_time", + "today_energy_highest_price_time", + "today_energy", + ), + ( + "sensor.energyzero_today_gas_current_hour_price", + "today_gas_current_hour_price", + "today_gas", + ), + ], +) +async def test_sensor( + hass: HomeAssistant, + init_integration: MockConfigEntry, + device_registry: dr.DeviceRegistry, + entity_registry: er.EntityRegistry, + snapshot: SnapshotAssertion, + entity_id: str, + entity_unique_id: str, + device_identifier: str, ) -> None: """Test the EnergyZero - Energy sensors.""" entry_id = init_integration.entry_id - entity_registry = er.async_get(hass) - device_registry = dr.async_get(hass) + assert (state := hass.states.get(entity_id)) + assert state == snapshot + assert (entity_entry := entity_registry.async_get(entity_id)) + assert entity_entry == snapshot(exclude=props("unique_id")) + assert entity_entry.unique_id == f"{entry_id}_{entity_unique_id}" - # Current energy price sensor - state = hass.states.get("sensor.energyzero_today_energy_current_hour_price") - entry = entity_registry.async_get( - "sensor.energyzero_today_energy_current_hour_price" - ) - assert entry - assert state - assert entry.unique_id == f"{entry_id}_today_energy_current_hour_price" - assert state.state == "0.49" - assert ( - state.attributes.get(ATTR_FRIENDLY_NAME) == "Energy market price Current hour" - ) - assert ( - state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) - == f"{CURRENCY_EURO}/{UnitOfEnergy.KILO_WATT_HOUR}" - ) - assert state.attributes.get(ATTR_STATE_CLASS) == SensorStateClass.MEASUREMENT - assert ATTR_DEVICE_CLASS not in state.attributes - assert ATTR_ICON not in state.attributes - - # Average price sensor - state = hass.states.get("sensor.energyzero_today_energy_average_price") - entry = entity_registry.async_get("sensor.energyzero_today_energy_average_price") - assert entry - assert state - assert entry.unique_id == f"{entry_id}_today_energy_average_price" - assert state.state == "0.37" - assert ( - state.attributes.get(ATTR_FRIENDLY_NAME) - == "Energy market price Average - today" - ) - assert ( - state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) - == f"{CURRENCY_EURO}/{UnitOfEnergy.KILO_WATT_HOUR}" - ) - assert ATTR_DEVICE_CLASS not in state.attributes - assert ATTR_ICON not in state.attributes - - # Highest price sensor - state = hass.states.get("sensor.energyzero_today_energy_max_price") - entry = entity_registry.async_get("sensor.energyzero_today_energy_max_price") - assert entry - assert state - assert entry.unique_id == f"{entry_id}_today_energy_max_price" - assert state.state == "0.55" - assert ( - state.attributes.get(ATTR_FRIENDLY_NAME) - == "Energy market price Highest price - today" - ) - assert ( - state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) - == f"{CURRENCY_EURO}/{UnitOfEnergy.KILO_WATT_HOUR}" - ) - assert ATTR_DEVICE_CLASS not in state.attributes - assert ATTR_ICON not in state.attributes - - # Highest price time sensor - state = hass.states.get("sensor.energyzero_today_energy_highest_price_time") - entry = entity_registry.async_get( - "sensor.energyzero_today_energy_highest_price_time" - ) - assert entry - assert state - assert entry.unique_id == f"{entry_id}_today_energy_highest_price_time" - assert state.state == "2022-12-07T16:00:00+00:00" - assert ( - state.attributes.get(ATTR_FRIENDLY_NAME) - == "Energy market price Time of highest price - today" - ) - assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.TIMESTAMP - assert ATTR_ICON not in state.attributes - - assert entry.device_id - device_entry = device_registry.async_get(entry.device_id) - assert device_entry - assert device_entry.identifiers == {(DOMAIN, f"{entry_id}_today_energy")} - assert device_entry.manufacturer == "EnergyZero" - assert device_entry.name == "Energy market price" - assert device_entry.entry_type is dr.DeviceEntryType.SERVICE - assert not device_entry.model - assert not device_entry.sw_version + assert entity_entry.device_id + assert (device_entry := device_registry.async_get(entity_entry.device_id)) + assert device_entry == snapshot(exclude=props("identifiers")) + assert device_entry.identifiers == {(DOMAIN, f"{entry_id}_{device_identifier}")} -@pytest.mark.freeze_time("2022-12-07 15:00:00") -async def test_gas_today( - hass: HomeAssistant, init_integration: MockConfigEntry -) -> None: - """Test the EnergyZero - Gas sensors.""" - entry_id = init_integration.entry_id - entity_registry = er.async_get(hass) - device_registry = dr.async_get(hass) - - # Current gas price sensor - state = hass.states.get("sensor.energyzero_today_gas_current_hour_price") - entry = entity_registry.async_get("sensor.energyzero_today_gas_current_hour_price") - assert entry - assert state - assert entry.unique_id == f"{entry_id}_today_gas_current_hour_price" - assert state.state == "1.47" - assert state.attributes.get(ATTR_FRIENDLY_NAME) == "Gas market price Current hour" - assert ( - state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) - == f"{CURRENCY_EURO}/{UnitOfVolume.CUBIC_METERS}" - ) - assert state.attributes.get(ATTR_STATE_CLASS) == SensorStateClass.MEASUREMENT - assert ATTR_DEVICE_CLASS not in state.attributes - assert ATTR_ICON not in state.attributes - - assert entry.device_id - device_entry = device_registry.async_get(entry.device_id) - assert device_entry - assert device_entry.identifiers == {(DOMAIN, f"{entry_id}_today_gas")} - assert device_entry.manufacturer == "EnergyZero" - assert device_entry.name == "Gas market price" - assert device_entry.entry_type is dr.DeviceEntryType.SERVICE - assert not device_entry.model - assert not device_entry.sw_version - - -@pytest.mark.freeze_time("2022-12-07 15:00:00") -async def test_no_gas_today( - hass: HomeAssistant, mock_energyzero: MagicMock, init_integration: MockConfigEntry -) -> None: +@pytest.mark.usefixtures("init_integration") +async def test_no_gas_today(hass: HomeAssistant, mock_energyzero: MagicMock) -> None: """Test the EnergyZero - No gas sensors available.""" await async_setup_component(hass, "homeassistant", {}) @@ -175,6 +88,5 @@ async def test_no_gas_today( ) await hass.async_block_till_done() - state = hass.states.get("sensor.energyzero_today_gas_current_hour_price") - assert state + assert (state := hass.states.get("sensor.energyzero_today_gas_current_hour_price")) assert state.state == STATE_UNKNOWN