Fix solaredge tests (#171378)

This commit is contained in:
Jan-Philipp Benecke
2026-05-19 18:38:10 +02:00
committed by GitHub
parent 89e15b9eae
commit 66aad8d3c5
2 changed files with 146 additions and 14 deletions
@@ -693,6 +693,66 @@
'state': '1',
})
# ---
# name: test_all_entities[sensor.solaredge_grid_flow_direction-entry]
EntityRegistryEntrySnapshot({
'aliases': list([
None,
]),
'area_id': None,
'capabilities': dict({
'options': list([
'export',
'import',
]),
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.solaredge_grid_flow_direction',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'object_id_base': 'Grid flow direction',
'options': dict({
}),
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
'original_icon': None,
'original_name': 'Grid flow direction',
'platform': 'solaredge',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'grid_flow_direction',
'unique_id': '1a2b3c4d5e6f7g8h_grid_flow_direction',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[sensor.solaredge_grid_flow_direction-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'enum',
'friendly_name': 'SolarEdge Grid flow direction',
'options': list([
'export',
'import',
]),
}),
'context': <ANY>,
'entity_id': 'sensor.solaredge_grid_flow_direction',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'import',
})
# ---
# name: test_all_entities[sensor.solaredge_grid_power-entry]
EntityRegistryEntrySnapshot({
'aliases': list([
@@ -739,7 +799,6 @@
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'power',
'flow': 'import',
'friendly_name': 'SolarEdge Grid power',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'status': 'Active',
@@ -1464,6 +1523,66 @@
'state': '300.0',
})
# ---
# name: test_all_entities[sensor.solaredge_storage_flow_direction-entry]
EntityRegistryEntrySnapshot({
'aliases': list([
None,
]),
'area_id': None,
'capabilities': dict({
'options': list([
'charge',
'discharge',
]),
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.solaredge_storage_flow_direction',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'object_id_base': 'Storage flow direction',
'options': dict({
}),
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
'original_icon': None,
'original_name': 'Storage flow direction',
'platform': 'solaredge',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'storage_flow_direction',
'unique_id': '1a2b3c4d5e6f7g8h_storage_flow_direction',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[sensor.solaredge_storage_flow_direction-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'enum',
'friendly_name': 'SolarEdge Storage flow direction',
'options': list([
'charge',
'discharge',
]),
}),
'context': <ANY>,
'entity_id': 'sensor.solaredge_storage_flow_direction',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'charge',
})
# ---
# name: test_all_entities[sensor.solaredge_storage_level-entry]
EntityRegistryEntrySnapshot({
'aliases': list([
@@ -1565,9 +1684,7 @@
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'power',
'flow': 'charge',
'friendly_name': 'SolarEdge Storage power',
'soc': 75,
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'status': 'Charging',
'unit_of_measurement': 'W',
+26 -11
View File
@@ -301,13 +301,22 @@ async def test_power_flow_grid_export_storage_discharge(
grid = hass.states.get("sensor.solaredge_grid_power")
assert grid is not None
assert grid.state == "-100.0"
assert grid.attributes["flow"] == "export"
storage = hass.states.get("sensor.solaredge_storage_power")
assert storage is not None
assert storage.state == "400.0"
assert storage.attributes["flow"] == "discharge"
assert storage.attributes["soc"] == 60
grid_direction = hass.states.get("sensor.solaredge_grid_flow_direction")
assert grid_direction is not None
assert grid_direction.state == "export"
storage_direction = hass.states.get("sensor.solaredge_storage_flow_direction")
assert storage_direction is not None
assert storage_direction.state == "discharge"
storage_level = hass.states.get("sensor.solaredge_storage_level")
assert storage_level is not None
assert storage_level.state == "60"
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
@@ -739,12 +748,13 @@ def _power_flow_payload(
(False, True, "import", "charge"),
],
)
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
@patch("homeassistant.components.solaredge.SolarEdge")
async def test_power_flow_direction_sensors(
mock_solaredge: MagicMock,
recorder_mock: Recorder,
hass: HomeAssistant,
mock_solaredge_api: AsyncMock,
solaredge_api: Mock,
mock_config_entry: MockConfigEntry,
grid_export: bool,
storage_charging: bool,
@@ -752,12 +762,12 @@ async def test_power_flow_direction_sensors(
expected_storage: str,
) -> None:
"""Test that grid and storage flow direction ENUM sensors are populated."""
mock_solaredge_api.get_current_power_flow = AsyncMock(
solaredge_api.get_current_power_flow = AsyncMock(
return_value=_power_flow_payload(
grid_export=grid_export, storage_charging=storage_charging
)
)
mock_solaredge.return_value = mock_solaredge_api
mock_solaredge.return_value = solaredge_api
mock_config_entry.add_to_hass(hass)
await hass.config_entries.async_setup(mock_config_entry.entry_id)
@@ -786,21 +796,22 @@ async def test_power_flow_direction_sensors(
assert "soc" not in storage_power.attributes
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
@patch("homeassistant.components.solaredge.SolarEdge")
async def test_storage_level_from_power_flow(
mock_solaredge: MagicMock,
recorder_mock: Recorder,
hass: HomeAssistant,
mock_solaredge_api: AsyncMock,
solaredge_api: Mock,
mock_config_entry: MockConfigEntry,
) -> None:
"""Test that the storage level sensor reads chargeLevel from power-flow data."""
mock_solaredge_api.get_current_power_flow = AsyncMock(
solaredge_api.get_current_power_flow = AsyncMock(
return_value=_power_flow_payload(
grid_export=False, storage_charging=True, charge_level=42
)
)
mock_solaredge.return_value = mock_solaredge_api
mock_solaredge.return_value = solaredge_api
mock_config_entry.add_to_hass(hass)
await hass.config_entries.async_setup(mock_config_entry.entry_id)
@@ -811,16 +822,20 @@ async def test_storage_level_from_power_flow(
assert state.state == "42"
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
@patch("homeassistant.components.solaredge.SolarEdge")
async def test_power_flow_direction_sensors_missing_connections(
mock_solaredge: MagicMock,
recorder_mock: Recorder,
hass: HomeAssistant,
mock_solaredge_api: AsyncMock,
solaredge_api: Mock,
mock_config_entry: MockConfigEntry,
) -> None:
"""Test direction sensors stay unknown when power flow has no connections."""
mock_solaredge.return_value = mock_solaredge_api
solaredge_api.get_current_power_flow = AsyncMock(
return_value={"siteCurrentPowerFlow": {"unit": "W"}}
)
mock_solaredge.return_value = solaredge_api
mock_config_entry.add_to_hass(hass)
await hass.config_entries.async_setup(mock_config_entry.entry_id)