Use library classes instead of namedtuple in ipma tests (#115372)
parent
137514edb7
commit
a093f943d7
|
@ -1,8 +1,12 @@
|
|||
"""Tests for the IPMA component."""
|
||||
|
||||
from collections import namedtuple
|
||||
from datetime import UTC, datetime
|
||||
|
||||
from pyipma.forecast import Forecast, Forecast_Location, Weather_Type
|
||||
from pyipma.observation import Observation
|
||||
from pyipma.rcm import RCM
|
||||
from pyipma.uv import UV
|
||||
|
||||
from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE, CONF_MODE, CONF_NAME
|
||||
|
||||
ENTRY_CONFIG = {
|
||||
|
@ -18,109 +22,90 @@ class MockLocation:
|
|||
|
||||
async def fire_risk(self, api):
|
||||
"""Mock Fire Risk."""
|
||||
RCM = namedtuple(
|
||||
"RCM",
|
||||
[
|
||||
"dico",
|
||||
"rcm",
|
||||
"coordinates",
|
||||
],
|
||||
)
|
||||
return RCM("some place", 3, (0, 0))
|
||||
|
||||
async def uv_risk(self, api):
|
||||
"""Mock UV Index."""
|
||||
UV = namedtuple(
|
||||
"UV",
|
||||
["idPeriodo", "intervaloHora", "data", "globalIdLocal", "iUv"],
|
||||
)
|
||||
return UV(0, "0", datetime.now(), 0, 5.7)
|
||||
return UV(0, "0", datetime(2020, 1, 16, 0, 0, 0), 0, 5.7)
|
||||
|
||||
async def observation(self, api):
|
||||
"""Mock Observation."""
|
||||
Observation = namedtuple(
|
||||
"Observation",
|
||||
[
|
||||
"accumulated_precipitation",
|
||||
"humidity",
|
||||
"pressure",
|
||||
"radiation",
|
||||
"temperature",
|
||||
"wind_direction",
|
||||
"wind_intensity_km",
|
||||
],
|
||||
return Observation(
|
||||
precAcumulada=0.0,
|
||||
humidade=71.0,
|
||||
pressao=1000.0,
|
||||
radiacao=0.0,
|
||||
temperatura=18.0,
|
||||
idDireccVento=8,
|
||||
intensidadeVentoKM=3.94,
|
||||
intensidadeVento=1.0944,
|
||||
timestamp=datetime(2020, 1, 16, 0, 0, 0),
|
||||
idEstacao=0,
|
||||
)
|
||||
|
||||
return Observation(0.0, 71.0, 1000.0, 0.0, 18.0, "NW", 3.94)
|
||||
|
||||
async def forecast(self, api, period):
|
||||
"""Mock Forecast."""
|
||||
Forecast = namedtuple(
|
||||
"Forecast",
|
||||
[
|
||||
"feels_like_temperature",
|
||||
"forecast_date",
|
||||
"forecasted_hours",
|
||||
"humidity",
|
||||
"max_temperature",
|
||||
"min_temperature",
|
||||
"precipitation_probability",
|
||||
"temperature",
|
||||
"update_date",
|
||||
"weather_type",
|
||||
"wind_direction",
|
||||
"wind_strength",
|
||||
],
|
||||
)
|
||||
|
||||
WeatherType = namedtuple("WeatherType", ["id", "en", "pt"])
|
||||
|
||||
if period == 24:
|
||||
return [
|
||||
Forecast(
|
||||
None,
|
||||
datetime(2020, 1, 16, 0, 0, 0),
|
||||
24,
|
||||
None,
|
||||
16.2,
|
||||
10.6,
|
||||
"100.0",
|
||||
13.4,
|
||||
"2020-01-15T07:51:00",
|
||||
WeatherType(9, "Rain/showers", "Chuva/aguaceiros"),
|
||||
"S",
|
||||
"10",
|
||||
utci=None,
|
||||
dataPrev=datetime(2020, 1, 16, 0, 0, 0),
|
||||
idPeriodo=24,
|
||||
hR=None,
|
||||
tMax=16.2,
|
||||
tMin=10.6,
|
||||
probabilidadePrecipita=100.0,
|
||||
tMed=13.4,
|
||||
dataUpdate=datetime(2020, 1, 15, 7, 51, 0),
|
||||
idTipoTempo=Weather_Type(9, "Rain/showers", "Chuva/aguaceiros"),
|
||||
ddVento="S",
|
||||
ffVento=10,
|
||||
idFfxVento=0,
|
||||
iUv=0,
|
||||
intervaloHora="",
|
||||
location=Forecast_Location(0, "", 0, 0, 0, "", (0, 0)),
|
||||
),
|
||||
]
|
||||
if period == 1:
|
||||
return [
|
||||
Forecast(
|
||||
"7.7",
|
||||
datetime(2020, 1, 15, 1, 0, 0, tzinfo=UTC),
|
||||
1,
|
||||
"86.9",
|
||||
12.0,
|
||||
None,
|
||||
80.0,
|
||||
10.6,
|
||||
"2020-01-15T02:51:00",
|
||||
WeatherType(10, "Light rain", "Chuva fraca ou chuvisco"),
|
||||
"S",
|
||||
"32.7",
|
||||
utci=7.7,
|
||||
dataPrev=datetime(2020, 1, 15, 1, 0, 0, tzinfo=UTC),
|
||||
idPeriodo=1,
|
||||
hR=86.9,
|
||||
tMax=12.0,
|
||||
tMin=None,
|
||||
probabilidadePrecipita=80.0,
|
||||
tMed=10.6,
|
||||
dataUpdate=datetime(2020, 1, 15, 2, 51, 0),
|
||||
idTipoTempo=Weather_Type(
|
||||
10, "Light rain", "Chuva fraca ou chuvisco"
|
||||
),
|
||||
ddVento="S",
|
||||
ffVento=32.7,
|
||||
idFfxVento=0,
|
||||
iUv=0,
|
||||
intervaloHora="",
|
||||
location=Forecast_Location(0, "", 0, 0, 0, "", (0, 0)),
|
||||
),
|
||||
Forecast(
|
||||
"5.7",
|
||||
datetime(2020, 1, 15, 2, 0, 0, tzinfo=UTC),
|
||||
1,
|
||||
"86.9",
|
||||
12.0,
|
||||
None,
|
||||
80.0,
|
||||
10.6,
|
||||
"2020-01-15T02:51:00",
|
||||
WeatherType(1, "Clear sky", "C\u00e9u limpo"),
|
||||
"S",
|
||||
"32.7",
|
||||
utci=5.7,
|
||||
dataPrev=datetime(2020, 1, 15, 2, 0, 0, tzinfo=UTC),
|
||||
idPeriodo=1,
|
||||
hR=86.9,
|
||||
tMax=12.0,
|
||||
tMin=None,
|
||||
probabilidadePrecipita=80.0,
|
||||
tMed=10.6,
|
||||
dataUpdate=datetime(2020, 1, 15, 2, 51, 0),
|
||||
idTipoTempo=Weather_Type(1, "Clear sky", "C\u00e9u limpo"),
|
||||
ddVento="S",
|
||||
ffVento=32.7,
|
||||
idFfxVento=0,
|
||||
iUv=0,
|
||||
intervaloHora="",
|
||||
location=Forecast_Location(0, "", 0, 0, 0, "", (0, 0)),
|
||||
),
|
||||
]
|
||||
|
||||
|
|
|
@ -1,15 +1,10 @@
|
|||
# serializer version: 1
|
||||
# name: test_diagnostics
|
||||
dict({
|
||||
'current_weather': list([
|
||||
0.0,
|
||||
71.0,
|
||||
1000.0,
|
||||
0.0,
|
||||
18.0,
|
||||
'NW',
|
||||
3.94,
|
||||
]),
|
||||
'current_weather': dict({
|
||||
'__type': "<class 'pyipma.observation.Observation'>",
|
||||
'repr': 'Observation(intensidadeVentoKM=3.94, temperatura=18.0, radiacao=0.0, idDireccVento=8, precAcumulada=0.0, intensidadeVento=1.0944, humidade=71.0, pressao=1000.0, timestamp=datetime.datetime(2020, 1, 16, 0, 0), idEstacao=0)',
|
||||
}),
|
||||
'location_information': dict({
|
||||
'global_id_local': 1130600,
|
||||
'id_station': 1200545,
|
||||
|
@ -19,42 +14,14 @@
|
|||
'station': 'HomeTown Station',
|
||||
}),
|
||||
'weather_forecast': list([
|
||||
list([
|
||||
'7.7',
|
||||
'2020-01-15T01:00:00+00:00',
|
||||
1,
|
||||
'86.9',
|
||||
12.0,
|
||||
None,
|
||||
80.0,
|
||||
10.6,
|
||||
'2020-01-15T02:51:00',
|
||||
list([
|
||||
10,
|
||||
'Light rain',
|
||||
'Chuva fraca ou chuvisco',
|
||||
]),
|
||||
'S',
|
||||
'32.7',
|
||||
]),
|
||||
list([
|
||||
'5.7',
|
||||
'2020-01-15T02:00:00+00:00',
|
||||
1,
|
||||
'86.9',
|
||||
12.0,
|
||||
None,
|
||||
80.0,
|
||||
10.6,
|
||||
'2020-01-15T02:51:00',
|
||||
list([
|
||||
1,
|
||||
'Clear sky',
|
||||
'Céu limpo',
|
||||
]),
|
||||
'S',
|
||||
'32.7',
|
||||
]),
|
||||
dict({
|
||||
'__type': "<class 'pyipma.forecast.Forecast'>",
|
||||
'repr': "Forecast(tMed=10.6, tMin=None, ffVento=32.7, idFfxVento=0, dataUpdate=datetime.datetime(2020, 1, 15, 2, 51), tMax=12.0, iUv=0, intervaloHora='', idTipoTempo=Weather_Type(id=10, en='Light rain', pt='Chuva fraca ou chuvisco'), hR=86.9, location=Forecast_Location(globalIdLocal=0, local='', idRegiao=0, idDistrito=0, idConcelho=0, idAreaAviso='', coordinates=(0, 0)), probabilidadePrecipita=80.0, idPeriodo=1, dataPrev=datetime.datetime(2020, 1, 15, 1, 0, tzinfo=datetime.timezone.utc), ddVento='S', utci=7.7)",
|
||||
}),
|
||||
dict({
|
||||
'__type': "<class 'pyipma.forecast.Forecast'>",
|
||||
'repr': "Forecast(tMed=10.6, tMin=None, ffVento=32.7, idFfxVento=0, dataUpdate=datetime.datetime(2020, 1, 15, 2, 51), tMax=12.0, iUv=0, intervaloHora='', idTipoTempo=Weather_Type(id=1, en='Clear sky', pt='Céu limpo'), hR=86.9, location=Forecast_Location(globalIdLocal=0, local='', idRegiao=0, idDistrito=0, idConcelho=0, idAreaAviso='', coordinates=(0, 0)), probabilidadePrecipita=80.0, idPeriodo=1, dataPrev=datetime.datetime(2020, 1, 15, 2, 0, tzinfo=datetime.timezone.utc), ddVento='S', utci=5.7)",
|
||||
}),
|
||||
]),
|
||||
})
|
||||
# ---
|
||||
|
|
|
@ -83,7 +83,7 @@
|
|||
dict({
|
||||
'condition': 'rainy',
|
||||
'datetime': datetime.datetime(2020, 1, 16, 0, 0),
|
||||
'precipitation_probability': '100.0',
|
||||
'precipitation_probability': 100.0,
|
||||
'temperature': 16.2,
|
||||
'templow': 10.6,
|
||||
'wind_bearing': 'S',
|
||||
|
@ -121,7 +121,7 @@
|
|||
dict({
|
||||
'condition': 'rainy',
|
||||
'datetime': datetime.datetime(2020, 1, 16, 0, 0),
|
||||
'precipitation_probability': '100.0',
|
||||
'precipitation_probability': 100.0,
|
||||
'temperature': 16.2,
|
||||
'templow': 10.6,
|
||||
'wind_bearing': 'S',
|
||||
|
@ -160,7 +160,7 @@
|
|||
dict({
|
||||
'condition': 'rainy',
|
||||
'datetime': '2020-01-16T00:00:00',
|
||||
'precipitation_probability': '100.0',
|
||||
'precipitation_probability': 100.0,
|
||||
'temperature': 16.2,
|
||||
'templow': 10.6,
|
||||
'wind_bearing': 'S',
|
||||
|
@ -173,7 +173,7 @@
|
|||
dict({
|
||||
'condition': 'rainy',
|
||||
'datetime': '2020-01-16T00:00:00',
|
||||
'precipitation_probability': '100.0',
|
||||
'precipitation_probability': 100.0,
|
||||
'temperature': 16.2,
|
||||
'templow': 10.6,
|
||||
'wind_bearing': 'S',
|
||||
|
|
Loading…
Reference in New Issue