Files

67 lines
3.1 KiB
Python

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)))