ScoDoc/tests/unit/test_caches.py

66 lines
2.1 KiB
Python

# -*- coding: UTF-8 -*
"""Unit tests for caches
Ce test suppose une base département existante.
Usage: pytest tests/unit/test_caches.py
"""
from flask import current_app
from app import db
from app.scodoc import sco_cache
from app.scodoc import sco_evaluations
from app.scodoc import sco_formsemestre
DEPT = "RT" # ce département (BD) doit exister
def test_notes_table(test_client):
"""Test construction et cache de NotesTable"""
sems = sco_formsemestre.do_formsemestre_list(None)
assert len(sems)
sem = sems[0]
formsemestre_id = sem["formsemestre_id"]
nt = sco_cache.NotesTableCache.get(formsemestre_id)
assert nt
assert sco_cache.NotesTableCache.get(formsemestre_id, compute=False)
sco_cache.invalidate_formsemestre(formsemestre_id)
assert not sco_cache.NotesTableCache.get(formsemestre_id, compute=False)
# cache les 5 premiers
for sem in sems[:5]:
formsemestre_id = sem["formsemestre_id"]
nt = sco_cache.NotesTableCache.get(formsemestre_id)
assert sco_cache.NotesTableCache.get(formsemestre_id, compute=False)
# assert "SEM38882" in {s["formsemestre_id"] for s in sems}
# formsemestre_id = "SEM38882"
# nt = sco_cache.NotesTableCache.get(formsemestre_id)
# assert 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)