mirror of
https://github.com/jdejaegh/irm-kmi-ha.git
synced 2025-06-26 19:35:40 +02:00
64 lines
2.3 KiB
Python
64 lines
2.3 KiB
Python
import inspect
|
|
from zoneinfo import ZoneInfo
|
|
|
|
import pytest
|
|
from homeassistant.core import HomeAssistant
|
|
from irm_kmi_api.data import CurrentWeatherData
|
|
from pytest_homeassistant_custom_component.common import MockConfigEntry
|
|
|
|
from custom_components.irm_kmi import IrmKmiCoordinator
|
|
from custom_components.irm_kmi.const import (CURRENT_WEATHER_SENSOR_CLASS,
|
|
CURRENT_WEATHER_SENSOR_UNITS,
|
|
CURRENT_WEATHER_SENSORS)
|
|
from custom_components.irm_kmi.data import ProcessedCoordinatorData
|
|
from custom_components.irm_kmi.sensor import IrmKmiCurrentRainfall
|
|
from tests.conftest import get_api_with_data
|
|
|
|
|
|
def test_sensors_in_current_weather_data():
|
|
weather_data_keys = inspect.get_annotations(CurrentWeatherData).keys()
|
|
|
|
for sensor in CURRENT_WEATHER_SENSORS:
|
|
assert sensor in weather_data_keys
|
|
|
|
def test_sensors_have_unit():
|
|
weather_sensor_units_keys = CURRENT_WEATHER_SENSOR_UNITS.keys()
|
|
|
|
for sensor in CURRENT_WEATHER_SENSORS:
|
|
assert sensor in weather_sensor_units_keys
|
|
|
|
def test_sensors_have_class():
|
|
weather_sensor_class_keys = CURRENT_WEATHER_SENSOR_CLASS.keys()
|
|
|
|
for sensor in CURRENT_WEATHER_SENSORS:
|
|
assert sensor in weather_sensor_class_keys
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("expected,filename",
|
|
[
|
|
('mm/h', 'forecast_ams_no_ww.json'),
|
|
('mm/10min', 'forecast_out_of_benelux.json'),
|
|
('mm/10min', 'forecast_with_rain_on_radar.json'),
|
|
])
|
|
async def test_current_rainfall_unit(
|
|
hass: HomeAssistant,
|
|
mock_config_entry: MockConfigEntry,
|
|
expected,
|
|
filename
|
|
) -> None:
|
|
hass.config.time_zone = 'Europe/Brussels'
|
|
coordinator = IrmKmiCoordinator(hass, mock_config_entry)
|
|
api = get_api_with_data(filename)
|
|
tz = ZoneInfo("Europe/Brussels")
|
|
|
|
coordinator.data = ProcessedCoordinatorData(
|
|
current_weather=api.get_current_weather(tz),
|
|
hourly_forecast=api.get_hourly_forecast(tz),
|
|
radar_forecast=api.get_radar_forecast(),
|
|
country=api.get_country()
|
|
)
|
|
|
|
s = IrmKmiCurrentRainfall(coordinator, mock_config_entry)
|
|
|
|
assert s.native_unit_of_measurement == expected
|