mirror of
https://github.com/jdejaegh/irm-kmi-ha.git
synced 2025-06-27 11:39:26 +02:00
86 lines
2.5 KiB
Python
86 lines
2.5 KiB
Python
import json
|
|
from datetime import datetime
|
|
|
|
from freezegun import freeze_time
|
|
from homeassistant.components.weather import (ATTR_CONDITION_CLOUDY,
|
|
ATTR_CONDITION_PARTLYCLOUDY,
|
|
ATTR_CONDITION_RAINY, Forecast)
|
|
from pytest_homeassistant_custom_component.common import load_fixture
|
|
|
|
from custom_components.irm_kmi.coordinator import IrmKmiCoordinator
|
|
from custom_components.irm_kmi.data import IrmKmiForecast
|
|
|
|
|
|
def get_api_data() -> dict:
|
|
fixture: str = "forecast.json"
|
|
return json.loads(load_fixture(fixture))
|
|
|
|
|
|
@freeze_time(datetime.fromisoformat('2023-12-26T18:30:00.028724'))
|
|
def test_current_weather() -> None:
|
|
api_data = get_api_data()
|
|
result = IrmKmiCoordinator.process_api_data(api_data).get('current_weather')
|
|
|
|
expected = {
|
|
'condition': ATTR_CONDITION_CLOUDY,
|
|
'temperature': 7,
|
|
'wind_speed': 5,
|
|
'wind_gust_speed': None,
|
|
'wind_bearing': 'WSW',
|
|
'pressure': 1020,
|
|
'uv_index': .7
|
|
}
|
|
|
|
assert result == expected
|
|
|
|
|
|
@freeze_time(datetime.fromisoformat('2023-12-26T18:30:00.028724'))
|
|
def test_daily_forecast() -> None:
|
|
api_data = get_api_data().get('for', {}).get('daily')
|
|
result = IrmKmiCoordinator.daily_list_to_forecast(api_data)
|
|
|
|
assert isinstance(result, list)
|
|
assert len(result) == 8
|
|
|
|
expected = IrmKmiForecast(
|
|
datetime='2023-12-27',
|
|
condition=ATTR_CONDITION_PARTLYCLOUDY,
|
|
native_precipitation=0,
|
|
native_temperature=9,
|
|
native_templow=4,
|
|
native_wind_gust_speed=50,
|
|
native_wind_speed=20,
|
|
precipitation_probability=0,
|
|
wind_bearing='S',
|
|
is_daytime=True,
|
|
text_fr='Bar',
|
|
text_nl='Foo'
|
|
)
|
|
|
|
assert result[1] == expected
|
|
|
|
|
|
@freeze_time(datetime.fromisoformat('2023-12-26T18:30:00.028724'))
|
|
def test_hourly_forecast() -> None:
|
|
api_data = get_api_data().get('for', {}).get('hourly')
|
|
result = IrmKmiCoordinator.hourly_list_to_forecast(api_data)
|
|
|
|
assert isinstance(result, list)
|
|
assert len(result) == 49
|
|
|
|
expected = Forecast(
|
|
datetime='2023-12-27T02:00:00',
|
|
condition=ATTR_CONDITION_RAINY,
|
|
native_precipitation=.98,
|
|
native_temperature=8,
|
|
native_templow=None,
|
|
native_wind_gust_speed=None,
|
|
native_wind_speed=15,
|
|
precipitation_probability=70,
|
|
wind_bearing='S',
|
|
native_pressure=1020,
|
|
is_daytime=False
|
|
)
|
|
|
|
assert result[8] == expected
|
|
|