Files
ENI-projet-piscine/apps/backend/tests/repositories/test_site.py
T
Johan LEROY 50dcb4de32 feat(backend): expose GET /api/v1/stats/summary
Ajoute le resume instantane de consommation du parc attendu par le
frontend (deja developpe contre ce contrat en mode mock). Nouveaux
SiteRepository et ReadingRepository (derniere lecture par site via
DISTINCT ON), StatsService pour l'agregation et les cas de repli
(capacite nulle, absence de lecture, data_quality inconnue), et le
endpoint lecteur-seul correspondant. Documentation des routes et du
schema des couches mises a jour.
2026-09-16 11:45:58 +02:00

32 lines
900 B
Python

import uuid
import pytest
from sqlalchemy.ext.asyncio import AsyncSession
from app.models.energy import Site
from app.repositories.site import SiteRepository
pytestmark = pytest.mark.integration
def identifiant() -> str:
return f"SITE-{uuid.uuid4().hex[:8]}"
async def test_list_all_returns_every_site_sorted_by_id(session: AsyncSession) -> None:
premier, second = sorted([identifiant(), identifiant()])
session.add_all(
[
Site(site_id=second, site_name="B", site_type="bureau", capacity_kw=100),
Site(site_id=premier, site_name="A", site_type="bureau", capacity_kw=50),
]
)
await session.flush()
depot = SiteRepository(session)
sites = await depot.list_all()
identifiants = [site.site_id for site in sites if site.site_id in (premier, second)]
await session.rollback()
assert identifiants == [premier, second]