- Remplace le service meteo.py minimal par une version enrichie : past_days=7 + forecast=8, champs humidite_moy, sol_0cm, etp_mm - Corrige les noms de champs API (weather_code, wind_speed_10m_max) et passe les paramètres daily en liste de tuples pour compatibilité - Ajoute fetch_and_store_forecast() pour le scheduler (Task 6) - Conserve fetch_forecast() pour compatibilité ascendante (GET /api/meteo) - Crée backend/tests/test_meteo.py (test_health passe, 3 autres échouent en attente des endpoints Task 7) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
34 lines
977 B
Python
34 lines
977 B
Python
"""Tests du service météo et des endpoints."""
|
|
|
|
|
|
def test_health(client):
|
|
r = client.get("/api/health")
|
|
assert r.status_code == 200
|
|
|
|
|
|
def test_meteo_tableau_vide(client):
|
|
"""Le tableau fonctionne même si les tables sont vides."""
|
|
r = client.get("/api/meteo/tableau")
|
|
assert r.status_code == 200
|
|
data = r.json()
|
|
assert "rows" in data
|
|
assert isinstance(data["rows"], list)
|
|
# 15 lignes attendues (7 passé + J0 + 7 futur)
|
|
assert len(data["rows"]) == 15
|
|
|
|
|
|
def test_meteo_station_current_vide(client):
|
|
"""Retourne null si aucune donnée station."""
|
|
r = client.get("/api/meteo/station/current")
|
|
assert r.status_code == 200
|
|
# Peut être null ou un objet
|
|
assert r.json() is None or isinstance(r.json(), dict)
|
|
|
|
|
|
def test_meteo_previsions(client):
|
|
"""Retourne une liste de jours de prévisions."""
|
|
r = client.get("/api/meteo/previsions")
|
|
assert r.status_code == 200
|
|
data = r.json()
|
|
assert "days" in data
|