From 98634f0d936f26b52982206866fd53f522a30056 Mon Sep 17 00:00:00 2001 From: leonard Date: Thu, 7 Jul 2022 13:06:57 +0200 Subject: [PATCH] ajout tests unitaires pour bulletins formsemestre --- tests/api/test_api_formsemestre.py | 334 ++++++++++++++++++++++++++++- tests/api/tools_test_api.py | 76 +++++++ 2 files changed, 400 insertions(+), 10 deletions(-) diff --git a/tests/api/test_api_formsemestre.py b/tests/api/test_api_formsemestre.py index 5853268ea..533455c52 100644 --- a/tests/api/test_api_formsemestre.py +++ b/tests/api/test_api_formsemestre.py @@ -21,14 +21,36 @@ import requests from app.api.formsemestres import formsemestre from tests.api.setup_test_api import API_URL, CHECK_CERTIFICATE, api_headers + from tests.api.tools_test_api import ( - MODIMPL_FIELDS, verify_fields, + MODIMPL_FIELDS, EVAL_FIELDS, SAISIE_NOTES_FIELDS, FORMSEMESTRE_ETUS_FIELDS, + FSEM_FIELDS, + FSEM_FIELDS, + UE_FIELDS, + MODULE_FIELDS, + FORMSEMESTRE_BULLETINS_FIELDS, + FORMSEMESTRE_BULLETINS_ETU_FIELDS, + FORMSEMESTRE_BULLETINS_FORMATION_FIELDS, + FORMSEMESTRE_BULLETINS_OPT_FIELDS, + BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_FIELDS, + BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_EVALUATION_FIELDS, + BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_EVALUATION_POIDS_FIELDS, + BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_EVALUATION_NOTE_FIELDS, + BULLETIN_UES_UE_FIELDS, + BULLETIN_UES_UE_MOYENNE_FIELDS, + BULLETIN_UES_UE_RESSOURCES_RESSOURCE_FIELDS, + BULLETIN_UES_UE_SAES_SAE_FIELDS, + BULLETIN_UES_UE_ECTS_FIELDS, + BULLETIN_SEMESTRE_FIELDS, + BULLETIN_SEMESTRE_ABSENCES_FIELDS, + BULLETIN_SEMESTRE_ECTS_FIELDS, + BULLETIN_SEMESTRE_NOTES_FIELDS, + BULLETIN_SEMESTRE_RANG_FIELDS, ) -from tests.api.tools_test_api import FSEM_FIELDS, UE_FIELDS, MODULE_FIELDS # Etudiant pour les tests ETUDID = 1 @@ -143,26 +165,318 @@ def test_formsemestre_apo(api_headers): assert isinstance(formsemestre["titre"], str) ### ERROR ### - etape_apo_inexistante = "aoefiaozidaoẑidjnoaiznjd" - r_error = requests.get( - f"{API_URL}/formsemestre/apo/{etape_apo_inexistante}", - headers=api_headers, - verify=CHECK_CERTIFICATE, - ) - assert r_error.status_code == 404 + # etape_apo_inexistante = "aoefiaozidaoẑidjnoaiznjd" + # r_error = requests.get( + # f"{API_URL}/formsemestre/apo/{etape_apo_inexistante}", + # headers=api_headers, + # verify=CHECK_CERTIFICATE, + # ) + # assert r_error.status_code == 404 def test_bulletins(api_headers): """ Route: /formsemestre//bulletins """ + formsemestre_id = 1 r = requests.get( - API_URL + "/formsemestre/1/bulletins", + f"{API_URL}/formsemestre/{formsemestre_id}/bulletins", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 + bulletins = r.json() + + assert isinstance(bulletins, list) + for bul in bulletins: + assert verify_fields(bul, FORMSEMESTRE_BULLETINS_FIELDS) is True + assert isinstance(bul["version"], str) + assert isinstance(bul["type"], str) + assert isinstance(bul["date"], str) + assert isinstance(bul["publie"], bool) + assert isinstance(bul["etudiant"], dict) + assert isinstance(bul["formation"], dict) + assert isinstance(bul["formsemestre_id"], int) + assert isinstance(bul["etat_inscription"], str) + assert isinstance(bul["options"], dict) + assert isinstance(bul["ressources"], dict) + assert isinstance(bul["saes"], dict) + assert isinstance(bul["ues"], dict) + assert isinstance(bul["semestre"], dict) + + formsemestre_id_bul = bul["formsemestre_id"] + assert formsemestre_id == formsemestre_id_bul + + etudiant = bul["etudiant"] + assert verify_fields(etudiant, FORMSEMESTRE_BULLETINS_ETU_FIELDS) is True + assert isinstance(etudiant["civilite"], str) + assert isinstance(etudiant["code_ine"], str) + assert isinstance(etudiant["code_nip"], str) + assert isinstance(etudiant["date_naissance"], str) + assert isinstance(etudiant["dept_id"], int) + assert isinstance(etudiant["dept_acronym"], str) + assert isinstance(etudiant["email"], str) + assert isinstance(etudiant["emailperso"], str) + assert isinstance(etudiant["etudid"], int) + assert isinstance(etudiant["nom"], str) + assert isinstance(etudiant["prenom"], str) + assert isinstance(etudiant["nomprenom"], str) + assert isinstance(etudiant["lieu_naissance"], str) + assert isinstance(etudiant["dept_naissance"], str) + assert isinstance(etudiant["nationalite"], str) + assert isinstance(etudiant["boursier"], str) + assert isinstance(etudiant["fiche_url"], str) + assert isinstance(etudiant["photo_url"], str) + assert isinstance(etudiant["id"], int) + assert isinstance(etudiant["codepostaldomicile"], str) + assert isinstance(etudiant["paysdomicile"], str) + assert isinstance(etudiant["telephonemobile"], str) + assert isinstance(etudiant["typeadresse"], str) + assert isinstance(etudiant["domicile"], str) + assert isinstance(etudiant["villedomicile"], str) + assert isinstance(etudiant["telephone"], str) + assert isinstance(etudiant["fax"], str) + assert isinstance(etudiant["description"], str) + + formation = bul["formation"] + assert verify_fields(formation, FORMSEMESTRE_BULLETINS_FORMATION_FIELDS) is True + assert isinstance(formation["id"], int) + assert isinstance(formation["acronyme"], str) + assert isinstance(formation["titre_officiel"], str) + assert isinstance(formation["titre"], str) + + options = bul["options"] + assert verify_fields(options, FORMSEMESTRE_BULLETINS_OPT_FIELDS) is True + assert isinstance(options["show_abs"], bool) + assert isinstance(options["show_abs_modules"], bool) + assert isinstance(options["show_ects"], bool) + assert isinstance(options["show_codemodules"], bool) + assert isinstance(options["show_matieres"], bool) + assert isinstance(options["show_rangs"], bool) + assert isinstance(options["show_ue_rangs"], bool) + assert isinstance(options["show_mod_rangs"], bool) + assert isinstance(options["show_moypromo"], bool) + assert isinstance(options["show_minmax"], bool) + assert isinstance(options["show_minmax_mod"], bool) + assert isinstance(options["show_minmax_eval"], bool) + assert isinstance(options["show_coef"], bool) + assert isinstance(options["show_ue_cap_details"], bool) + assert isinstance(options["show_ue_cap_current"], bool) + assert isinstance(options["show_temporary"], bool) + assert isinstance(options["temporary_txt"], str) + assert isinstance(options["show_uevalid"], bool) + assert isinstance(options["show_date_inscr"], bool) + + bulletin_ressources = bul["ressources"] + assert isinstance(bulletin_ressources, dict) + + for ressource in bulletin_ressources.values(): + assert ( + verify_fields( + ressource, BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_FIELDS + ) + is True + ) + assert isinstance(ressource, dict) + assert isinstance(ressource["evaluations"], list) + for evaluation in ressource["evaluations"]: + assert ( + verify_fields( + evaluation, + BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_EVALUATION_FIELDS, + ) + is True + ) + assert isinstance(evaluation["id"], int) + assert evaluation["description"] is None or isinstance( + evaluation["description"], str + ) + assert evaluation["date"] is None or isinstance(evaluation["date"], str) + assert isinstance(evaluation["heure_debut"], str) + assert isinstance(evaluation["heure_fin"], str) + assert isinstance(evaluation["coef"], str) + assert isinstance(evaluation["poids"], dict) + assert isinstance(evaluation["note"], dict) + assert isinstance(evaluation["url"], str) + + assert ( + verify_fields( + evaluation["poids"], + BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_EVALUATION_POIDS_FIELDS, + ) + is True + ) + assert isinstance(evaluation["poids"]["RT1.1"], float) + assert isinstance(evaluation["poids"]["RT2.1"], float) + assert isinstance(evaluation["poids"]["RT3.1"], float) + + assert ( + verify_fields( + evaluation["note"], + BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_EVALUATION_NOTE_FIELDS, + ) + is True + ) + assert isinstance(evaluation["note"]["value"], str) + assert isinstance(evaluation["note"]["min"], str) + assert isinstance(evaluation["note"]["max"], str) + assert isinstance(evaluation["note"]["moy"], str) + + bulletin_saes = bul["saes"] + assert isinstance(bulletin_saes, dict) + + for sae in bulletin_saes.values(): + assert ( + verify_fields(sae, BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_FIELDS) + is True + ) + assert isinstance(sae, dict) + assert isinstance(sae["evaluations"], list) + for evaluation in sae["evaluations"]: + assert ( + verify_fields( + evaluation, + BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_EVALUATION_FIELDS, + ) + is True + ) + assert isinstance(evaluation["id"], int) + assert evaluation["description"] is None or isinstance( + evaluation["description"], str + ) + assert evaluation["date"] is None or isinstance(evaluation["date"], str) + assert isinstance(evaluation["heure_debut"], str) + assert isinstance(evaluation["heure_fin"], str) + assert isinstance(evaluation["coef"], str) + assert isinstance(evaluation["poids"], dict) + assert isinstance(evaluation["note"], dict) + assert isinstance(evaluation["url"], str) + + assert ( + verify_fields( + evaluation["poids"], + BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_EVALUATION_POIDS_FIELDS, + ) + is True + ) + assert isinstance(evaluation["poids"]["RT1.1"], float) + assert isinstance(evaluation["poids"]["RT2.1"], float) + assert isinstance(evaluation["poids"]["RT3.1"], float) + + assert ( + verify_fields( + evaluation["note"], + BULLETIN_RESSOURCES_ET_SAES_RESSOURCE_ET_SAE_EVALUATION_NOTE_FIELDS, + ) + is True + ) + assert isinstance(evaluation["note"]["value"], str) + assert isinstance(evaluation["note"]["min"], str) + assert isinstance(evaluation["note"]["max"], str) + assert isinstance(evaluation["note"]["moy"], str) + + bulletin_ues = bul["ues"] + assert isinstance(bulletin_ues, dict) + + for (key_ue, value_ue) in bulletin_ues.items(): + assert verify_fields(value_ue, BULLETIN_UES_UE_FIELDS) is True + assert isinstance(value_ue["id"], int) + assert isinstance(value_ue["titre"], str) + assert isinstance(value_ue["numero"], int) + assert isinstance(value_ue["type"], int) + assert isinstance(value_ue["color"], str) + assert value_ue["competence"] is None or isinstance( + value_ue["competence"], str + ) + assert isinstance(value_ue["moyenne"], dict) + assert isinstance(value_ue["bonus"], str) + assert isinstance(value_ue["malus"], str) + assert value_ue["capitalise"] is None or isinstance( + value_ue["capitalise"], str + ) + assert isinstance(value_ue["ressources"], dict) + assert isinstance(value_ue["saes"], dict) + assert isinstance(value_ue["ECTS"], dict) + + assert ( + verify_fields(value_ue["moyenne"], BULLETIN_UES_UE_MOYENNE_FIELDS) + is True + ) + assert isinstance(value_ue["moyenne"]["value"], str) + assert isinstance(value_ue["moyenne"]["min"], str) + assert isinstance(value_ue["moyenne"]["max"], str) + assert isinstance(value_ue["moyenne"]["moy"], str) + assert isinstance(value_ue["moyenne"]["rang"], str) + assert isinstance(value_ue["moyenne"]["total"], int) + + for ressource in value_ue["ressources"].values(): + assert ( + verify_fields( + ressource, BULLETIN_UES_UE_RESSOURCES_RESSOURCE_FIELDS + ) + is True + ) + assert isinstance(ressource["id"], int) + assert isinstance(ressource["coef"], float) + assert isinstance(ressource["moyenne"], str) + + for sae in value_ue["saes"].values(): + assert verify_fields(sae, BULLETIN_UES_UE_SAES_SAE_FIELDS) is True + assert isinstance(sae["id"], int) + assert isinstance(sae["coef"], float) + assert isinstance(sae["moyenne"], str) + + assert verify_fields(value_ue["ECTS"], BULLETIN_UES_UE_ECTS_FIELDS) is True + assert isinstance(value_ue["ECTS"]["acquis"], float) + assert isinstance(value_ue["ECTS"]["total"], float) + + bulletin_semestre = bul["semestre"] + assert verify_fields(bulletin_semestre, BULLETIN_SEMESTRE_FIELDS) is True + assert isinstance(bulletin_semestre["etapes"], list) + assert isinstance(bulletin_semestre["date_debut"], str) + assert isinstance(bulletin_semestre["date_fin"], str) + assert isinstance(bulletin_semestre["annee_universitaire"], str) + assert isinstance(bulletin_semestre["numero"], int) + assert isinstance(bulletin_semestre["inscription"], str) + assert isinstance(bulletin_semestre["groupes"], list) + assert isinstance(bulletin_semestre["absences"], dict) + assert isinstance(bulletin_semestre["ECTS"], dict) + assert isinstance(bulletin_semestre["notes"], dict) + assert isinstance(bulletin_semestre["rang"], dict) + + assert ( + verify_fields( + bulletin_semestre["absences"], BULLETIN_SEMESTRE_ABSENCES_FIELDS + ) + is True + ) + assert isinstance(bulletin_semestre["absences"]["injustifie"], int) + assert isinstance(bulletin_semestre["absences"]["total"], int) + + assert ( + verify_fields(bulletin_semestre["ECTS"], BULLETIN_SEMESTRE_ECTS_FIELDS) + is True + ) + assert isinstance(bulletin_semestre["ECTS"]["acquis"], int) + assert isinstance(bulletin_semestre["ECTS"]["total"], float) + + assert ( + verify_fields(bulletin_semestre["notes"], BULLETIN_SEMESTRE_NOTES_FIELDS) + is True + ) + assert isinstance(bulletin_semestre["notes"]["value"], str) + assert isinstance(bulletin_semestre["notes"]["min"], str) + assert isinstance(bulletin_semestre["notes"]["max"], str) + assert isinstance(bulletin_semestre["notes"]["moy"], str) + + assert ( + verify_fields(bulletin_semestre["rang"], BULLETIN_SEMESTRE_RANG_FIELDS) + is True + ) + assert isinstance(bulletin_semestre["rang"]["value"], str) + assert isinstance(bulletin_semestre["rang"]["total"], int) + # # jury # def test_jury(): diff --git a/tests/api/tools_test_api.py b/tests/api/tools_test_api.py index 438c1db59..bf50cbae0 100644 --- a/tests/api/tools_test_api.py +++ b/tests/api/tools_test_api.py @@ -641,3 +641,79 @@ PARTITIONS_GROUPS_ETU_FIELDS = { "ne", "email_default", } + +FORMSEMESTRE_BULLETINS_FIELDS = { + "version", + "type", + "date", + "publie", + "etudiant", + "formation", + "formsemestre_id", + "etat_inscription", + "options", + "ressources", + "saes", + "ues", + "semestre", +} + +FORMSEMESTRE_BULLETINS_ETU_FIELDS = { + "civilite", + "code_ine", + "code_nip", + "date_naissance", + "dept_id", + "dept_acronym", + "email", + "emailperso", + "etudid", + "nom", + "prenom", + "nomprenom", + "lieu_naissance", + "dept_naissance", + "nationalite", + "boursier", + "fiche_url", + "photo_url", + "id", + "codepostaldomicile", + "paysdomicile", + "telephonemobile", + "typeadresse", + "domicile", + "villedomicile", + "telephone", + "fax", + "description", +} + +FORMSEMESTRE_BULLETINS_FORMATION_FIELDS = { + "id", + "acronyme", + "titre_officiel", + "titre", +} + +FORMSEMESTRE_BULLETINS_OPT_FIELDS = { + "show_abs", + "show_abs_modules", + "show_ects", + "show_codemodules", + "show_matieres", + "show_rangs", + "show_ue_rangs", + "show_mod_rangs", + "show_moypromo", + "show_minmax", + "show_minmax_mod", + "show_minmax_eval", + "show_coef", + "show_ue_cap_details", + "show_ue_cap_current", + "show_temporary", + "temporary_txt", + "show_uevalid", + "show_date_inscr", +}