From 970359c6a06a8df316ca5b58f04580be5655f32c Mon Sep 17 00:00:00 2001 From: G Johansson Date: Mon, 26 May 2025 14:25:07 +0200 Subject: [PATCH] Empty response returns empty list in Nord Pool (#145514) --- homeassistant/components/nordpool/services.py | 7 ++--- .../components/nordpool/strings.json | 3 -- .../nordpool/snapshots/test_services.ambr | 6 ++++ tests/components/nordpool/test_services.py | 28 ++++++++++++++++++- 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/nordpool/services.py b/homeassistant/components/nordpool/services.py index 6607edfdbcb..628962811e3 100644 --- a/homeassistant/components/nordpool/services.py +++ b/homeassistant/components/nordpool/services.py @@ -97,11 +97,8 @@ def async_setup_services(hass: HomeAssistant) -> None: translation_domain=DOMAIN, translation_key="authentication_error", ) from error - except NordPoolEmptyResponseError as error: - raise ServiceValidationError( - translation_domain=DOMAIN, - translation_key="empty_response", - ) from error + except NordPoolEmptyResponseError: + return {area: [] for area in areas} except NordPoolError as error: raise ServiceValidationError( translation_domain=DOMAIN, diff --git a/homeassistant/components/nordpool/strings.json b/homeassistant/components/nordpool/strings.json index 7b33f032de1..73c35673826 100644 --- a/homeassistant/components/nordpool/strings.json +++ b/homeassistant/components/nordpool/strings.json @@ -129,9 +129,6 @@ "authentication_error": { "message": "There was an authentication error as you tried to retrieve data too far in the past." }, - "empty_response": { - "message": "Nord Pool has not posted market prices for the provided date." - }, "connection_error": { "message": "There was a connection error connecting to the API. Try again later." } diff --git a/tests/components/nordpool/snapshots/test_services.ambr b/tests/components/nordpool/snapshots/test_services.ambr index 6a57d7ecce9..b271b433061 100644 --- a/tests/components/nordpool/snapshots/test_services.ambr +++ b/tests/components/nordpool/snapshots/test_services.ambr @@ -1,4 +1,10 @@ # serializer version: 1 +# name: test_empty_response_returns_empty_list + dict({ + 'SE3': list([ + ]), + }) +# --- # name: test_service_call dict({ 'SE3': list([ diff --git a/tests/components/nordpool/test_services.py b/tests/components/nordpool/test_services.py index 6d6af685d28..d59ec4712d7 100644 --- a/tests/components/nordpool/test_services.py +++ b/tests/components/nordpool/test_services.py @@ -74,7 +74,6 @@ async def test_service_call( ("error", "key"), [ (NordPoolAuthenticationError, "authentication_error"), - (NordPoolEmptyResponseError, "empty_response"), (NordPoolError, "connection_error"), ], ) @@ -106,6 +105,33 @@ async def test_service_call_failures( assert err.value.translation_key == key +@pytest.mark.freeze_time("2024-11-05T18:00:00+00:00") +async def test_empty_response_returns_empty_list( + hass: HomeAssistant, + load_int: MockConfigEntry, + snapshot: SnapshotAssertion, +) -> None: + """Test get_prices_for_date service call return empty list for empty response.""" + service_data = TEST_SERVICE_DATA.copy() + service_data[ATTR_CONFIG_ENTRY] = load_int.entry_id + + with ( + patch( + "homeassistant.components.nordpool.coordinator.NordPoolClient.async_get_delivery_period", + side_effect=NordPoolEmptyResponseError, + ), + ): + response = await hass.services.async_call( + DOMAIN, + SERVICE_GET_PRICES_FOR_DATE, + service_data, + blocking=True, + return_response=True, + ) + + assert response == snapshot + + @pytest.mark.freeze_time("2024-11-05T18:00:00+00:00") async def test_service_call_config_entry_bad_state( hass: HomeAssistant,