mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +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."""
|
"""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",
|
title="energy",
|
||||||
domain=DOMAIN,
|
domain=DOMAIN,
|
||||||
data={},
|
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
|
# 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
|
# name: test_diagnostics_no_gas_today
|
||||||
dict({
|
dict({
|
||||||
'energy': 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
|
# serializer version: 1
|
||||||
# name: test_sensor[sensor.energyzero_today_energy_average_price-today_energy_average_price-today_energy]
|
# name: test_sensor[sensor.energyzero_today_energy_average_price-entry]
|
||||||
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
|
|
||||||
EntityRegistryEntrySnapshot({
|
EntityRegistryEntrySnapshot({
|
||||||
'aliases': set({
|
'aliases': set({
|
||||||
}),
|
}),
|
||||||
@ -43,52 +28,26 @@
|
|||||||
'previous_unique_id': None,
|
'previous_unique_id': None,
|
||||||
'supported_features': 0,
|
'supported_features': 0,
|
||||||
'translation_key': 'average_price',
|
'translation_key': 'average_price',
|
||||||
|
'unique_id': '12345_today_energy_average_price',
|
||||||
'unit_of_measurement': '€/kWh',
|
'unit_of_measurement': '€/kWh',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
# name: test_sensor[sensor.energyzero_today_energy_average_price-today_energy_average_price-today_energy].2
|
# name: test_sensor[sensor.energyzero_today_energy_average_price-state]
|
||||||
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]
|
|
||||||
StateSnapshot({
|
StateSnapshot({
|
||||||
'attributes': ReadOnlyDict({
|
'attributes': ReadOnlyDict({
|
||||||
'attribution': 'Data provided by EnergyZero',
|
'attribution': 'Data provided by EnergyZero',
|
||||||
'friendly_name': 'Energy market price Current hour',
|
'friendly_name': 'Energy market price Average - today',
|
||||||
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
|
||||||
'unit_of_measurement': '€/kWh',
|
'unit_of_measurement': '€/kWh',
|
||||||
}),
|
}),
|
||||||
'context': <ANY>,
|
'context': <ANY>,
|
||||||
'entity_id': 'sensor.energyzero_today_energy_current_hour_price',
|
'entity_id': 'sensor.energyzero_today_energy_average_price',
|
||||||
'last_changed': <ANY>,
|
'last_changed': <ANY>,
|
||||||
'last_reported': <ANY>,
|
'last_reported': <ANY>,
|
||||||
'last_updated': <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({
|
EntityRegistryEntrySnapshot({
|
||||||
'aliases': set({
|
'aliases': set({
|
||||||
}),
|
}),
|
||||||
@ -119,51 +78,27 @@
|
|||||||
'previous_unique_id': None,
|
'previous_unique_id': None,
|
||||||
'supported_features': 0,
|
'supported_features': 0,
|
||||||
'translation_key': 'current_hour_price',
|
'translation_key': 'current_hour_price',
|
||||||
|
'unique_id': '12345_today_energy_current_hour_price',
|
||||||
'unit_of_measurement': '€/kWh',
|
'unit_of_measurement': '€/kWh',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
# name: test_sensor[sensor.energyzero_today_energy_current_hour_price-today_energy_current_hour_price-today_energy].2
|
# name: test_sensor[sensor.energyzero_today_energy_current_hour_price-state]
|
||||||
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]
|
|
||||||
StateSnapshot({
|
StateSnapshot({
|
||||||
'attributes': ReadOnlyDict({
|
'attributes': ReadOnlyDict({
|
||||||
'attribution': 'Data provided by EnergyZero',
|
'attribution': 'Data provided by EnergyZero',
|
||||||
'device_class': 'timestamp',
|
'friendly_name': 'Energy market price Current hour',
|
||||||
'friendly_name': 'Energy market price Time of highest price - today',
|
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||||
|
'unit_of_measurement': '€/kWh',
|
||||||
}),
|
}),
|
||||||
'context': <ANY>,
|
'context': <ANY>,
|
||||||
'entity_id': 'sensor.energyzero_today_energy_highest_price_time',
|
'entity_id': 'sensor.energyzero_today_energy_current_hour_price',
|
||||||
'last_changed': <ANY>,
|
'last_changed': <ANY>,
|
||||||
'last_reported': <ANY>,
|
'last_reported': <ANY>,
|
||||||
'last_updated': <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({
|
EntityRegistryEntrySnapshot({
|
||||||
'aliases': set({
|
'aliases': set({
|
||||||
}),
|
}),
|
||||||
@ -192,51 +127,26 @@
|
|||||||
'previous_unique_id': None,
|
'previous_unique_id': None,
|
||||||
'supported_features': 0,
|
'supported_features': 0,
|
||||||
'translation_key': 'highest_price_time',
|
'translation_key': 'highest_price_time',
|
||||||
|
'unique_id': '12345_today_energy_highest_price_time',
|
||||||
'unit_of_measurement': None,
|
'unit_of_measurement': None,
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
# name: test_sensor[sensor.energyzero_today_energy_highest_price_time-today_energy_highest_price_time-today_energy].2
|
# name: test_sensor[sensor.energyzero_today_energy_highest_price_time-state]
|
||||||
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]
|
|
||||||
StateSnapshot({
|
StateSnapshot({
|
||||||
'attributes': ReadOnlyDict({
|
'attributes': ReadOnlyDict({
|
||||||
'attribution': 'Data provided by EnergyZero',
|
'attribution': 'Data provided by EnergyZero',
|
||||||
'friendly_name': 'Energy market price Hours priced equal or lower than current - today',
|
'device_class': 'timestamp',
|
||||||
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
|
'friendly_name': 'Energy market price Time of highest price - today',
|
||||||
}),
|
}),
|
||||||
'context': <ANY>,
|
'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_changed': <ANY>,
|
||||||
'last_reported': <ANY>,
|
'last_reported': <ANY>,
|
||||||
'last_updated': <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({
|
EntityRegistryEntrySnapshot({
|
||||||
'aliases': set({
|
'aliases': set({
|
||||||
}),
|
}),
|
||||||
@ -265,51 +175,74 @@
|
|||||||
'previous_unique_id': None,
|
'previous_unique_id': None,
|
||||||
'supported_features': 0,
|
'supported_features': 0,
|
||||||
'translation_key': 'hours_priced_equal_or_lower',
|
'translation_key': 'hours_priced_equal_or_lower',
|
||||||
|
'unique_id': '12345_today_energy_hours_priced_equal_or_lower',
|
||||||
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
|
'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
|
# name: test_sensor[sensor.energyzero_today_energy_hours_priced_equal_or_lower-state]
|
||||||
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]
|
|
||||||
StateSnapshot({
|
StateSnapshot({
|
||||||
'attributes': ReadOnlyDict({
|
'attributes': ReadOnlyDict({
|
||||||
'attribution': 'Data provided by EnergyZero',
|
'attribution': 'Data provided by EnergyZero',
|
||||||
'friendly_name': 'Energy market price Highest price - today',
|
'friendly_name': 'Energy market price Hours priced equal or lower than current - today',
|
||||||
'unit_of_measurement': '€/kWh',
|
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
|
||||||
}),
|
}),
|
||||||
'context': <ANY>,
|
'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_changed': <ANY>,
|
||||||
'last_reported': <ANY>,
|
'last_reported': <ANY>,
|
||||||
'last_updated': <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({
|
EntityRegistryEntrySnapshot({
|
||||||
'aliases': set({
|
'aliases': set({
|
||||||
}),
|
}),
|
||||||
@ -338,52 +271,170 @@
|
|||||||
'previous_unique_id': None,
|
'previous_unique_id': None,
|
||||||
'supported_features': 0,
|
'supported_features': 0,
|
||||||
'translation_key': 'max_price',
|
'translation_key': 'max_price',
|
||||||
|
'unique_id': '12345_today_energy_max_price',
|
||||||
'unit_of_measurement': '€/kWh',
|
'unit_of_measurement': '€/kWh',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
# name: test_sensor[sensor.energyzero_today_energy_max_price-today_energy_max_price-today_energy].2
|
# name: test_sensor[sensor.energyzero_today_energy_max_price-state]
|
||||||
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]
|
|
||||||
StateSnapshot({
|
StateSnapshot({
|
||||||
'attributes': ReadOnlyDict({
|
'attributes': ReadOnlyDict({
|
||||||
'attribution': 'Data provided by EnergyZero',
|
'attribution': 'Data provided by EnergyZero',
|
||||||
'friendly_name': 'Gas market price Current hour',
|
'friendly_name': 'Energy market price Highest price - today',
|
||||||
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
'unit_of_measurement': '€/kWh',
|
||||||
'unit_of_measurement': '€/m³',
|
|
||||||
}),
|
}),
|
||||||
'context': <ANY>,
|
'context': <ANY>,
|
||||||
'entity_id': 'sensor.energyzero_today_gas_current_hour_price',
|
'entity_id': 'sensor.energyzero_today_energy_max_price',
|
||||||
'last_changed': <ANY>,
|
'last_changed': <ANY>,
|
||||||
'last_reported': <ANY>,
|
'last_reported': <ANY>,
|
||||||
'last_updated': <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({
|
EntityRegistryEntrySnapshot({
|
||||||
'aliases': set({
|
'aliases': set({
|
||||||
}),
|
}),
|
||||||
@ -414,32 +465,71 @@
|
|||||||
'previous_unique_id': None,
|
'previous_unique_id': None,
|
||||||
'supported_features': 0,
|
'supported_features': 0,
|
||||||
'translation_key': 'current_hour_price',
|
'translation_key': 'current_hour_price',
|
||||||
|
'unique_id': '12345_today_gas_current_hour_price',
|
||||||
'unit_of_measurement': '€/m³',
|
'unit_of_measurement': '€/m³',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
# name: test_sensor[sensor.energyzero_today_gas_current_hour_price-today_gas_current_hour_price-today_gas].2
|
# name: test_sensor[sensor.energyzero_today_gas_current_hour_price-state]
|
||||||
DeviceRegistryEntrySnapshot({
|
StateSnapshot({
|
||||||
'area_id': None,
|
'attributes': ReadOnlyDict({
|
||||||
'config_entries': <ANY>,
|
'attribution': 'Data provided by EnergyZero',
|
||||||
'configuration_url': None,
|
'friendly_name': 'Gas market price Current hour',
|
||||||
'connections': set({
|
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||||
|
'unit_of_measurement': '€/m³',
|
||||||
}),
|
}),
|
||||||
'disabled_by': None,
|
'context': <ANY>,
|
||||||
'entry_type': <DeviceEntryType.SERVICE: 'service'>,
|
'entity_id': 'sensor.energyzero_today_gas_current_hour_price',
|
||||||
'hw_version': None,
|
'last_changed': <ANY>,
|
||||||
'id': <ANY>,
|
'last_reported': <ANY>,
|
||||||
'is_new': False,
|
'last_updated': <ANY>,
|
||||||
'labels': set({
|
'state': '1.47',
|
||||||
}),
|
})
|
||||||
'manufacturer': 'EnergyZero',
|
# ---
|
||||||
'model': None,
|
# name: test_sensor[sensor.energyzero_today_gas_next_hour_price-entry]
|
||||||
'model_id': None,
|
EntityRegistryEntrySnapshot({
|
||||||
'name': 'Gas market price',
|
'aliases': set({
|
||||||
'name_by_user': None,
|
}),
|
||||||
'primary_config_entry': <ANY>,
|
'area_id': None,
|
||||||
'serial_number': None,
|
'capabilities': None,
|
||||||
'suggested_area': None,
|
'config_entry_id': <ANY>,
|
||||||
'sw_version': None,
|
'device_class': None,
|
||||||
'via_device_id': 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 unittest.mock import MagicMock
|
||||||
|
|
||||||
from syrupy.assertion import SnapshotAssertion
|
|
||||||
|
|
||||||
from homeassistant.components.energyzero.const import DOMAIN
|
from homeassistant.components.energyzero.const import DOMAIN
|
||||||
from homeassistant.config_entries import SOURCE_USER
|
from homeassistant.config_entries import SOURCE_USER
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
@ -15,7 +13,6 @@ from tests.common import MockConfigEntry
|
|||||||
async def test_full_user_flow(
|
async def test_full_user_flow(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
mock_setup_entry: MagicMock,
|
mock_setup_entry: MagicMock,
|
||||||
snapshot: SnapshotAssertion,
|
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test the full user configuration flow."""
|
"""Test the full user configuration flow."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
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.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
|
assert len(mock_setup_entry.mock_calls) == 1
|
||||||
|
|
||||||
|
@ -1,53 +1,54 @@
|
|||||||
"""Tests for the diagnostics data provided by the EnergyZero integration."""
|
"""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 energyzero import EnergyZeroNoDataError
|
||||||
|
from freezegun.api import FrozenDateTimeFactory
|
||||||
import pytest
|
import pytest
|
||||||
from syrupy.assertion import SnapshotAssertion
|
from syrupy.assertion import SnapshotAssertion
|
||||||
|
|
||||||
from homeassistant.components.homeassistant import SERVICE_UPDATE_ENTITY
|
from homeassistant.components.energyzero.const import SCAN_INTERVAL
|
||||||
from homeassistant.const import ATTR_ENTITY_ID
|
|
||||||
from homeassistant.core import HomeAssistant
|
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.components.diagnostics import get_diagnostics_for_config_entry
|
||||||
from tests.typing import ClientSessionGenerator
|
from tests.typing import ClientSessionGenerator
|
||||||
|
|
||||||
pytestmark = pytest.mark.freeze_time("2022-12-07 15:00:00")
|
pytestmark = pytest.mark.freeze_time("2022-12-07 15:00:00")
|
||||||
|
|
||||||
|
|
||||||
async def test_diagnostics(
|
async def test_entry_diagnostics(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
hass_client: ClientSessionGenerator,
|
hass_client: ClientSessionGenerator,
|
||||||
init_integration: MockConfigEntry,
|
mock_energyzero: AsyncMock,
|
||||||
|
mock_config_entry: MockConfigEntry,
|
||||||
snapshot: SnapshotAssertion,
|
snapshot: SnapshotAssertion,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test diagnostics."""
|
"""Test the EnergyZero entry diagnostics."""
|
||||||
assert (
|
await setup_integration(hass, mock_config_entry)
|
||||||
await get_diagnostics_for_config_entry(hass, hass_client, init_integration)
|
|
||||||
== snapshot
|
result = await get_diagnostics_for_config_entry(
|
||||||
|
hass, hass_client, mock_config_entry
|
||||||
)
|
)
|
||||||
|
|
||||||
|
assert result == snapshot
|
||||||
|
|
||||||
|
|
||||||
async def test_diagnostics_no_gas_today(
|
async def test_diagnostics_no_gas_today(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
hass_client: ClientSessionGenerator,
|
hass_client: ClientSessionGenerator,
|
||||||
mock_energyzero: MagicMock,
|
mock_energyzero: MagicMock,
|
||||||
init_integration: MockConfigEntry,
|
init_integration: MockConfigEntry,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
snapshot: SnapshotAssertion,
|
snapshot: SnapshotAssertion,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test diagnostics, no gas sensors available."""
|
"""Test diagnostics, no gas sensors available."""
|
||||||
await async_setup_component(hass, "homeassistant", {})
|
|
||||||
mock_energyzero.gas_prices.side_effect = EnergyZeroNoDataError
|
mock_energyzero.gas_prices.side_effect = EnergyZeroNoDataError
|
||||||
|
|
||||||
await hass.services.async_call(
|
freezer.tick(SCAN_INTERVAL)
|
||||||
"homeassistant",
|
async_fire_time_changed(hass)
|
||||||
SERVICE_UPDATE_ENTITY,
|
|
||||||
{ATTR_ENTITY_ID: ["sensor.energyzero_today_gas_current_hour_price"]},
|
|
||||||
blocking=True,
|
|
||||||
)
|
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
assert (
|
assert (
|
||||||
|
@ -1,96 +1,49 @@
|
|||||||
"""Tests for the sensors provided by the EnergyZero integration."""
|
"""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 energyzero import EnergyZeroNoDataError
|
||||||
|
from freezegun.api import FrozenDateTimeFactory
|
||||||
import pytest
|
import pytest
|
||||||
from syrupy.assertion import SnapshotAssertion
|
from syrupy.assertion import SnapshotAssertion
|
||||||
from syrupy.filters import props
|
|
||||||
|
|
||||||
from homeassistant.components.energyzero.const import DOMAIN
|
from homeassistant.components.energyzero.const import SCAN_INTERVAL
|
||||||
from homeassistant.components.homeassistant import SERVICE_UPDATE_ENTITY
|
from homeassistant.const import STATE_UNKNOWN
|
||||||
from homeassistant.const import ATTR_ENTITY_ID, STATE_UNKNOWN
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
from homeassistant.helpers import entity_registry as er
|
||||||
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, snapshot_platform
|
||||||
|
|
||||||
pytestmark = [pytest.mark.freeze_time("2022-12-07 15:00:00")]
|
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(
|
async def test_sensor(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
init_integration: MockConfigEntry,
|
mock_energyzero: AsyncMock,
|
||||||
device_registry: dr.DeviceRegistry,
|
mock_config_entry: MockConfigEntry,
|
||||||
entity_registry: er.EntityRegistry,
|
entity_registry: er.EntityRegistry,
|
||||||
snapshot: SnapshotAssertion,
|
snapshot: SnapshotAssertion,
|
||||||
entity_id: str,
|
|
||||||
entity_unique_id: str,
|
|
||||||
device_identifier: str,
|
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test the EnergyZero - Energy sensors."""
|
"""Test the EnergyZero - Energy sensors."""
|
||||||
entry_id = init_integration.entry_id
|
with patch("homeassistant.components.energyzero.PLATFORMS", ["sensor"]):
|
||||||
assert (state := hass.states.get(entity_id))
|
await setup_integration(hass, mock_config_entry)
|
||||||
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}"
|
|
||||||
|
|
||||||
assert entity_entry.device_id
|
await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_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.usefixtures("init_integration")
|
@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."""
|
"""Test the EnergyZero - No gas sensors available."""
|
||||||
await async_setup_component(hass, "homeassistant", {})
|
|
||||||
|
|
||||||
mock_energyzero.gas_prices.side_effect = EnergyZeroNoDataError
|
mock_energyzero.gas_prices.side_effect = EnergyZeroNoDataError
|
||||||
|
|
||||||
await hass.services.async_call(
|
freezer.tick(SCAN_INTERVAL)
|
||||||
"homeassistant",
|
async_fire_time_changed(hass)
|
||||||
SERVICE_UPDATE_ENTITY,
|
|
||||||
{ATTR_ENTITY_ID: ["sensor.energyzero_today_gas_current_hour_price"]},
|
|
||||||
blocking=True,
|
|
||||||
)
|
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
assert (state := hass.states.get("sensor.energyzero_today_gas_current_hour_price"))
|
assert (state := hass.states.get("sensor.energyzero_today_gas_current_hour_price"))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user