forked from ScoDoc/ScoDoc
added a unit test: evaluation cache
This commit is contained in:
parent
35c900b3d7
commit
5d521b9cfa
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user