Fix unit tests

This commit is contained in:
Emmanuel Viennet 2022-12-06 13:06:50 +01:00
parent b9f3f84857
commit 0809cc4feb
10 changed files with 66 additions and 34 deletions

View File

@ -341,7 +341,7 @@ def formsemestre_etudiants(
# XXX A REVOIR: trop inefficace ! # XXX A REVOIR: trop inefficace !
for etud in etuds: for etud in etuds:
etud["groups"] = sco_groups.get_etud_groups( etud["groups"] = sco_groups.get_etud_groups(
etud["id"], formsemestre_id, exclude_default=True etud["etudid"], formsemestre_id, exclude_default=True
) )
return jsonify(sorted(etuds, key=lambda e: e["sort_key"])) return jsonify(sorted(etuds, key=lambda e: e["sort_key"]))

View File

@ -284,9 +284,9 @@ def formsemestre_bulletinetud_published_dict(
d["ue_capitalisee"].append( d["ue_capitalisee"].append(
dict( dict(
id=ue_id, id=ue_id,
numero=quote_xml_attr(ue.numero), numero=quote_xml_attr(ue_st["numero"]),
acronyme=quote_xml_attr(ue.acronyme), acronyme=quote_xml_attr(ue_st["acronyme"]),
titre=quote_xml_attr(ue.titre), titre=quote_xml_attr(ue_st["titre"]),
note=scu.fmt_note(ue_status["moy"]), note=scu.fmt_note(ue_status["moy"]),
coefficient_ue=scu.fmt_note(ue_status["coef_ue"]), coefficient_ue=scu.fmt_note(ue_status["coef_ue"]),
date_capitalisation=ndb.DateDMYtoISO(ue_status["event_date"]), date_capitalisation=ndb.DateDMYtoISO(ue_status["event_date"]),

View File

@ -286,7 +286,8 @@ def do_formsemestre_inscription_with_modules(
args["etape"] = etape args["etape"] = etape
do_formsemestre_inscription_create(args, method=method) do_formsemestre_inscription_create(args, method=method)
log( log(
f"do_formsemestre_inscription_with_modules: etudid={etudid} formsemestre_id={formsemestre_id}" f"""do_formsemestre_inscription_with_modules: etudid={
etudid} formsemestre_id={formsemestre_id}"""
) )
# inscriptions aux groupes # inscriptions aux groupes
# 1- inscrit au groupe 'tous' # 1- inscrit au groupe 'tous'
@ -296,7 +297,7 @@ def do_formsemestre_inscription_with_modules(
# 2- inscrit aux groupes # 2- inscrit aux groupes
for group_id in group_ids: for group_id in group_ids:
if group_id and not group_id in gdone: if group_id and group_id not in gdone:
group = GroupDescr.query.get_or_404(group_id) group = GroupDescr.query.get_or_404(group_id)
sco_groups.set_group(etudid, group_id) sco_groups.set_group(etudid, group_id)
gdone[group_id] = 1 gdone[group_id] = 1

View File

@ -1,7 +1,7 @@
# -*- mode: python -*- # -*- mode: python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
SCOVERSION = "9.4.9" SCOVERSION = "9.4.10"
SCONAME = "ScoDoc" SCONAME = "ScoDoc"

View File

@ -76,6 +76,7 @@ def test_etudiants_courant(api_headers):
etud = etudiants[-1] etud = etudiants[-1]
assert verify_fields(etud, fields) is True assert verify_fields(etud, fields) is True
assert etud["id"] == etud["etudid"]
assert isinstance(etud["id"], int) assert isinstance(etud["id"], int)
assert isinstance(etud["code_nip"], str) assert isinstance(etud["code_nip"], str)
assert isinstance(etud["nom"], str) assert isinstance(etud["nom"], str)

View File

@ -421,7 +421,7 @@ class ScoFake(object):
for idx, etud in enumerate(etuds): for idx, etud in enumerate(etuds):
self.create_note( self.create_note(
evaluation_id=e["id"], evaluation_id=e["id"],
etudid=etud["id"], etudid=etud["etudid"],
note=notes[idx % len(notes)], note=notes[idx % len(notes)],
) )

View File

@ -77,6 +77,7 @@ def test_ue_moy(test_client):
modimpl_inscr_df, modimpl_inscr_df,
modimpl_coefs_df, modimpl_coefs_df,
modimpl_mask, modimpl_mask,
set(),
) )
return etud_moy_ue return etud_moy_ue
@ -122,7 +123,13 @@ def test_ue_moy(test_client):
modimpl.module.ue.type != UE_SPORT for modimpl in formsemestre.modimpls_sorted modimpl.module.ue.type != UE_SPORT for modimpl in formsemestre.modimpls_sorted
] ]
etud_moy_ue = moy_ue.compute_ue_moys_apc( etud_moy_ue = moy_ue.compute_ue_moys_apc(
sem_cube, etuds, modimpls, modimpl_inscr_df, modimpl_coefs_df, modimpl_mask sem_cube,
etuds,
modimpls,
modimpl_inscr_df,
modimpl_coefs_df,
modimpl_mask,
set(),
) )
assert etud_moy_ue[ue1.id][etudid] == n1 assert etud_moy_ue[ue1.id][etudid] == n1
assert etud_moy_ue[ue2.id][etudid] == n1 assert etud_moy_ue[ue2.id][etudid] == n1

View File

@ -106,13 +106,17 @@ def test_notes_modules(test_client):
# --- Notes ordinaires # --- Notes ordinaires
note_1 = 12.0 note_1 = 12.0
note_2 = 13.0 note_2 = 13.0
_, _, _ = G.create_note(evaluation_id=e1["id"], etudid=etuds[0]["id"], note=note_1)
_, _, _ = G.create_note(evaluation_id=e2["id"], etudid=etuds[0]["id"], note=note_2)
_, _, _ = G.create_note( _, _, _ = G.create_note(
evaluation_id=e1["id"], etudid=etuds[1]["id"], note=note_1 / 2 evaluation_id=e1["id"], etudid=etuds[0]["etudid"], note=note_1
) )
_, _, _ = G.create_note( _, _, _ = G.create_note(
evaluation_id=e2["id"], etudid=etuds[1]["id"], note=note_2 / 3 evaluation_id=e2["id"], etudid=etuds[0]["etudid"], note=note_2
)
_, _, _ = G.create_note(
evaluation_id=e1["id"], etudid=etuds[1]["etudid"], note=note_1 / 2
)
_, _, _ = G.create_note(
evaluation_id=e2["id"], etudid=etuds[1]["etudid"], note=note_2 / 3
) )
b = sco_bulletins.formsemestre_bulletinetud_dict( b = sco_bulletins.formsemestre_bulletinetud_dict(
sem["formsemestre_id"], etud["etudid"] sem["formsemestre_id"], etud["etudid"]
@ -316,9 +320,15 @@ def test_notes_modules(test_client):
evaluation_id=e2["id"], etudid=etudid, note=scu.NOTES_NEUTRALISE evaluation_id=e2["id"], etudid=etudid, note=scu.NOTES_NEUTRALISE
) # EXC ) # EXC
_, _, _ = G.create_note(evaluation_id=e_m2["id"], etudid=etudid, note=12.5) _, _, _ = G.create_note(evaluation_id=e_m2["id"], etudid=etudid, note=12.5)
_, _, _ = G.create_note(evaluation_id=e1["id"], etudid=etuds[1]["id"], note=11.0) _, _, _ = G.create_note(
_, _, _ = G.create_note(evaluation_id=e2["id"], etudid=etuds[1]["id"], note=11.0) evaluation_id=e1["id"], etudid=etuds[1]["etudid"], note=11.0
_, _, _ = G.create_note(evaluation_id=e_m2["id"], etudid=etuds[1]["id"], note=11.0) )
_, _, _ = G.create_note(
evaluation_id=e2["id"], etudid=etuds[1]["etudid"], note=11.0
)
_, _, _ = G.create_note(
evaluation_id=e_m2["id"], etudid=etuds[1]["etudid"], note=11.0
)
b = sco_bulletins.formsemestre_bulletinetud_dict( b = sco_bulletins.formsemestre_bulletinetud_dict(
sem["formsemestre_id"], etud["etudid"] sem["formsemestre_id"], etud["etudid"]
@ -381,10 +391,10 @@ def test_notes_modules_att_dem(test_client):
) )
# Attente (ATT) sur les 2 evals # Attente (ATT) sur les 2 evals
_, _, _ = G.create_note( _, _, _ = G.create_note(
evaluation_id=e1["id"], etudid=etuds[0]["id"], note=scu.NOTES_ATTENTE evaluation_id=e1["id"], etudid=etuds[0]["etudid"], note=scu.NOTES_ATTENTE
) # ATT ) # ATT
_, _, _ = G.create_note( _, _, _ = G.create_note(
evaluation_id=e1["id"], etudid=etuds[1]["id"], note=scu.NOTES_ATTENTE evaluation_id=e1["id"], etudid=etuds[1]["etudid"], note=scu.NOTES_ATTENTE
) # ATT ) # ATT
# Démission du premier étudiant # Démission du premier étudiant
sco_formsemestre_inscriptions.do_formsemestre_demission( sco_formsemestre_inscriptions.do_formsemestre_demission(
@ -424,7 +434,9 @@ def test_notes_modules_att_dem(test_client):
assert note_e1 == scu.NOTES_ATTENTE # XXXX un peu contestable assert note_e1 == scu.NOTES_ATTENTE # XXXX un peu contestable
# Saisie note ABS pour le deuxième etud # Saisie note ABS pour le deuxième etud
_, _, _ = G.create_note(evaluation_id=e1["id"], etudid=etuds[1]["id"], note=None) _, _, _ = G.create_note(
evaluation_id=e1["id"], etudid=etuds[1]["etudid"], note=None
)
nt = check_nt( nt = check_nt(
etuds[1]["etudid"], etuds[1]["etudid"],
sem["formsemestre_id"], sem["formsemestre_id"],

View File

@ -71,8 +71,8 @@ def test_notes_rattrapage(test_client):
evaluation_type=scu.EVALUATION_RATTRAPAGE, evaluation_type=scu.EVALUATION_RATTRAPAGE,
) )
etud = etuds[0] etud = etuds[0]
_, _, _ = G.create_note(evaluation_id=e["id"], etudid=etud["id"], note=12.0) _, _, _ = G.create_note(evaluation_id=e["id"], etudid=etud["etudid"], note=12.0)
_, _, _ = G.create_note(evaluation_id=e_rat["id"], etudid=etud["id"], note=11.0) _, _, _ = G.create_note(evaluation_id=e_rat["id"], etudid=etud["etudid"], note=11.0)
# --- Vérifications internes structures ScoDoc # --- Vérifications internes structures ScoDoc
formsemestre = FormSemestre.query.get(formsemestre_id) formsemestre = FormSemestre.query.get(formsemestre_id)
@ -96,21 +96,23 @@ def test_notes_rattrapage(test_client):
# Note moyenne: ici le ratrapage est inférieur à la note: # Note moyenne: ici le ratrapage est inférieur à la note:
assert b["ues"][0]["modules"][0]["mod_moy_txt"] == scu.fmt_note(12.0) assert b["ues"][0]["modules"][0]["mod_moy_txt"] == scu.fmt_note(12.0)
# rattrapage > moyenne: # rattrapage > moyenne:
_, _, _ = G.create_note(evaluation_id=e_rat["id"], etudid=etud["id"], note=18.0) _, _, _ = G.create_note(evaluation_id=e_rat["id"], etudid=etud["etudid"], note=18.0)
b = sco_bulletins.formsemestre_bulletinetud_dict( b = sco_bulletins.formsemestre_bulletinetud_dict(
sem["formsemestre_id"], etud["etudid"] sem["formsemestre_id"], etud["etudid"]
) )
assert b["ues"][0]["modules"][0]["mod_moy_txt"] == scu.fmt_note(18.0) assert b["ues"][0]["modules"][0]["mod_moy_txt"] == scu.fmt_note(18.0)
# rattrapage vs absences # rattrapage vs absences
_, _, _ = G.create_note(evaluation_id=e["id"], etudid=etud["id"], note=None) # abs _, _, _ = G.create_note(
_, _, _ = G.create_note(evaluation_id=e_rat["id"], etudid=etud["id"], note=17.0) evaluation_id=e["id"], etudid=etud["etudid"], note=None
) # abs
_, _, _ = G.create_note(evaluation_id=e_rat["id"], etudid=etud["etudid"], note=17.0)
b = sco_bulletins.formsemestre_bulletinetud_dict( b = sco_bulletins.formsemestre_bulletinetud_dict(
sem["formsemestre_id"], etud["etudid"] sem["formsemestre_id"], etud["etudid"]
) )
assert b["ues"][0]["modules"][0]["mod_moy_txt"] == scu.fmt_note(17.0) assert b["ues"][0]["modules"][0]["mod_moy_txt"] == scu.fmt_note(17.0)
# et sans note de rattrapage # et sans note de rattrapage
_, _, _ = G.create_note(evaluation_id=e["id"], etudid=etud["id"], note=10.0) _, _, _ = G.create_note(evaluation_id=e["id"], etudid=etud["etudid"], note=10.0)
_, _, _ = G.create_note(evaluation_id=e_rat["id"], etudid=etud["id"], note=None) _, _, _ = G.create_note(evaluation_id=e_rat["id"], etudid=etud["etudid"], note=None)
b = sco_bulletins.formsemestre_bulletinetud_dict( b = sco_bulletins.formsemestre_bulletinetud_dict(
sem["formsemestre_id"], etud["etudid"] sem["formsemestre_id"], etud["etudid"]
) )
@ -152,7 +154,9 @@ def test_notes_rattrapage(test_client):
assert len(mod_res.get_evaluations_completes(moduleimpl)) == 2 assert len(mod_res.get_evaluations_completes(moduleimpl)) == 2
# Saisie note session 2: # Saisie note session 2:
_, _, _ = G.create_note(evaluation_id=e_session2["id"], etudid=etud["id"], note=5.0) _, _, _ = G.create_note(
evaluation_id=e_session2["id"], etudid=etud["etudid"], note=5.0
)
b = sco_bulletins.formsemestre_bulletinetud_dict( b = sco_bulletins.formsemestre_bulletinetud_dict(
sem["formsemestre_id"], etud["etudid"] sem["formsemestre_id"], etud["etudid"]
) )
@ -160,7 +164,7 @@ def test_notes_rattrapage(test_client):
assert b["ues"][0]["modules"][0]["mod_moy_txt"] == scu.fmt_note(5.0) assert b["ues"][0]["modules"][0]["mod_moy_txt"] == scu.fmt_note(5.0)
_, _, _ = G.create_note( _, _, _ = G.create_note(
evaluation_id=e_session2["id"], etudid=etud["id"], note=20.0 evaluation_id=e_session2["id"], etudid=etud["etudid"], note=20.0
) )
b = sco_bulletins.formsemestre_bulletinetud_dict( b = sco_bulletins.formsemestre_bulletinetud_dict(
sem["formsemestre_id"], etud["etudid"] sem["formsemestre_id"], etud["etudid"]
@ -169,7 +173,7 @@ def test_notes_rattrapage(test_client):
assert b["ues"][0]["modules"][0]["mod_moy_txt"] == scu.fmt_note(20.0) assert b["ues"][0]["modules"][0]["mod_moy_txt"] == scu.fmt_note(20.0)
_, _, _ = G.create_note( _, _, _ = G.create_note(
evaluation_id=e_session2["id"], etudid=etud["id"], note=None evaluation_id=e_session2["id"], etudid=etud["etudid"], note=None
) )
b = sco_bulletins.formsemestre_bulletinetud_dict( b = sco_bulletins.formsemestre_bulletinetud_dict(
sem["formsemestre_id"], etud["etudid"] sem["formsemestre_id"], etud["etudid"]

View File

@ -82,9 +82,10 @@ def run_sco_basic(verbose=False) -> FormSemestre:
# --- Inscription des étudiants # --- Inscription des étudiants
for etud in etuds: for etud in etuds:
G.inscrit_etudiant(formsemestre_id, etud) G.inscrit_etudiant(formsemestre_id, etud)
# Vérification incription semestre: # Vérification incription semestre:
q = FormSemestreInscription.query.filter_by( q = FormSemestreInscription.query.filter_by(
etudid=etuds[0]["id"], formsemestre_id=formsemestre_id etudid=etuds[0]["etudid"], formsemestre_id=formsemestre_id
) )
assert q.count() == 1 assert q.count() == 1
ins = q.first() ins = q.first()
@ -103,7 +104,9 @@ def run_sco_basic(verbose=False) -> FormSemestre:
# --- Saisie toutes les notes de l'évaluation # --- Saisie toutes les notes de l'évaluation
for idx, etud in enumerate(etuds): for idx, etud in enumerate(etuds):
nb_changed, nb_suppress, existing_decisions = G.create_note( nb_changed, nb_suppress, existing_decisions = G.create_note(
evaluation_id=e["id"], etudid=etud["id"], note=NOTES_T[idx % len(NOTES_T)] evaluation_id=e["id"],
etudid=etud["etudid"],
note=NOTES_T[idx % len(NOTES_T)],
) )
assert not existing_decisions assert not existing_decisions
assert nb_suppress == 0 assert nb_suppress == 0
@ -134,7 +137,9 @@ def run_sco_basic(verbose=False) -> FormSemestre:
# Saisie les notes des 5 premiers étudiants: # Saisie les notes des 5 premiers étudiants:
for idx, etud in enumerate(etuds[:5]): for idx, etud in enumerate(etuds[:5]):
nb_changed, nb_suppress, existing_decisions = G.create_note( nb_changed, nb_suppress, existing_decisions = G.create_note(
evaluation_id=e2["id"], etudid=etud["id"], note=NOTES_T[idx % len(NOTES_T)] evaluation_id=e2["id"],
etudid=etud["etudid"],
note=NOTES_T[idx % len(NOTES_T)],
) )
# Cette éval n'est pas complète # Cette éval n'est pas complète
etat = sco_evaluations.do_evaluation_etat(e2["evaluation_id"]) etat = sco_evaluations.do_evaluation_etat(e2["evaluation_id"])
@ -154,7 +159,9 @@ def run_sco_basic(verbose=False) -> FormSemestre:
# Saisie des notes qui manquent: # Saisie des notes qui manquent:
for idx, etud in enumerate(etuds[5:]): for idx, etud in enumerate(etuds[5:]):
nb_changed, nb_suppress, existing_decisions = G.create_note( nb_changed, nb_suppress, existing_decisions = G.create_note(
evaluation_id=e2["id"], etudid=etud["id"], note=NOTES_T[idx % len(NOTES_T)] evaluation_id=e2["id"],
etudid=etud["etudid"],
note=NOTES_T[idx % len(NOTES_T)],
) )
etat = sco_evaluations.do_evaluation_etat(e2["evaluation_id"]) etat = sco_evaluations.do_evaluation_etat(e2["evaluation_id"])
assert etat["evalcomplete"] assert etat["evalcomplete"]
@ -232,7 +239,7 @@ def run_sco_basic(verbose=False) -> FormSemestre:
# ---- Suppression d'un étudiant, vérification inscription # ---- Suppression d'un étudiant, vérification inscription
# (permet de tester les cascades) # (permet de tester les cascades)
etud = Identite.query.get(etuds[0]["id"]) etud = Identite.query.get(etuds[0]["etudid"])
assert etud is not None assert etud is not None
etudid = etud.id etudid = etud.id
db.session.delete(etud) db.session.delete(etud)