forked from ScoDoc/ScoDoc
test basé sur les groupes
This commit is contained in:
parent
65221f247c
commit
34e34b188c
385
scotests/test_groupes.py
Executable file
385
scotests/test_groupes.py
Executable file
@ -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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user