rewrote calculer_frequentation, added basic test for it.

This commit is contained in:
artus40
2017-10-18 16:57:56 +02:00
parent 47365f8da8
commit 511bd63aa7
3 changed files with 90 additions and 52 deletions

View File

@@ -1,7 +1,67 @@
from django.test import TestCase
from datetime import date, time
from maraudes.models import Maraude, Rencontre, Lieu
from notes.models import Sujet
from utilisateurs.models import Maraudeur
from maraudes.notes import Observation
from .charts import RencontreParHeureChart
# Create your tests here.
# MANDATORY FEATURES
# FicheStatistique primary key IS it's foreign sujet pk
class TestCalculerFrequentationParHeure(TestCase):
def setUp(self):
maraude = Maraude.objects.create(date=date(2017, 1, 1),
heure_debut=time(20, 00),
binome=Maraudeur.objects.create(first_name="Asterix", last_name="Gaulois"),
referent=Maraudeur.objects.create(first_name="Referent", last_name="R", is_superuser=True))
self._generate_test_data(maraude, [
("Gare", time(20, 30), 45, ("S1",)), #
("Gare", time(20, 40), 10, ("S2", "S3",)),
("Centre-ville", time(21, 30), 30, ("S4",)), # Borne finale fermée
("Urgences", time(22, 20), 26, ("S5", "S3")), # Déborde sur un nouvel intervalle
])
def _generate_test_data(self, maraude, data):
for lieu, heure, duree, sujets in data:
rencontre = Rencontre.objects.create(maraude=maraude,
lieu=Lieu.objects.get_or_create(nom=lieu)[0],
heure_debut=heure,
duree=duree)
for s in sujets:
observation = Observation.objects.create(rencontre=rencontre,
sujet=Sujet.objects.get_or_create(surnom=s)[0],
text="RAS")
def differences(self, first, second):
diff = dict()
for key, val in first.items():
try:
if not second[key] == val:
diff[key] = (val, second[key])
except KeyError:
diff[key] = (val, None)
return diff
def test_with_test_data(self):
# Retrieve observations queryset
queryset = Observation.objects.filter(created_date=date(2017,1,1))
non_continu = RencontreParHeureChart.calculer_frequentation(queryset, continu=False)
continu = RencontreParHeureChart.calculer_frequentation(queryset, continu=True)
test_non_continu = {time(20, 30): 3,
time(21, 30): 1,
time(22, 15): 2,
}
self.assertEqual(non_continu, test_non_continu, "\nDifferences :\n{}".format(self.differences(non_continu, test_non_continu)))
test_continu = {time(20, 30): 3, time(20, 45): 3,
time(21, 0): 1, time(21, 30): 1, time(21, 45): 1,
time(22, 15): 2, time(22, 30): 2, time(22, 45): 2,
}
self.assertEqual(continu, test_continu, "\nDifferences :\n{}".format(self.differences(continu, test_continu)))