diff --git a/app/scodoc/sco_saisie_notes.py b/app/scodoc/sco_saisie_notes.py index 3b980df04c..7ea4b735ab 100644 --- a/app/scodoc/sco_saisie_notes.py +++ b/app/scodoc/sco_saisie_notes.py @@ -74,7 +74,7 @@ from app.scodoc import sco_etud def convert_note_from_string( - note, + note: str, note_max, note_min=scu.NOTES_MIN, etudid: int = None, @@ -128,7 +128,8 @@ def _displayNote(val): return val -def _check_notes(notes, evaluation, mod): +def _check_notes(notes: list[(int, float)], evaluation: dict, mod: dict): + # XXX typehint : float or str """notes is a list of tuples (etudid, value) mod is the module (used to ckeck type, for malus) returns list of valid notes (etudid, float value) diff --git a/tests/unit/cursus_but_gmp_iutlm.yaml b/tests/unit/cursus_but_gmp_iutlm.yaml index 47e0cbf8ef..4d3da7a6ae 100644 --- a/tests/unit/cursus_but_gmp_iutlm.yaml +++ b/tests/unit/cursus_but_gmp_iutlm.yaml @@ -1,6 +1,9 @@ # Tests unitaires jury BUT - IUTLM GMP # Essais avec un BUT GMP, 4 UE + 1 bonus et deux parcours sur S3 S4 # Contrib Martin M. +# +# Pour ne jouer que ce scénario: +# pytest -m lemans tests/unit/test_but_jury.py ReferentielCompetences: filename: but-GMP-05012022-081650.xml @@ -115,7 +118,7 @@ FormSemestres: date_fin: 2024-01-12 Etudiants: - gmp01: + gmp01: # cursus S1, S2, S3 prenom: etugmp01 civilite: M formsemestres: @@ -231,7 +234,7 @@ Etudiants: code_valide: ADM moy_ue: 12.5 - gmp02: + gmp02: # cursus S1, S2, S3 prenom: etugmp02 civilite: F formsemestres: @@ -346,7 +349,7 @@ Etudiants: # code_valide: ADM # moy_ue: 14 - gmp03: + gmp03: # cursus S1, S2, S1-red prenom: etugmp03 civilite: X formsemestres: @@ -431,6 +434,7 @@ Etudiants: notes_modules: # on ne note ici que les UE à refaire "SAE1.1": 14. # il améliore son UE 1 "SAE1.2": 12. # et cette fois reussi les autres + "SAE1.3": EXC # pour que l'éval soit complete "SAE1.4": 13. attendu: nb_competences: 4 @@ -447,3 +451,19 @@ Etudiants: "UE1.4-C4": code_valide: ADM moy_ue: 13 + + gmp04: # cursus S1-red (primo-entrant) + prenom: Primo + civilite: M + formsemestres: + S1-red: + notes_modules: + "SAE1.1": 11. + "SAE1.2": 12. + "SAE1.3": 13. + "SAE1.4": 9. + attendu: # les codes jury que l'on doit vérifier + deca: + "UE1.4-C4": + code_valide: "AJ" + moy_ue: 9. diff --git a/tests/unit/yaml_setup.py b/tests/unit/yaml_setup.py index 535fcdc7c6..7efd0fb63c 100644 --- a/tests/unit/yaml_setup.py +++ b/tests/unit/yaml_setup.py @@ -237,10 +237,21 @@ def note_les_modules(doc: dict): raise ValueError(f"module de code '{code_module}' introuvable") for evaluation in modimpl.evaluations: # s'il y a plusieurs evals, affecte la même note à chacune + note_value, invalid = sco_saisie_notes.convert_note_from_string( + str(note), + 20.0, + note_min=scu.NOTES_MIN, + etudid=etud.id, + absents=[], + tosuppress=[], + invalids=[], + ) + assert not invalid # valeur note invalide + assert isinstance(note_value, float) sco_saisie_notes.notes_add( a_user, evaluation.id, - [(etud.id, float(note))], + [(etud.id, note_value)], comment="note_les_modules", )