mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 09:17:53 +00:00
Improve tests of energyzero integration (#133452)
Co-authored-by: Franck Nijhof <git@frenck.dev>
This commit is contained in:
parent
6060f637a8
commit
0d116ec6a2
@ -1 +1,12 @@
|
||||
"""Tests for the EnergyZero integration."""
|
||||
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
|
||||
|
||||
async def setup_integration(hass: HomeAssistant, config_entry: MockConfigEntry) -> None:
|
||||
"""Fixture for setting up the integration."""
|
||||
config_entry.add_to_hass(hass)
|
||||
|
||||
await hass.config_entries.async_setup(config_entry.entry_id)
|
||||
|
@ -29,7 +29,8 @@ def mock_config_entry() -> MockConfigEntry:
|
||||
title="energy",
|
||||
domain=DOMAIN,
|
||||
data={},
|
||||
unique_id="unique_thingy",
|
||||
unique_id=DOMAIN,
|
||||
entry_id="12345",
|
||||
)
|
||||
|
||||
|
||||
|
@ -1,39 +0,0 @@
|
||||
# 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': <ANY>,
|
||||
'handler': 'energyzero',
|
||||
'minor_version': 1,
|
||||
'options': dict({
|
||||
}),
|
||||
'result': ConfigEntrySnapshot({
|
||||
'data': dict({
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'discovery_keys': dict({
|
||||
}),
|
||||
'domain': 'energyzero',
|
||||
'entry_id': <ANY>,
|
||||
'minor_version': 1,
|
||||
'options': dict({
|
||||
}),
|
||||
'pref_disable_new_entities': False,
|
||||
'pref_disable_polling': False,
|
||||
'source': 'user',
|
||||
'title': 'EnergyZero',
|
||||
'unique_id': 'energyzero',
|
||||
'version': 1,
|
||||
}),
|
||||
'title': 'EnergyZero',
|
||||
'type': <FlowResultType.CREATE_ENTRY: 'create_entry'>,
|
||||
'version': 1,
|
||||
})
|
||||
# ---
|
@ -1,26 +1,4 @@
|
||||
# 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',
|
||||
'hours_priced_equal_or_lower': 23,
|
||||
'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({
|
||||
@ -43,3 +21,25 @@
|
||||
}),
|
||||
})
|
||||
# ---
|
||||
# name: test_entry_diagnostics
|
||||
dict({
|
||||
'energy': dict({
|
||||
'average_price': 0.37,
|
||||
'current_hour_price': 0.49,
|
||||
'highest_price_time': '2022-12-07T16:00:00+00:00',
|
||||
'hours_priced_equal_or_lower': 23,
|
||||
'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,
|
||||
}),
|
||||
})
|
||||
# ---
|
||||
|
@ -1,20 +1,5 @@
|
||||
# serializer version: 1
|
||||
# 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': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_energy_average_price',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '0.37',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_average_price-today_energy_average_price-today_energy].1
|
||||
# name: test_sensor[sensor.energyzero_today_energy_average_price-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
@ -43,52 +28,26 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'average_price',
|
||||
'unique_id': '12345_today_energy_average_price',
|
||||
'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': <ANY>,
|
||||
'configuration_url': None,
|
||||
'connections': set({
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'entry_type': <DeviceEntryType.SERVICE: 'service'>,
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'model_id': None,
|
||||
'name': 'Energy market price',
|
||||
'name_by_user': None,
|
||||
'primary_config_entry': <ANY>,
|
||||
'serial_number': 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]
|
||||
# name: test_sensor[sensor.energyzero_today_energy_average_price-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'attribution': 'Data provided by EnergyZero',
|
||||
'friendly_name': 'Energy market price Current hour',
|
||||
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||
'friendly_name': 'Energy market price Average - today',
|
||||
'unit_of_measurement': '€/kWh',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_energy_current_hour_price',
|
||||
'entity_id': 'sensor.energyzero_today_energy_average_price',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '0.49',
|
||||
'state': '0.37',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_current_hour_price-today_energy_current_hour_price-today_energy].1
|
||||
# name: test_sensor[sensor.energyzero_today_energy_current_hour_price-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
@ -119,51 +78,27 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'current_hour_price',
|
||||
'unique_id': '12345_today_energy_current_hour_price',
|
||||
'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': <ANY>,
|
||||
'configuration_url': None,
|
||||
'connections': set({
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'entry_type': <DeviceEntryType.SERVICE: 'service'>,
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'model_id': None,
|
||||
'name': 'Energy market price',
|
||||
'name_by_user': None,
|
||||
'primary_config_entry': <ANY>,
|
||||
'serial_number': 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]
|
||||
# name: test_sensor[sensor.energyzero_today_energy_current_hour_price-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'attribution': 'Data provided by EnergyZero',
|
||||
'device_class': 'timestamp',
|
||||
'friendly_name': 'Energy market price Time of highest price - today',
|
||||
'friendly_name': 'Energy market price Current hour',
|
||||
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||
'unit_of_measurement': '€/kWh',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_energy_highest_price_time',
|
||||
'entity_id': 'sensor.energyzero_today_energy_current_hour_price',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '2022-12-07T16:00:00+00:00',
|
||||
'state': '0.49',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_highest_price_time-today_energy_highest_price_time-today_energy].1
|
||||
# name: test_sensor[sensor.energyzero_today_energy_highest_price_time-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
@ -192,51 +127,26 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'highest_price_time',
|
||||
'unique_id': '12345_today_energy_highest_price_time',
|
||||
'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': <ANY>,
|
||||
'configuration_url': None,
|
||||
'connections': set({
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'entry_type': <DeviceEntryType.SERVICE: 'service'>,
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'model_id': None,
|
||||
'name': 'Energy market price',
|
||||
'name_by_user': None,
|
||||
'primary_config_entry': <ANY>,
|
||||
'serial_number': None,
|
||||
'suggested_area': None,
|
||||
'sw_version': None,
|
||||
'via_device_id': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_hours_priced_equal_or_lower-today_energy_hours_priced_equal_or_lower-today_energy]
|
||||
# name: test_sensor[sensor.energyzero_today_energy_highest_price_time-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'attribution': 'Data provided by EnergyZero',
|
||||
'friendly_name': 'Energy market price Hours priced equal or lower than current - today',
|
||||
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
|
||||
'device_class': 'timestamp',
|
||||
'friendly_name': 'Energy market price Time of highest price - today',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_energy_hours_priced_equal_or_lower',
|
||||
'entity_id': 'sensor.energyzero_today_energy_highest_price_time',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '23',
|
||||
'state': '2022-12-07T16:00:00+00:00',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_hours_priced_equal_or_lower-today_energy_hours_priced_equal_or_lower-today_energy].1
|
||||
# name: test_sensor[sensor.energyzero_today_energy_hours_priced_equal_or_lower-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
@ -265,51 +175,74 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'hours_priced_equal_or_lower',
|
||||
'unique_id': '12345_today_energy_hours_priced_equal_or_lower',
|
||||
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_hours_priced_equal_or_lower-today_energy_hours_priced_equal_or_lower-today_energy].2
|
||||
DeviceRegistryEntrySnapshot({
|
||||
'area_id': None,
|
||||
'config_entries': <ANY>,
|
||||
'configuration_url': None,
|
||||
'connections': set({
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'entry_type': <DeviceEntryType.SERVICE: 'service'>,
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'model_id': None,
|
||||
'name': 'Energy market price',
|
||||
'name_by_user': None,
|
||||
'primary_config_entry': <ANY>,
|
||||
'serial_number': 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]
|
||||
# name: test_sensor[sensor.energyzero_today_energy_hours_priced_equal_or_lower-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'attribution': 'Data provided by EnergyZero',
|
||||
'friendly_name': 'Energy market price Highest price - today',
|
||||
'unit_of_measurement': '€/kWh',
|
||||
'friendly_name': 'Energy market price Hours priced equal or lower than current - today',
|
||||
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_energy_max_price',
|
||||
'entity_id': 'sensor.energyzero_today_energy_hours_priced_equal_or_lower',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '0.55',
|
||||
'state': '23',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_max_price-today_energy_max_price-today_energy].1
|
||||
# name: test_sensor[sensor.energyzero_today_energy_lowest_price_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.energyzero_today_energy_lowest_price_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': 'Time of lowest price - today',
|
||||
'platform': 'energyzero',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'lowest_price_time',
|
||||
'unique_id': '12345_today_energy_lowest_price_time',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_lowest_price_time-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'attribution': 'Data provided by EnergyZero',
|
||||
'device_class': 'timestamp',
|
||||
'friendly_name': 'Energy market price Time of lowest price - today',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_energy_lowest_price_time',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '2022-12-07T02:00:00+00:00',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_max_price-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
@ -338,52 +271,170 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'max_price',
|
||||
'unique_id': '12345_today_energy_max_price',
|
||||
'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': <ANY>,
|
||||
'configuration_url': None,
|
||||
'connections': set({
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'entry_type': <DeviceEntryType.SERVICE: 'service'>,
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'model_id': None,
|
||||
'name': 'Energy market price',
|
||||
'name_by_user': None,
|
||||
'primary_config_entry': <ANY>,
|
||||
'serial_number': 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]
|
||||
# name: test_sensor[sensor.energyzero_today_energy_max_price-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'attribution': 'Data provided by EnergyZero',
|
||||
'friendly_name': 'Gas market price Current hour',
|
||||
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||
'unit_of_measurement': '€/m³',
|
||||
'friendly_name': 'Energy market price Highest price - today',
|
||||
'unit_of_measurement': '€/kWh',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_gas_current_hour_price',
|
||||
'entity_id': 'sensor.energyzero_today_energy_max_price',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '1.47',
|
||||
'state': '0.55',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_gas_current_hour_price-today_gas_current_hour_price-today_gas].1
|
||||
# name: test_sensor[sensor.energyzero_today_energy_min_price-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.energyzero_today_energy_min_price',
|
||||
'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': 'Lowest price - today',
|
||||
'platform': 'energyzero',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'min_price',
|
||||
'unique_id': '12345_today_energy_min_price',
|
||||
'unit_of_measurement': '€/kWh',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_min_price-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'attribution': 'Data provided by EnergyZero',
|
||||
'friendly_name': 'Energy market price Lowest price - today',
|
||||
'unit_of_measurement': '€/kWh',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_energy_min_price',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '0.26',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_next_hour_price-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.energyzero_today_energy_next_hour_price',
|
||||
'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': 'Next hour',
|
||||
'platform': 'energyzero',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'next_hour_price',
|
||||
'unique_id': '12345_today_energy_next_hour_price',
|
||||
'unit_of_measurement': '€/kWh',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_next_hour_price-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'attribution': 'Data provided by EnergyZero',
|
||||
'friendly_name': 'Energy market price Next hour',
|
||||
'unit_of_measurement': '€/kWh',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_energy_next_hour_price',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '0.55',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_percentage_of_max-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.energyzero_today_energy_percentage_of_max',
|
||||
'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': 'Current percentage of highest price - today',
|
||||
'platform': 'energyzero',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'percentage_of_max',
|
||||
'unique_id': '12345_today_energy_percentage_of_max',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_energy_percentage_of_max-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'attribution': 'Data provided by EnergyZero',
|
||||
'friendly_name': 'Energy market price Current percentage of highest price - today',
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_energy_percentage_of_max',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '89.09',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_gas_current_hour_price-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
@ -414,32 +465,71 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'current_hour_price',
|
||||
'unique_id': '12345_today_gas_current_hour_price',
|
||||
'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': <ANY>,
|
||||
'configuration_url': None,
|
||||
'connections': set({
|
||||
# name: test_sensor[sensor.energyzero_today_gas_current_hour_price-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'attribution': 'Data provided by EnergyZero',
|
||||
'friendly_name': 'Gas market price Current hour',
|
||||
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||
'unit_of_measurement': '€/m³',
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'entry_type': <DeviceEntryType.SERVICE: 'service'>,
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'model_id': None,
|
||||
'name': 'Gas market price',
|
||||
'name_by_user': None,
|
||||
'primary_config_entry': <ANY>,
|
||||
'serial_number': None,
|
||||
'suggested_area': None,
|
||||
'sw_version': None,
|
||||
'via_device_id': None,
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_gas_current_hour_price',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '1.47',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_gas_next_hour_price-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.energyzero_today_gas_next_hour_price',
|
||||
'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': 'Next hour',
|
||||
'platform': 'energyzero',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'next_hour_price',
|
||||
'unique_id': '12345_today_gas_next_hour_price',
|
||||
'unit_of_measurement': '€/m³',
|
||||
})
|
||||
# ---
|
||||
# name: test_sensor[sensor.energyzero_today_gas_next_hour_price-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'attribution': 'Data provided by EnergyZero',
|
||||
'friendly_name': 'Gas market price Next hour',
|
||||
'unit_of_measurement': '€/m³',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.energyzero_today_gas_next_hour_price',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '1.47',
|
||||
})
|
||||
# ---
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
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
|
||||
@ -15,7 +13,6 @@ from tests.common import MockConfigEntry
|
||||
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(
|
||||
@ -32,7 +29,8 @@ async def test_full_user_flow(
|
||||
)
|
||||
|
||||
assert result2.get("type") is FlowResultType.CREATE_ENTRY
|
||||
assert result2 == snapshot
|
||||
assert result2.get("title") == "EnergyZero"
|
||||
assert result2.get("data") == {}
|
||||
|
||||
assert len(mock_setup_entry.mock_calls) == 1
|
||||
|
||||
|
@ -1,53 +1,54 @@
|
||||
"""Tests for the diagnostics data provided by the EnergyZero integration."""
|
||||
|
||||
from unittest.mock import MagicMock
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
|
||||
from energyzero import EnergyZeroNoDataError
|
||||
from freezegun.api import FrozenDateTimeFactory
|
||||
import pytest
|
||||
from syrupy.assertion import SnapshotAssertion
|
||||
|
||||
from homeassistant.components.homeassistant import SERVICE_UPDATE_ENTITY
|
||||
from homeassistant.const import ATTR_ENTITY_ID
|
||||
from homeassistant.components.energyzero.const import SCAN_INTERVAL
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
from . import setup_integration
|
||||
|
||||
from tests.common import MockConfigEntry, async_fire_time_changed
|
||||
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")
|
||||
|
||||
|
||||
async def test_diagnostics(
|
||||
async def test_entry_diagnostics(
|
||||
hass: HomeAssistant,
|
||||
hass_client: ClientSessionGenerator,
|
||||
init_integration: MockConfigEntry,
|
||||
mock_energyzero: AsyncMock,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
snapshot: SnapshotAssertion,
|
||||
) -> None:
|
||||
"""Test diagnostics."""
|
||||
assert (
|
||||
await get_diagnostics_for_config_entry(hass, hass_client, init_integration)
|
||||
== snapshot
|
||||
"""Test the EnergyZero entry diagnostics."""
|
||||
await setup_integration(hass, mock_config_entry)
|
||||
|
||||
result = await get_diagnostics_for_config_entry(
|
||||
hass, hass_client, mock_config_entry
|
||||
)
|
||||
|
||||
assert result == snapshot
|
||||
|
||||
|
||||
async def test_diagnostics_no_gas_today(
|
||||
hass: HomeAssistant,
|
||||
hass_client: ClientSessionGenerator,
|
||||
mock_energyzero: MagicMock,
|
||||
init_integration: MockConfigEntry,
|
||||
freezer: FrozenDateTimeFactory,
|
||||
snapshot: SnapshotAssertion,
|
||||
) -> None:
|
||||
"""Test diagnostics, no gas sensors available."""
|
||||
await async_setup_component(hass, "homeassistant", {})
|
||||
mock_energyzero.gas_prices.side_effect = EnergyZeroNoDataError
|
||||
|
||||
await hass.services.async_call(
|
||||
"homeassistant",
|
||||
SERVICE_UPDATE_ENTITY,
|
||||
{ATTR_ENTITY_ID: ["sensor.energyzero_today_gas_current_hour_price"]},
|
||||
blocking=True,
|
||||
)
|
||||
freezer.tick(SCAN_INTERVAL)
|
||||
async_fire_time_changed(hass)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert (
|
||||
|
@ -1,96 +1,49 @@
|
||||
"""Tests for the sensors provided by the EnergyZero integration."""
|
||||
|
||||
from unittest.mock import MagicMock
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
from energyzero import EnergyZeroNoDataError
|
||||
from freezegun.api import FrozenDateTimeFactory
|
||||
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.const import ATTR_ENTITY_ID, STATE_UNKNOWN
|
||||
from homeassistant.components.energyzero.const import SCAN_INTERVAL
|
||||
from homeassistant.const import 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 homeassistant.helpers import entity_registry as er
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
from . import setup_integration
|
||||
|
||||
from tests.common import MockConfigEntry, async_fire_time_changed, snapshot_platform
|
||||
|
||||
pytestmark = [pytest.mark.freeze_time("2022-12-07 15:00:00")]
|
||||
|
||||
|
||||
@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_energy_hours_priced_equal_or_lower",
|
||||
"today_energy_hours_priced_equal_or_lower",
|
||||
"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,
|
||||
mock_energyzero: AsyncMock,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
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
|
||||
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}"
|
||||
with patch("homeassistant.components.energyzero.PLATFORMS", ["sensor"]):
|
||||
await setup_integration(hass, mock_config_entry)
|
||||
|
||||
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}")}
|
||||
await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("init_integration")
|
||||
async def test_no_gas_today(hass: HomeAssistant, mock_energyzero: MagicMock) -> None:
|
||||
async def test_no_gas_today(
|
||||
hass: HomeAssistant,
|
||||
mock_energyzero: MagicMock,
|
||||
freezer: FrozenDateTimeFactory,
|
||||
) -> None:
|
||||
"""Test the EnergyZero - No gas sensors available."""
|
||||
await async_setup_component(hass, "homeassistant", {})
|
||||
|
||||
mock_energyzero.gas_prices.side_effect = EnergyZeroNoDataError
|
||||
|
||||
await hass.services.async_call(
|
||||
"homeassistant",
|
||||
SERVICE_UPDATE_ENTITY,
|
||||
{ATTR_ENTITY_ID: ["sensor.energyzero_today_gas_current_hour_price"]},
|
||||
blocking=True,
|
||||
)
|
||||
freezer.tick(SCAN_INTERVAL)
|
||||
async_fire_time_changed(hass)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert (state := hass.states.get("sensor.energyzero_today_gas_current_hour_price"))
|
||||
|
Loading…
x
Reference in New Issue
Block a user