From 65221f247ceee734a342c927ad606d7e134135be Mon Sep 17 00:00:00 2001 From: root Date: Mon, 3 May 2021 13:43:11 +0200 Subject: [PATCH] =?UTF-8?q?test=20des=20fonctions=20li=C3=A9=20aux=20abs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scotests/test_absence.py | 184 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100755 scotests/test_absence.py diff --git a/scotests/test_absence.py b/scotests/test_absence.py new file mode 100755 index 000000000..7a9bf95de --- /dev/null +++ b/scotests/test_absence.py @@ -0,0 +1,184 @@ +""" creation de 10 étudiants, formation, semestre, ue, module, absences le matin, l'apres midi, la journée compléte et justification +d'absences, supression d'absences, création d'une liste etat absences, creation d'un groupe afin de tester la fonction EtatAbsencesGroupes + +Fonctions de l'API utilisé : + - doSignaleAbsence + - doAnnuleAbsence + - doJustifAbsence + - getAbsSemEtud + - get_partition_groups + - get_partitions_list + - CountAbs + - CountAbsJust + - ListeAbsEtud + - partition_create + - createGroup + - set_group + + """ + + +import random + +# La variable context est définie par le script de lancement +# l'affecte ainsi pour évietr les warnins pylint: +context = context # pylint: disable=undefined-variable +REQUEST = REQUEST # pylint: disable=undefined-variable +import scotests.sco_fake_gen as sco_fake_gen # pylint: disable=import-error +import sco_abs +import sco_abs_views +import sco_abs_notification + +G = sco_fake_gen.ScoFake(context.Notes) +G.verbose = False + +# --- Création d'étudiants +etuds = [G.create_etud(code_nip=None) for _ in range(10)] + +# --- Création d'une formation +f = G.create_formation(acronyme="") +ue = G.create_ue(formation_id=f["formation_id"], acronyme="TST1", titre="ue test") +mat = G.create_matiere(ue_id=ue["ue_id"], titre="matière test") +mod = G.create_module( + matiere_id=mat["matiere_id"], + code="TSM1", + coefficient=1.0, + titre="module test", + ue_id=ue["ue_id"], # faiblesse de l'API + formation_id=f["formation_id"], # faiblesse de l'API +) + +# --- Mise place d'un semestre +sem = G.create_formsemestre( + formation_id=f["formation_id"], + semestre_id=1, + date_debut="01/01/2021", + date_fin="30/06/2021", +) + +mi = G.create_moduleimpl( + module_id=mod["module_id"], + formsemestre_id=sem["formsemestre_id"], + responsable_id="bach", +) + +# --- Inscription des étudiants +for etud in etuds: + G.inscrit_etudiant(sem, etud) + + +# --- Saisie absences +etudid = etuds[0]["etudid"] + +_ = sco_abs_views.doSignaleAbsence( + context.Absences, + "15/01/2021", + "15/01/2021", + demijournee=1, + etudid=etudid, + REQUEST=REQUEST, +) + +_ = sco_abs_views.doSignaleAbsence( + context.Absences, + "18/01/2021", + "18/01/2021", + demijournee=0, + etudid=etudid, + REQUEST=REQUEST, +) + +_ = sco_abs_views.doSignaleAbsence( + context.Absences, + "19/01/2021", + "19/01/2021", + demijournee=2, + etudid=etudid, + REQUEST=REQUEST, +) + +_ = sco_abs_views.doSignaleAbsence( + context.Absences, + "22/01/2021", + "22/01/2021", + demijournee=1, + etudid=etudid, + REQUEST=REQUEST, +) + +# --- Justification de certaines absences + +_ = sco_abs_views.doJustifAbsence( + context.Absences, + "15/01/2021", + "15/01/2021", + demijournee=1, + etudid=etudid, + REQUEST=REQUEST, +) + +_ = sco_abs_views.doJustifAbsence( + context.Absences, + "18/01/2021", + "18/01/2021", + demijournee=0, + etudid=etudid, + REQUEST=REQUEST, +) + +_ = sco_abs_views.doJustifAbsence( + context.Absences, + "19/01/2021", + "19/01/2021", + demijournee=2, + etudid=etudid, + REQUEST=REQUEST, +) + +# --- Test + +b = sco_abs.is_work_saturday(context.Absences) +assert b == 0 #samedi ne sont pas compris +a = sco_abs.getAbsSemEtud(context.Absences, sem, etudid) +assert a.CountAbs() == 5 #l'étudiant a été absent le 15 (apres midi) , (16 et 17 we), 18 (matin) et 19 janvier (matin et apres midi), et 22 (matin) +assert a.CountAbsJust() == 4 #l'étudiant justifie ses abs du 15, 18 et 19 + + +# + vérification à l'aide de ScoDoc WEB : ok! + +# --- Supression d'une absence et d'une justification + +_ = sco_abs_views.doAnnuleAbsence(context.Absences, "19/01/2021", "19/01/2021", 2, etudid=etudid, REQUEST=REQUEST) +a = sco_abs.getAbsSemEtud(context.Absences, sem, etudid) +print(a.CountAbs()) #lors du print cela affiche 5 or cela devrait afficher 3 + +#assert a.CountAbs() == 3 +# + vérification à l'aide de ScoDoc WEB : il y a bien plus que 3 abs, 2 justifiés et 1 non justifié. + + + +# --- supression d'une justification pas encore disponible à l'aide de python. + + +# --- Création d'une liste d'abs + +liste_abs = sco_abs_views.ListeAbsEtud(context.Absences, etudid, format='text', REQUEST=REQUEST) +print(liste_abs) +#toutes les absences figurent (bien evidemment pas celle qui a été supprimé alors pq CountAbs indique toujours le même nombre d'abs) + +# --- Création d'un groupe + +_ = sco_groups.partition_create(context.Scolarite, formsemestre_id=sem["formsemestre_id"], partition_name="Eleve", REQUEST=REQUEST) +li1 = sco_groups.get_partitions_list(context.Scolarite, sem["formsemestre_id"]) +_ = sco_groups.createGroup(context.Scolarite, li1[0]["partition_id"], "Groupe 1", REQUEST=REQUEST) + +# --- Affectation des élèves dans des groupes + +li_grp1 = sco_groups.get_partition_groups(context.Scolarite, li1[0]) +for etud in etuds : + sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp1[0]["group_id"]) + +# --- Test de EtatAbsencesGroupes + +# Fonction introuvable. +