-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathtest_integrations.py
47 lines (37 loc) · 1.6 KB
/
test_integrations.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"""Tests Météo-France module."""
import pytest
from meteofrance_api import MeteoFranceClient
from meteofrance_api.helpers import readable_phenomenons_dict
@pytest.mark.parametrize("city", ["Montréal", "Foix"])
def test_workflow(city: str) -> None:
"""Test classical workflow usage with the Python library."""
# Init client
client = MeteoFranceClient()
# Search a location from name.
list_places = client.search_places(city)
my_place = list_places[0]
# Fetch weather forecast for the location
my_place_weather_forecast = client.get_forecast_for_place(my_place)
# Get the daily forecast
my_place_daily_forecast = my_place_weather_forecast.daily_forecast
# If rain in the hour forecast is available, get it.
if my_place_weather_forecast.position["rain_product_available"] == 1:
my_place_rain_forecast = client.get_rain(my_place.latitude, my_place.longitude)
next_rain_dt = my_place_rain_forecast.next_rain_date_locale()
if not next_rain_dt:
rain_status = "No rain expected in the following hour."
else:
rain_status = next_rain_dt.strftime("%H:%M")
else:
rain_status = "No rain forecast available."
# Fetch weather alerts.
if my_place.admin2:
my_place_weather_alerts = client.get_warning_current_phenomenons(
my_place.admin2
)
readable_warnings = readable_phenomenons_dict(
my_place_weather_alerts.phenomenons_max_colors
)
assert isinstance(my_place_daily_forecast, list)
assert rain_status
assert isinstance(readable_warnings, dict)