forked from ScoDoc/ScoDoc
Tests unitaires yaml: check des RCUEs
This commit is contained in:
parent
4c83c69f7c
commit
9251810814
@ -326,7 +326,7 @@ class DecisionsProposeesAnnee(DecisionsProposees):
|
|||||||
)
|
)
|
||||||
"vrai si l'année est réussie, tous niveaux validables ou validés par le jury"
|
"vrai si l'année est réussie, tous niveaux validables ou validés par le jury"
|
||||||
self.valide_moitie_rcue = self.nb_validables > (self.nb_competences // 2)
|
self.valide_moitie_rcue = self.nb_validables > (self.nb_competences // 2)
|
||||||
# Peut passer si plus de la moitié validables et tous > 8
|
"Peut passer si plus de la moitié validables et tous > 8"
|
||||||
self.passage_de_droit = self.valide_moitie_rcue and (self.nb_rcues_under_8 == 0)
|
self.passage_de_droit = self.valide_moitie_rcue and (self.nb_rcues_under_8 == 0)
|
||||||
# XXX TODO ajouter condition pour passage en S5
|
# XXX TODO ajouter condition pour passage en S5
|
||||||
|
|
||||||
|
@ -139,10 +139,12 @@ Etudiants:
|
|||||||
"SAÉ 1.01": 8 # UE11 ratée
|
"SAÉ 1.01": 8 # UE11 ratée
|
||||||
"SAÉ 1.02": 9 # UE12 ratée
|
"SAÉ 1.02": 9 # UE12 ratée
|
||||||
"SAÉ 1.SEE.03": 18 # UE13 => sera capitalisée
|
"SAÉ 1.SEE.03": 18 # UE13 => sera capitalisée
|
||||||
"SAÉ 1.SEE.04": 7 # UE14 ratée
|
"SAÉ 1.SEE.04": 7.5 # UE14 ratée
|
||||||
attendu: # les codes jury que l'on doit vérifier
|
attendu: # les codes jury que l'on doit vérifier
|
||||||
deca: # decision année
|
deca: # decision année
|
||||||
passage_de_droit: False
|
passage_de_droit: False
|
||||||
|
nb_competences: 4
|
||||||
|
nb_rcue_annee: 0 # pas de RCUE en S1
|
||||||
# jury S1, pas de décision annuelle
|
# jury S1, pas de décision annuelle
|
||||||
decisions_ues:
|
decisions_ues:
|
||||||
"UE 11":
|
"UE 11":
|
||||||
@ -168,6 +170,10 @@ Etudiants:
|
|||||||
"SAE24.SEE": 12 # UE24 SEE ok, mais ne compense pas
|
"SAE24.SEE": 12 # UE24 SEE ok, mais ne compense pas
|
||||||
attendu:
|
attendu:
|
||||||
deca:
|
deca:
|
||||||
|
passage_de_droit: False
|
||||||
|
nb_competences: 4
|
||||||
|
nb_rcue_annee: 4
|
||||||
|
valide_moitie_rcue: False # ici valide 2/2, pas plus de la moitié
|
||||||
passage_de_droit: False
|
passage_de_droit: False
|
||||||
code: ["RED", "..."]
|
code: ["RED", "..."]
|
||||||
code_valide: "RED"
|
code_valide: "RED"
|
||||||
@ -181,7 +187,12 @@ Etudiants:
|
|||||||
code_valide: ADM
|
code_valide: ADM
|
||||||
"UE 24 SEE":
|
"UE 24 SEE":
|
||||||
code_valide: ADM
|
code_valide: ADM
|
||||||
|
decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE
|
||||||
|
"UE 11":
|
||||||
|
code_valide: AJ
|
||||||
|
rcue:
|
||||||
|
moy_rcue: 8.5
|
||||||
|
est_compensable: False
|
||||||
|
|
||||||
S3:
|
S3:
|
||||||
parcours: SEE
|
parcours: SEE
|
||||||
|
@ -15,7 +15,11 @@ from app import db
|
|||||||
|
|
||||||
from app.auth.models import User
|
from app.auth.models import User
|
||||||
from app.but.import_refcomp import orebut_import_refcomp
|
from app.but.import_refcomp import orebut_import_refcomp
|
||||||
from app.but.jury_but import DecisionsProposeesAnnee, DecisionsProposeesUE
|
from app.but.jury_but import (
|
||||||
|
DecisionsProposeesAnnee,
|
||||||
|
DecisionsProposeesRCUE,
|
||||||
|
DecisionsProposeesUE,
|
||||||
|
)
|
||||||
from app.models import (
|
from app.models import (
|
||||||
ApcNiveau,
|
ApcNiveau,
|
||||||
ApcParcours,
|
ApcParcours,
|
||||||
@ -354,6 +358,35 @@ def _check_decisions_ues(
|
|||||||
assert getattr(dec_ue, attr) == dec_ue_att[attr]
|
assert getattr(dec_ue, attr) == dec_ue_att[attr]
|
||||||
|
|
||||||
|
|
||||||
|
def _check_decisions_rcues(
|
||||||
|
decisions_rcues: list[DecisionsProposeesRCUE], decisions_rcues_att: dict
|
||||||
|
):
|
||||||
|
"Vérifie les décisions d'RCUEs"
|
||||||
|
for acronyme, dec_rcue_att in decisions_rcues_att.items():
|
||||||
|
# retrouve la décision RCUE à partir de l'acronyme de la 1er UE
|
||||||
|
rcues_d = [
|
||||||
|
dec_rcue
|
||||||
|
for dec_rcue in decisions_rcues
|
||||||
|
if dec_rcue.rcue.ue_1.acronyme == acronyme
|
||||||
|
]
|
||||||
|
assert len(rcues_d) == 1 # un et un seul RCUE avec l'UE d'acronyme indiqué
|
||||||
|
dec_rcue = rcues_d[0]
|
||||||
|
if "codes" in dec_rcue_att:
|
||||||
|
_check_codes_jury(dec_rcue.codes, dec_rcue_att["codes"])
|
||||||
|
for attr in ("explanation", "code_valide"):
|
||||||
|
if attr in dec_rcue_att:
|
||||||
|
assert getattr(dec_rcue, attr) == dec_rcue_att[attr]
|
||||||
|
# Descend dans le RCUE:
|
||||||
|
if "rcue" in dec_rcue_att:
|
||||||
|
if "moy_rcue" in dec_rcue_att["rcue"]:
|
||||||
|
assert dec_rcue.rcue.moy_rcue == dec_rcue_att["rcue"]["moy_rcue"]
|
||||||
|
if "est_compensable" in dec_rcue_att["rcue"]:
|
||||||
|
assert (
|
||||||
|
dec_rcue.rcue.est_compensable()
|
||||||
|
== dec_rcue_att["rcue"]["est_compensable"]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def compare_decisions_annee(deca: DecisionsProposeesAnnee, deca_att: dict):
|
def compare_decisions_annee(deca: DecisionsProposeesAnnee, deca_att: dict):
|
||||||
"""Vérifie que les résultats de jury calculés sont ceux attendus.
|
"""Vérifie que les résultats de jury calculés sont ceux attendus.
|
||||||
deca est le résultat calculé par ScoDoc
|
deca est le résultat calculé par ScoDoc
|
||||||
@ -362,9 +395,17 @@ def compare_decisions_annee(deca: DecisionsProposeesAnnee, deca_att: dict):
|
|||||||
if "codes" in deca_att:
|
if "codes" in deca_att:
|
||||||
_check_codes_jury(deca.codes, deca_att["codes"])
|
_check_codes_jury(deca.codes, deca_att["codes"])
|
||||||
|
|
||||||
for attr in ("passage_de_droit", "code_valide"):
|
for attr in ("passage_de_droit", "code_valide", "nb_competences"):
|
||||||
if attr in deca_att:
|
if attr in deca_att:
|
||||||
assert getattr(deca, attr) == deca_att[attr]
|
assert getattr(deca, attr) == deca_att[attr]
|
||||||
|
|
||||||
if "decisions_ues" in deca_att:
|
if "decisions_ues" in deca_att:
|
||||||
_check_decisions_ues(deca.decisions_ues, deca_att["decisions_ues"])
|
_check_decisions_ues(deca.decisions_ues, deca_att["decisions_ues"])
|
||||||
|
|
||||||
|
if "nb_rcues_annee" in deca_att:
|
||||||
|
assert deca_att["nb_rcues_annee"] == len(deca.rcues_annee)
|
||||||
|
|
||||||
|
if "decisions_rcues" in deca_att:
|
||||||
|
_check_decisions_rcues(
|
||||||
|
deca.decisions_rcue_by_niveau.values(), deca_att["decisions_rcues"]
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user