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