1
0
forked from ScoDoc/ScoDoc

added a unit test: evaluation cache

This commit is contained in:
Emmanuel Viennet 2021-07-21 15:58:49 +03:00
parent 35c900b3d7
commit 5d521b9cfa
3 changed files with 33 additions and 3 deletions

View File

@ -104,7 +104,11 @@ class ScoDocCache:
class EvaluationCache(ScoDocCache): class EvaluationCache(ScoDocCache):
"Cache for evaluations" """Cache for evaluations.
Clé: evaluation_id
Valeur: { 'etudid' : note }
"""
prefix = "EVAL" prefix = "EVAL"
@classmethod @classmethod

View File

@ -568,7 +568,7 @@ def do_evaluation_etat(
} }
def do_evaluation_list_in_sem(context, formsemestre_id): def do_evaluation_list_in_sem(context, formsemestre_id, with_etat=True):
"""Liste les evaluations de tous les modules de ce semestre. """Liste les evaluations de tous les modules de ce semestre.
Donne pour chaque eval son état (voir do_evaluation_etat) Donne pour chaque eval son état (voir do_evaluation_etat)
{ evaluation_id,nb_inscrits, nb_notes, nb_abs, nb_neutre, moy, median, last_modif ... } { evaluation_id,nb_inscrits, nb_notes, nb_abs, nb_neutre, moy, median, last_modif ... }
@ -624,7 +624,8 @@ def do_evaluation_list_in_sem(context, formsemestre_id):
# etat de chaque evaluation: # etat de chaque evaluation:
for r in res: for r in res:
r["jour"] = r["jour"] or datetime.date(1900, 1, 1) # pour les comparaisons r["jour"] = r["jour"] or datetime.date(1900, 1, 1) # pour les comparaisons
r["etat"] = do_evaluation_etat(context, r["evaluation_id"]) if with_etat:
r["etat"] = do_evaluation_etat(context, r["evaluation_id"])
return res return res

View File

@ -13,6 +13,7 @@ from flask import current_app
from app import db from app import db
from app.scodoc import sco_cache from app.scodoc import sco_cache
from app.scodoc import sco_evaluations
from app.scodoc import sco_formsemestre from app.scodoc import sco_formsemestre
DEPT = "RT" # ce département (BD) doit exister DEPT = "RT" # ce département (BD) doit exister
@ -29,3 +30,27 @@ def test_notes_table(test_client):
assert sco_cache.NotesTableCache.get(formsemestre_id, compute=False) assert sco_cache.NotesTableCache.get(formsemestre_id, compute=False)
sco_cache.invalidate_formsemestre(formsemestre_id) sco_cache.invalidate_formsemestre(formsemestre_id)
assert not sco_cache.NotesTableCache.get(formsemestre_id, compute=False) assert not sco_cache.NotesTableCache.get(formsemestre_id, compute=False)
def test_cache_evaluations(test_client):
""""""
# cherche un semestre ayant des evaluations
sems = sco_formsemestre.do_formsemestre_list(None)
assert len(sems)
sem_evals = []
for sem in sems:
sem_evals = sco_evaluations.do_evaluation_list_in_sem(
None, sem["formsemestre_id"], with_etat=False
)
if sem_evals:
break
if not sem_evals:
raise Exception("no evaluations")
#
evaluation_id = sem_evals[0]["evaluation_id"]
sco_evaluations.do_evaluation_get_all_notes(None, evaluation_id)
# should have been be cached:
assert sco_cache.EvaluationCache.get(evaluation_id)
sco_cache.invalidate_formsemestre(sem["formsemestre_id"])
# should have been erased from cache:
assert not sco_cache.EvaluationCache.get(evaluation_id)