From e74d075bda05bbf920b2d53edcf4e611bbe50f8f Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Tue, 3 May 2022 16:15:04 +0200 Subject: [PATCH] Tests unitaires pour les parties formations et partitions + correction d'exemples de resultats --- app/api/etudiants.py | 135 +++++++++++++++-------------- app/api/formations.py | 34 +++++++- tests/api/test_api_departements.py | 1 - tests/api/test_api_etudiants.py | 5 +- tests/api/test_api_formations.py | 120 ++++++++++++++++++++++--- tests/api/test_api_formsemestre.py | 4 +- tests/api/test_api_partitions.py | 97 +++++++++++++++++---- 7 files changed, 295 insertions(+), 101 deletions(-) diff --git a/app/api/etudiants.py b/app/api/etudiants.py index 9f40cf6b5..c04495abe 100644 --- a/app/api/etudiants.py +++ b/app/api/etudiants.py @@ -22,31 +22,23 @@ def etudiants_courant(long=False): Retourne la liste des étudiants courant Exemple de résultat : - { - { - "civilite": "X", - "code_ine": null, - "code_nip": null, - "date_naissance": null, - "email": null, - "emailperso": null, - "etudid": 18, + [ + { + "id": 1, + "nip": 1, "nom": "MOREL", - "prenom": "JACQUES" - }, - { + "prenom": "JACQUES", "civilite": "X", - "code_ine": null, - "code_nip": null, - "date_naissance": null, - "email": null, - "emailperso": null, - "etudid": 19, - "nom": "FOURNIER", - "prenom": "ANNE" - }, - ... - } + }, + { + "id": 2, + "nip": 2, + "nom": "GILLES", + "prenom": "MAXIME", + "civilite": "X", + }, + ... + ] """ # Récupération de tous les étudiants etuds = Identite.query.filter( @@ -76,17 +68,32 @@ def etudiant(etudid: int = None, nip: int = None, ine: int = None): ine : le code ine d'un étudiant Exemple de résultat : - { - "civilite": "X", - "code_ine": null, - "code_nip": null, - "date_naissance": null, - "email": null, - "emailperso": null, - "etudid": 18, - "nom": "MOREL", - "prenom": "JACQUES" - } + { + "civilite": "X", + "code_ine": "1", + "code_nip": "1", + "date_naissance": "", + "email": "SACHA.COSTA@example.com", + "emailperso": "", + "etudid": 1, + "nom": "COSTA", + "prenom": "SACHA", + "nomprenom": "Sacha COSTA", + "lieu_naissance": "", + "dept_naissance": "", + "nationalite": "", + "boursier": "", + "id": 1, + "codepostaldomicile": "", + "paysdomicile": "", + "telephonemobile": "", + "typeadresse": "domicile", + "domicile": "", + "villedomicile": "", + "telephone": "", + "fax": "", + "description": "" + } """ # Récupération de l'étudiant etud = get_etu_from_etudid_or_nip_or_ine(etudid, nip, ine) @@ -110,36 +117,36 @@ def etudiant_formsemestres(etudid: int = None, nip: int = None, ine: int = None) ine : le code ine d'un étudiant Exemple de résultat : - [ - { - "date_fin": "31/08/2022", - "resp_can_edit": false, - "dept_id": 1, - "etat": true, - "resp_can_change_ens": true, - "id": 1, - "modalite": "FI", - "ens_can_edit_eval": false, - "formation_id": 1, - "gestion_compensation": false, - "elt_sem_apo": null, - "semestre_id": 1, - "bul_hide_xml": false, - "elt_annee_apo": null, - "titre": "Semestre test", - "block_moyennes": false, - "scodoc7_id": null, - "date_debut": "01/09/2021", - "gestion_semestrielle": false, - "bul_bgcolor": "white", - "formsemestre_id": 1, - "titre_num": "Semestre test semestre 1", - "date_debut_iso": "2021-09-01", - "date_fin_iso": "2022-08-31", - "responsables": [] - }, - ... - ] + [ + { + "date_fin": "31/08/2022", + "resp_can_edit": false, + "dept_id": 1, + "etat": true, + "resp_can_change_ens": true, + "id": 1, + "modalite": "FI", + "ens_can_edit_eval": false, + "formation_id": 1, + "gestion_compensation": false, + "elt_sem_apo": null, + "semestre_id": 1, + "bul_hide_xml": false, + "elt_annee_apo": null, + "titre": "Semestre test", + "block_moyennes": false, + "scodoc7_id": null, + "date_debut": "01/09/2021", + "gestion_semestrielle": false, + "bul_bgcolor": "white", + "formsemestre_id": 1, + "titre_num": "Semestre test semestre 1", + "date_debut_iso": "2021-09-01", + "date_fin_iso": "2022-08-31", + "responsables": [] + }, + ... + ] """ # Récupération de l'étudiant etud = get_etu_from_etudid_or_nip_or_ine(etudid, nip, ine) diff --git a/app/api/formations.py b/app/api/formations.py index ee017514d..920d9af4c 100644 --- a/app/api/formations.py +++ b/app/api/formations.py @@ -32,7 +32,6 @@ def formations(): }, ... ] - """ # Récupération de toutes les formations list_formations = models.Formation.query.all() @@ -171,7 +170,6 @@ def formation_export_by_formation_id(formation_id: int, export_ids=False): }, ] } - """ # Fonction utilité : app.scodoc.sco_formations.formation_export() @@ -190,11 +188,41 @@ def formation_export_by_formation_id(formation_id: int, export_ids=False): @bp.route("/formations/moduleimpl/", methods=["GET"]) @token_permission_required(Permission.APIView) -def moduleimpls(moduleimpl_id: int): +def moduleimpl(moduleimpl_id: int): """ Retourne un module moduleimpl en fonction de son id moduleimpl_id : l'id d'un moduleimpl + + Exemple de résultat : + { + "id": 1, + "formsemestre_id": 1, + "computation_expr": null, + "module_id": 1, + "responsable_id": 2, + "moduleimpl_id": 1, + "ens": [], + "module": { + "heures_tp": 0, + "code_apogee": "", + "titre": "Initiation aux réseaux informatiques", + "coefficient": 1, + "module_type": 2, + "id": 1, + "ects": null, + "abbrev": "Init aux réseaux informatiques", + "ue_id": 1, + "code": "R101", + "formation_id": 1, + "heures_cours": 0, + "matiere_id": 1, + "heures_td": 0, + "semestre_id": 1, + "numero": 10, + "module_id": 1 + } + } """ # Récupération des tous les moduleimpl moduleimpl = models.ModuleImpl.query.filter_by(id=moduleimpl_id).first_or_404() diff --git a/tests/api/test_api_departements.py b/tests/api/test_api_departements.py index e0b82f230..b9f762b90 100644 --- a/tests/api/test_api_departements.py +++ b/tests/api/test_api_departements.py @@ -20,7 +20,6 @@ Utilisation : import requests from tests.api.setup_test_api import SCODOC_URL, CHECK_CERTIFICATE, HEADERS - from tests.api.tools_test_api import verify_fields # departements diff --git a/tests/api/test_api_etudiants.py b/tests/api/test_api_etudiants.py index da40dfc5c..c0314a1e6 100644 --- a/tests/api/test_api_etudiants.py +++ b/tests/api/test_api_etudiants.py @@ -21,12 +21,9 @@ from random import randint import requests from tests.api.setup_test_api import SCODOC_URL, CHECK_CERTIFICATE, HEADERS - - -# etudiants_courant from tests.api.tools_test_api import verify_fields - +# etudiants_courant def test_etudiants_courant(): fields = [ diff --git a/tests/api/test_api_formations.py b/tests/api/test_api_formations.py index aaaa52831..346e333e0 100644 --- a/tests/api/test_api_formations.py +++ b/tests/api/test_api_formations.py @@ -20,62 +20,162 @@ Utilisation : import requests from tests.api.setup_test_api import SCODOC_URL, CHECK_CERTIFICATE, HEADERS +from tests.api.tools_test_api import verify_fields + # formations def test_formations(): + fields = [ + "id", + "acronyme", + "titre_officiel", + "formation_code", + "code_specialite", + "dept_id", + "titre", + "version", + "type_parcours", + "referentiel_competence_id", + "formation_id", + ] + r = requests.get( SCODOC_URL + "/ScoDoc/api/formations", headers=HEADERS, verify=CHECK_CERTIFICATE, ) + + formation = r.json()[0] + + fields_OK = verify_fields(formation, fields) + assert r.status_code == 200 + assert len(r.json()) == 1 + assert fields_OK is True # formations_by_id def test_formations_by_id(): + fields = [ + "id", + "acronyme", + "titre_officiel", + "formation_code", + "code_specialite", + "dept_id", + "titre", + "version", + "type_parcours", + "referentiel_competence_id", + "formation_id", + ] + r = requests.get( SCODOC_URL + "/ScoDoc/api/formations/1", headers=HEADERS, verify=CHECK_CERTIFICATE, ) + + formation = r.json() + + fields_OK = verify_fields(formation, fields) + assert r.status_code == 200 + assert fields_OK is True # formation_export_by_formation_id def test_formation_export_by_formation_id(): + fields = [ + "id", + "acronyme", + "titre_officiel", + "formation_code", + "code_specialite", + "dept_id", + "titre", + "version", + "type_parcours", + "referentiel_competence_id", + "formation_id", + "ue", + ] r = requests.get( SCODOC_URL + "/ScoDoc/api/formations/formation_export/1", headers=HEADERS, verify=CHECK_CERTIFICATE, ) + + export_formation = r.json() + + fields_OK = verify_fields(export_formation, fields) + assert r.status_code == 200 + assert fields_OK is True # formsemestre_apo -def test_formsemestre_apo(): +# def test_formsemestre_apo(): +# r = requests.get( +# SCODOC_URL + "/ScoDoc/api/formations/apo/", +# headers=HEADERS, +# verify=CHECK_CERTIFICATE, +# ) +# assert r.status_code == 200 + + +# moduleimpl +def test_moduleimpl(): + + fields = [ + "id", + "formsemestre_id", + "computation_expr", + "module_id", + "responsable_id", + "moduleimpl_id", + "ens", + "module", + ] + r = requests.get( - SCODOC_URL + "/ScoDoc/api/formations/apo/", + SCODOC_URL + "/ScoDoc/api/formations/moduleimpl/1", headers=HEADERS, verify=CHECK_CERTIFICATE, ) - assert r.status_code == 200 + moduleimpl = r.json() + + fields_OK = verify_fields(moduleimpl, fields) -# moduleimpls -def test_moduleimpls(): - r = requests.get( - SCODOC_URL + "/ScoDoc/api/formations/moduleimpl/", - headers=HEADERS, - verify=CHECK_CERTIFICATE, - ) assert r.status_code == 200 + assert fields_OK is True # moduleimpls_sem def test_moduleimpls_sem(): + + fields = [ + "id", + "formsemestre_id", + "computation_expr", + "module_id", + "responsable_id", + "moduleimpl_id", + "ens", + "module", + "moduleimpl_id", + "ens", + ] r = requests.get( SCODOC_URL + "/ScoDoc/api/formations/moduleimpl/formsemestre/1/liste", headers=HEADERS, verify=CHECK_CERTIFICATE, ) + moduleimpl = r.json()[0] + + fields_OK = verify_fields(moduleimpl, fields) + assert r.status_code == 200 + assert len(r.json()) == 21 + assert fields_OK is True diff --git a/tests/api/test_api_formsemestre.py b/tests/api/test_api_formsemestre.py index 044fa856b..ac84cbafd 100644 --- a/tests/api/test_api_formsemestre.py +++ b/tests/api/test_api_formsemestre.py @@ -20,11 +20,9 @@ Utilisation : import requests from tests.api.setup_test_api import SCODOC_URL, CHECK_CERTIFICATE, HEADERS - -# formsemestre from tests.api.tools_test_api import verify_fields - +# formsemestre def test_formsemestre(): r = requests.get( SCODOC_URL + "/ScoDoc/api/formsemestre/1", diff --git a/tests/api/test_api_partitions.py b/tests/api/test_api_partitions.py index 51719aa62..f7af82b0a 100644 --- a/tests/api/test_api_partitions.py +++ b/tests/api/test_api_partitions.py @@ -20,40 +20,105 @@ Utilisation : import requests from tests.api.setup_test_api import SCODOC_URL, CHECK_CERTIFICATE, HEADERS +from tests.api.tools_test_api import verify_fields + # partition def test_partition(): + fields = [ + "partition_id", + "id", + "formsemestre_id", + "partition_name", + "numero", + "bul_show_rank", + "show_in_lists", + ] + r = requests.get( SCODOC_URL + "/ScoDoc/api/partitions/1", headers=HEADERS, verify=CHECK_CERTIFICATE, ) + + partition = r.json()[0] + + fields_OK = verify_fields(partition, fields) + assert r.status_code == 200 + assert len(r.json()) == 2 + assert fields_OK is True # etud_in_group def test_etud_in_group(): + + fields = [ + "etudid", + "id", + "dept_id", + "nom", + "prenom", + "nom_usuel", + "civilite", + "date_naissance", + "lieu_naissance", + "dept_naissance", + "nationalite", + "statut", + "boursier", + "photo_filename", + "code_nip", + "code_ine", + "scodoc7_id", + "email", + "emailperso", + "domicile", + "codepostaldomicile", + "villedomicile", + "paysdomicile", + "telephone", + "telephonemobile", + "fax", + "typeadresse", + "description", + "group_id", + "etat", + "civilite_str", + "nom_disp", + "nomprenom", + "ne", + "email_default", + ] + r = requests.get( SCODOC_URL + "/ScoDoc/api/partitions/groups/1", headers=HEADERS, verify=CHECK_CERTIFICATE, ) + + etu = r.json()[0] + + fields_OK = verify_fields(etu, fields) + assert r.status_code == 200 - r = requests.get( - SCODOC_URL + "/ScoDoc/api/partitions/groups//etat/", - headers=HEADERS, - verify=CHECK_CERTIFICATE, - ) - assert r.status_code == 200 + assert len(r.json()) == 16 + assert fields_OK is True + # r = requests.get( + # SCODOC_URL + "/ScoDoc/api/partitions/groups/1/etat/", + # headers=HEADERS, + # verify=CHECK_CERTIFICATE, + # ) + # assert r.status_code == 200 -# set_groups -def test_set_groups(): - r = requests.get( - SCODOC_URL - + "/ScoDoc/api/partitions/set_groups?partition_id=&groups_lists=&" - "groups_to_create=&groups_to_delete=", - headers=HEADERS, - verify=CHECK_CERTIFICATE, - ) - assert r.status_code == 200 +# # set_groups +# def test_set_groups(): +# r = requests.get( +# SCODOC_URL +# + "/partitions/set_groups/partition//groups/" +# "/delete//create/", +# headers=HEADERS, +# verify=CHECK_CERTIFICATE, +# ) +# assert r.status_code == 200