diff --git a/tests/components/solaredge/snapshots/test_sensor.ambr b/tests/components/solaredge/snapshots/test_sensor.ambr index 679a530201f3..8c8e20267bf8 100644 --- a/tests/components/solaredge/snapshots/test_sensor.ambr +++ b/tests/components/solaredge/snapshots/test_sensor.ambr @@ -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': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + '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': , + 'labels': set({ + }), + 'name': None, + 'object_id_base': 'Grid flow direction', + 'options': dict({ + }), + 'original_device_class': , + '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': , + 'entity_id': 'sensor.solaredge_grid_flow_direction', + 'last_changed': , + 'last_reported': , + 'last_updated': , + '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': , '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': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + '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': , + 'labels': set({ + }), + 'name': None, + 'object_id_base': 'Storage flow direction', + 'options': dict({ + }), + 'original_device_class': , + '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': , + 'entity_id': 'sensor.solaredge_storage_flow_direction', + 'last_changed': , + 'last_reported': , + 'last_updated': , + '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': , 'status': 'Charging', 'unit_of_measurement': 'W', diff --git a/tests/components/solaredge/test_sensor.py b/tests/components/solaredge/test_sensor.py index 5aa4fdfd6be7..72e9647eebd5 100644 --- a/tests/components/solaredge/test_sensor.py +++ b/tests/components/solaredge/test_sensor.py @@ -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)