From 34e34b188ce3ed381df44ab04c9eeeb72f7107db Mon Sep 17 00:00:00 2001 From: root Date: Mon, 3 May 2021 14:29:40 +0200 Subject: [PATCH] =?UTF-8?q?test=20bas=C3=A9=20sur=20les=20groupes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scotests/test_groupes.py | 385 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 385 insertions(+) create mode 100755 scotests/test_groupes.py diff --git a/scotests/test_groupes.py b/scotests/test_groupes.py new file mode 100755 index 000000000..8ffa5d60d --- /dev/null +++ b/scotests/test_groupes.py @@ -0,0 +1,385 @@ +""" 1) Création de 20 étudiants, création d’une formation, inscription de 10 étudiants dans un semestre (1ere année), + 10 dans un autre (2eme année), création de module, ue, + matière et affectation des étudiants dans deux groupes : A et B pour chaque semestre. + créer 2 évaluations, + affecter des notes dans chaque évaluation et donner la liste des étudiants inscrits à l’évaluation pour chaque groupe. + Donner la liste des groupes auxquels des étudiants inscrits appartiennent à cette évaluation. + Pour une raison quelquonque un élève souhaite changer de groupe. + Changer le nom d'un groupe et d'une partition (à l'aide de fonction) + + + +- Vérification du bon nombres d’étudiants dans chaque chaque groupe (5) + +- Vérification des noms de la formations (acro = DUTI, titre = DUT Info, titre_officiel = DUT Informatique), + UE (acr = UE11/UE31, titre = UE1S1/UE1S3), modules (code = M1S1/M1S3, titre = mod1/mod2), matières (ue_id=ue1/2[ue_id], titre = mat1/mat2) + +- Vérification des listes de groupes et de partitions + +- Vérification du changement de groupe des étudiants + +- Teste d'autres fonctions de l'API correspondant aux groupes + +Fonctions de l’API utilisé : + - create_formation + - create_ue + - create_module + - create_matiere + - create_formsemestre + - create_moduleimpl + - inscrit_etudiant + - partition_create + - get_default_partition + - createGroupe + - partition_create + - get_partitions_list + - get_partition_groups + - set_group + - get_etud_groups + - change_etud_group_in_partition + - get_group + - group_delete + - get_partition + - get_default_group + - get_default_partition + - get_sem_groups + - get_group_members + - do_evaluation_listeetuds_groups + - do_evaluation_listegroupes + - formsemestre_partition_list + +""" + +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_groups + + +G = sco_fake_gen.ScoFake(context.Notes) +G.verbose = False + +# --- Création d'étudiants +etuds = [G.create_etud(code_nip=None) for _ in range(20)] +assert len(etuds) == 20 + +# --- Création d'une formation + +f = G.create_formation( + acronyme="DUTI", + titre="DUT Info", + titre_officiel="DUT Informatique", + ) + +assert f["acronyme"]=="DUTI" +assert f["titre"]=="DUT Info" +assert f["titre_officiel"]=="DUT Informatique" + + +# --- Création d'UE, matière, module pour les premieres années + +ue1 = G.create_ue(formation_id=f["formation_id"], acronyme="UE11", titre="UE1S1") + +mat1 = G.create_matiere(ue_id=ue1["ue_id"], titre="mat1") +mod1 = G.create_module( + matiere_id=mat1["matiere_id"], + code="M1S1", + coefficient=1.0, + titre="mod1", + ue_id=ue1["ue_id"], # faiblesse de l'API + formation_id=f["formation_id"], # faiblesse de l'API +) + +assert ue1["formation_id"] == f["formation_id"] +assert ue1["acronyme"]=="UE11" +assert ue1["titre"]=="UE1S1" + +assert mod1["matiere_id"]==mat1["matiere_id"] +assert mod1["code"]=="M1S1" +assert mod1["titre"]=="mod1" +assert mod1["ue_id"]==ue1["ue_id"] +assert mod1["formation_id"]==f["formation_id"] + +# --- Création d'UE, matière, module pour les deuxieme années + +ue2 = G.create_ue(formation_id=f["formation_id"], acronyme="UE31", titre="UE1S1") + +mat2 = G.create_matiere(ue_id=ue2["ue_id"], titre="mat2") +mod2 = G.create_module( + matiere_id=mat2["matiere_id"], + code="M1S3", + coefficient=1.0, + titre="mod2", + ue_id=ue2["ue_id"], # faiblesse de l'API + formation_id=f["formation_id"], # faiblesse de l'API +) + +# --- Mise place des semestres + +sem1 = G.create_formsemestre( + formation_id=f["formation_id"], + semestre_id=1, + date_debut="01/09/2020", + date_fin="01/02/2021", +) + +assert sem1["formation_id"]==f["formation_id"] +assert sem1["semestre_id"]==1 +assert sem1["date_debut"]=="01/09/2020" +assert sem1["date_fin"]=="01/02/2021" + +sem2 = G.create_formsemestre( + formation_id=f["formation_id"], + semestre_id=2, + date_debut="01/09/2020", + date_fin="01/02/2021", +) + + +mi1 = G.create_moduleimpl( + module_id=mod1["module_id"], + formsemestre_id=sem1["formsemestre_id"], + responsable_id="bach", +) + +assert mi1["module_id" ]==mod1["module_id"] +assert mi1["formsemestre_id"]==sem1["formsemestre_id"] +assert mi1["responsable_id"]=="bach" + +mi2 = G.create_moduleimpl( + module_id=mod2["module_id"], + formsemestre_id=sem2["formsemestre_id"], + responsable_id="bach", +) + + +# --- Inscription des étudiants + +for etud in etuds[:10] : + G.inscrit_etudiant(sem1, etud) + +for etud in etuds [10:] : + G.inscrit_etudiant(sem2, etud) + +# --- Création de 2 partitions + +_ = sco_groups.partition_create(context.Scolarite, formsemestre_id=sem1["formsemestre_id"], partition_name="Eleve 1ere annee", REQUEST=REQUEST) +_ = sco_groups.partition_create(context.Scolarite, formsemestre_id=sem2["formsemestre_id"], partition_name="Eleve 2eme annee", REQUEST=REQUEST) + + +li1 = sco_groups.get_partitions_list(context.Scolarite, sem1["formsemestre_id"]) +li2 = sco_groups.get_partitions_list(context.Scolarite, sem2["formsemestre_id"]) + + +# --- Création des groupes + +_ = sco_groups.createGroup(context.Scolarite, li1[0]["partition_id"], "Groupe S1A", REQUEST=REQUEST) +_ = sco_groups.createGroup(context.Scolarite, li1[0]["partition_id"], "Groupe S1B", REQUEST=REQUEST) +_ = sco_groups.createGroup(context.Scolarite, li2[0]["partition_id"], "Groupe S3A", REQUEST=REQUEST) +_ = sco_groups.createGroup(context.Scolarite, li2[0]["partition_id"], "Groupe S3B", REQUEST=REQUEST) +_ = sco_groups.createGroup(context.Scolarite, li2[0]["partition_id"], "Groupe TEST", REQUEST=REQUEST) + +li_grp1 = sco_groups.get_partition_groups(context.Scolarite, li1[0]) +li_grp2 = sco_groups.get_partition_groups(context.Scolarite, li2[0]) +li_grp3 = sco_groups.get_partition_groups(context.Scolarite, li1[1]) #liste groupe defaut + +assert len(li_grp1) == 2 #test de get_partition_groups # 2 +assert len(li_grp2) == 3 #test de get_partition_groups # 3 +assert li_grp1[0]["group_name"] == "Groupe S1A" + + +# --- Affectation des élèves dans les groupes + +for etud in etuds[:5] : + sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp1[0]["group_id"]) + +for etud in etuds[5:10] : + sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp1[1]["group_id"]) + +for etud in etuds[10:15] : + sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp2[0]["group_id"]) + +for etud in etuds[15:] : + sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp2[1]["group_id"]) + +# --- Vérification si les élèves sont bien dans les bons groupes + +for etud in etuds[:5] : + grp = sco_groups.get_etud_groups(context.Scolarite, etud["etudid"], sem1, exclude_default=True) + assert grp[0]["group_name"] == "Groupe S1A" + +for etud in etuds[5:10] : + grp = sco_groups.get_etud_groups(context.Scolarite, etud["etudid"], sem1, exclude_default=True) + assert grp[0]["group_name"] == "Groupe S1B" + +for etud in etuds[10:15] : + grp = sco_groups.get_etud_groups(context.Scolarite, etud["etudid"], sem2, exclude_default=True) + assert grp[0]["group_name"] == "Groupe S3A" + +for etud in etuds[15:] : + grp = sco_groups.get_etud_groups(context.Scolarite, etud["etudid"], sem2, exclude_default=True) + assert grp[0]["group_name"] == "Groupe S3B" + +# --- Création d'une évaluation + +e1 = G.create_evaluation( + moduleimpl_id=mi1["moduleimpl_id"], + jour="01/10/2020", + description="evaluation test", + coefficient=1.0, +) + +e2 = G.create_evaluation( + moduleimpl_id=mi2["moduleimpl_id"], + jour="01/11/2020", + description="evaluation test2", + coefficient=1.0, +) + +# --- Saisie des notes + +for etud in etuds[10:] : + nb_changed, nb_suppress, existing_decisions = G.create_note( + evaluation=e1, etud=etud, note=float(random.randint(0, 20)) + ) + + +for etud in etuds[:10] : + nb_changed, nb_suppress, existing_decisions = G.create_note( + evaluation=e2, etud=etud, note=float(random.randint(0, 20)) + ) + +# --- Liste des étudiants inscrits aux evaluations + +lie1 = sco_groups.do_evaluation_listeetuds_groups(context.Scolarite, e1["evaluation_id"], groups = li_grp1) +lie2 = sco_groups.do_evaluation_listeetuds_groups(context.Scolarite, e2["evaluation_id"], groups = li_grp2) + +for etud in etuds[:10] : + assert etud["etudid"] in lie1 # test de do_evaluation_listeetuds_groups + +for etud in etuds[10:] : + assert etud["etudid"] in lie2 # test de do_evaluation_listeetuds_groups + + +# --- Liste des groupes présents aux évaluation + +lig1 = sco_groups.do_evaluation_listegroupes(context.Scolarite, e1["evaluation_id"], include_default=False) +lig2 = sco_groups.do_evaluation_listegroupes(context.Scolarite, e2["evaluation_id"], include_default=False) + + +assert len(lig1) == 2 +assert len(lig2) == 2 +assert li_grp1[0] and li_grp1[1] in lig1 # test do_evaluation_listegroupes +assert li_grp2[0] and li_grp2[1] in lig2 # test do_evaluation_listegroupes + + + +# --- Changement de groupe d'un élève + +grp1 = sco_groups.get_etud_groups(context.Scolarite, etuds[0]["etudid"], sem1, exclude_default = True) +sco_groups.change_etud_group_in_partition(context.Scolarite, etuds[0]["etudid"], li_grp1[1]["group_id"], li1[0], REQUEST=REQUEST) +grp2 = sco_groups.get_etud_groups(context.Scolarite, etuds[0]["etudid"], sem1, exclude_default = True) +assert grp1 != grp2 +assert grp1[0] == li_grp1[0] # test get_etud_groups +assert grp2[0]["group_name"] == "Groupe S1B" #test du changement de groupe + + +# --- Liste des partitions en format json + +lijson_s1 = sco_groups.formsemestre_partition_list(context.Scolarite, formsemestre_id=sem1["formsemestre_id"], format = "json", REQUEST=REQUEST) +load_lijson_s1 = json.loads(lijson_s1) + +assert len(load_lijson_s1) == 2 # 2 partition (defaut et eleve 1ere annee) +assert load_lijson_s1[0]["formsemestre_id"] == sem1["formsemestre_id"] +assert len(load_lijson_s1[0]["group"]) == 2 # 2 groupes S1A et S1B +assert load_lijson_s1[0]["group"][0]["group_name"] == "Groupe S1A" +assert load_lijson_s1[0]["group"][0]["group_id"] == li_grp1[0]["group_id"] +assert load_lijson_s1[0]["partition_id"] == load_lijson_s1[0]["group"][0]["partition_id"] == li1[0]["partition_id"] +assert load_lijson_s1[0]["partition_name"] == "Eleve 1ere annee" + + + +# --- Vue d'un groupes (liste d'élève en format json ou xml) + + + + + + +# --- Test des fonctions dans sco_groups + +#_ = sco_groups.checkGroupName(li_grp1[0]["group_name"]) +#_ = sco_groups.checkGroupName("Groupe S1B") +#_ = sco_groups.checkGroupName("Groupe S3A") +#_ = sco_groups.checkGroupName("Groupe S3B") + +assert li_grp1[0] == sco_groups.get_group(context.Scolarite, li_grp1[0]["group_id"]) #test get_group + +assert len(li_grp2) == 3 +sco_groups.group_delete(context.Scolarite, li_grp2[2]) +#assert len(li_grp2) == 2 #TESTE DE group_delete, aucun changement sur la console mais se supprime sur scodoc web + # mais pas dans la console comme pour countAbs() + +assert sco_groups.get_partition(context.Scolarite, li1[0]["partition_id"])== li1[0] # test de get_partition +assert sco_groups.get_partition(context.Scolarite, li2[0]["partition_id"])== li2[0] # test de get_partition + + + +li1 = sco_groups.get_partitions_list(context.Scolarite, sem1["formsemestre_id"]) +#assert p1 in li1 #test de get_partitions_list +assert len(li1) == 2 #eleve de 1ere annee + la partition defaut + +li2 = sco_groups.get_partitions_list(context.Scolarite, sem2["formsemestre_id"]) +#assert p2 in li2 #test de get_partitions_list +assert len(li2) == 2 #eleve de 2eme annee + la partition defaut + + +dp1 = sco_groups.get_default_partition(context.Scolarite, sem1["formsemestre_id"]) +dp2 = sco_groups.get_default_partition(context.Scolarite, sem2["formsemestre_id"]) + +assert dp1 in li1 # test si dp1 est bien dans li1 et par consequent teste la fonction get_default_partition +assert dp2 in li2 # test si dp2 est bien dans li1 et par consequent teste la fonction get_default_partition + + +dg1 = sco_groups.get_default_group(context.Scolarite, sem1["formsemestre_id"], REQUEST=REQUEST) +assert li_grp3[0]["group_id"] == dg1 #test de get_default_group + + +sg = sco_groups.get_sem_groups(context.Scolarite, sem1["formsemestre_id"]) +assert len(sg) == 3 #test de get_sem_groups +assert li_grp1[0] and li_grp1[1] in sg +assert li_grp3[0] in sg # test de get_sem_groups + +limembre = sco_groups.get_group_members(context.Scolarite, li_grp1[0]["group_id"]) +assert len(limembre) == 4 # car on a changé de groupe un etudiant de ce groupe donc 5-1=4 + + + +# --- Changement de nom des partitions, groupes + +# Le changement de nom des groupes et des partitions n'est pas possible en python car la fonction est une fonction d'envoie de formulaire. + + + + + + + + + + + + + + + + + + + + +