tests: augment test on GET rendez-vous-disponibles
gitea/ants-hub/pipeline/head This commit looks good Details

This commit is contained in:
Benjamin Dauvergne 2023-04-04 01:34:06 +02:00
parent 446637d6ab
commit 5670296daf
4 changed files with 65 additions and 6 deletions

View File

@ -10,13 +10,23 @@ import os
import jsonschema
from django.core.exceptions import ValidationError
from django.db.models import Count
from django.db.transaction import atomic
from django.http import JsonResponse
from django.utils.timezone import now
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import View
from ants_hub.data.models import Collectivite, Horaire, HoraireList, Lieu, Raccordement, RendezVous, TypeDeRdv
from ants_hub.data.models import (
Collectivite,
Horaire,
HoraireList,
Lieu,
Plage,
Raccordement,
RendezVous,
TypeDeRdv,
)
with open(os.path.join(os.path.dirname(__file__), '..', 'static', 'schemas', 'rdv-disponibles.json')) as fd:
RENDEZ_VOUS_DISPONIBLES_SCHEMA = json.load(fd)
@ -67,8 +77,11 @@ class RendezVousDisponibleView(View):
'lieux': lieux_data,
'nombre_de_lieux': collectivite.lieux.count(),
'nombre_de_pre_demandes_actives': RendezVous.objects.filter(
date__lt=now(), lieu__collectivite=collectivite
date__gte=now(), lieu__collectivite=collectivite
).count(),
'nombre_de_jours_avec_rdv_disponibles': Plage.objects.filter(
lieu__collectivite=collectivite, date__gte=now().date()
).aggregate(Count('date'))['date__count'],
}
for key in ['logo_url', 'rdv_url', 'gestion_url', 'annulation_url']:
if getattr(collectivite, key, None):
@ -82,10 +95,10 @@ class RendezVousDisponibleView(View):
'ville': lieu.ville,
'longitude': lieu.longitude,
'latitude': lieu.latitude,
'nombre_de_pre_demandes_actives': lieu.rdvs.filter(date__lt=now()).count(),
'nombre_de_jours_avec_rdv_disponibles': lieu.plages.filter(date__lt=now())
.distinct('date')
.count(),
'nombre_de_pre_demandes_actives': lieu.rdvs.filter(date__gte=now()).count(),
'nombre_de_jours_avec_rdv_disponibles': lieu.plages.filter(
date__gte=now().date()
).aggregate(Count('date'))['date__count'],
}
for key in ['url', 'logo_url', 'rdv_url', 'gestion_url', 'annulation_url']:
if getattr(lieu, key, None):

View File

@ -1,4 +1,5 @@
pytest
pytest-cov
pytest-django
freezegun
django-webtest

View File

@ -1,8 +1,15 @@
# ANTS-Hub - Copyright (C) Entr'ouvert
import pytest
from ants_hub.data.models import Raccordement
@pytest.fixture(autouse=True)
def setup(freezer):
freezer.move_to('2023-03-03T12:00:00+02:00')
def test_ping(django_app, db):
django_app.get('/api/chrono/ping/', status=401)
django_app.set_authorization(('Basic', ('abcd', '')))
@ -223,3 +230,32 @@ def test_rendez_vous_dispomibles(django_app, db):
'rdv_deleted': 1,
},
}
assert django_app.get('/api/chrono/rendez-vous-disponibles/').json == {
'err': 0,
'collectivites': [
{
'id': 'col1',
'nom': 'Saint-Didier',
'url': 'https://saint-didier.fr/rdv/',
'created': '2023-03-03T10:00:00+00:00',
'last_update': '2023-03-03T10:00:00+00:00',
'lieux': [
{
'id': 'lieu1',
'latitude': 2.3,
'longitude': 1.5,
'nom': 'Mairie de Saint-Didier',
'numero_rue': '2 rue du four',
'code_postal': '99999',
'ville': 'Saint-Didier',
'nombre_de_jours_avec_rdv_disponibles': 1,
'nombre_de_pre_demandes_actives': 0,
}
],
'nombre_de_jours_avec_rdv_disponibles': 1,
'nombre_de_lieux': 1,
'nombre_de_pre_demandes_actives': 0,
}
],
}

View File

@ -1 +1,10 @@
# ANTS-Hub - Copyright (C) Entr'ouvert
import freezegun
import pytest
@pytest.fixture
def freezer():
with freezegun.freeze_time() as freezer:
yield freezer