From eca4435eabc7eee9d9a06149ee5e8505bb8e4213 Mon Sep 17 00:00:00 2001 From: Andrey Khrolenok Date: Fri, 17 May 2024 15:52:22 +0300 Subject: [PATCH] Fix condition calculation --- custom_components/gismeteo/api.py | 4 ++-- tests/test_api.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/custom_components/gismeteo/api.py b/custom_components/gismeteo/api.py index 78a3546..b763615 100644 --- a/custom_components/gismeteo/api.py +++ b/custom_components/gismeteo/api.py @@ -319,8 +319,8 @@ def condition(self, src=None, mode: str = FORECAST_MODE_HOURLY) -> str | None: return None if cld == 0: if mode == FORECAST_MODE_DAILY or ( - src.get(ATTR_FORECAST_TIME, dt_util.now()) - < src.get(ATTR_SUNRISE) + src.get(ATTR_SUNRISE) + < src.get(ATTR_FORECAST_TIME, dt_util.now()) < src.get(ATTR_SUNSET) ): cond = ATTR_CONDITION_SUNNY # Sunshine diff --git a/tests/test_api.py b/tests/test_api.py index 5b689f2..279a0e5 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -20,6 +20,7 @@ ATTR_FORECAST_PHENOMENON, ATTR_FORECAST_PRECIPITATION_INTENSITY, ATTR_FORECAST_PRECIPITATION_TYPE, + ATTR_SUNRISE, CONDITION_FOG_CLASSES, FORECAST_MODE_DAILY, ) @@ -34,6 +35,7 @@ ATTR_CONDITION_RAINY, ATTR_CONDITION_SNOWY, ATTR_CONDITION_SNOWY_RAINY, + ATTR_CONDITION_SUNNY, ATTR_CONDITION_WINDY, ATTR_CONDITION_WINDY_VARIANT, ATTR_FORECAST_CLOUD_COVERAGE, @@ -503,9 +505,17 @@ async def test_condition(): data[ATTR_FORECAST_CLOUD_COVERAGE] = 0 + assert gismeteo.condition(data) == ATTR_CONDITION_SUNNY + assert gismeteo_d.condition(data) == ATTR_CONDITION_SUNNY + + tmp = data[ATTR_SUNRISE] + data[ATTR_SUNRISE] = dt_util.now().replace(hour=23, minute=59, second=59) + assert gismeteo.condition(data) == ATTR_CONDITION_CLEAR_NIGHT assert gismeteo_d.condition(data) == ATTR_CONDITION_CLEAR_NIGHT + data[ATTR_SUNRISE] = tmp + data[ATTR_FORECAST_CLOUD_COVERAGE] = 1 assert gismeteo.condition(data) == ATTR_CONDITION_PARTLYCLOUDY