TESTS: scenario standard capitalisation

This commit is contained in:
viennet 2020-12-28 21:49:53 +01:00
parent e7ccdee992
commit dea24d0257
2 changed files with 114 additions and 3 deletions

View File

@ -3,12 +3,16 @@
"""Creation environnement pour test.
A utiliser avec debug.py (côté serveur).
La classe ScoFake offre un ensemble de raccourcis permettant d'écrire
facilement des tests ou de reproduire des bugs.
"""
from __future__ import print_function
from functools import wraps
import sys
import string
import collections
import pprint
import random
@ -22,6 +26,7 @@ from sco_exceptions import ScoValueError
import scolars
import sco_formsemestre
import sco_formsemestre_inscriptions
import sco_formsemestre_validation
import sco_synchro_etuds
import sco_edit_formation
import sco_edit_ue
@ -286,3 +291,109 @@ class ScoFake:
[(etud["etudid"], note)],
comment=comment,
)
def setup_formation(self, nb_semestre=1, nb_ue_per_semestre=2, nb_module_per_ue=2):
"""Création d'une formation, avec UE, modules et évaluations.
Formation avec `nb_semestre` comportant chacun `nb_ue_per_semestre` UE
et dans chaque UE `nb_module_per_ue` modules (on a une seule matière par UE).
Returns:
formation (dict), liste d'ue (dicts), liste de modules.
"""
f = self.create_formation(acronyme="")
ue_list = []
mod_list = []
for semestre_id in range(1, nb_semestre + 1):
for n in range(1, nb_ue_per_semestre + 1):
ue = self.create_ue(
formation_id=f["formation_id"],
acronyme="TSU%s%s" % (semestre_id, n),
titre="ue test %s%s" % (semestre_id, n),
)
ue_list.append(ue)
mat = self.create_matiere(ue_id=ue["ue_id"], titre="matière test")
for _ in range(nb_module_per_ue):
mod = self.create_module(
matiere_id=mat["matiere_id"],
semestre_id=semestre_id,
code="TSM%s" % len(mod_list),
coefficient=1.0,
titre="module test",
ue_id=ue["ue_id"], # faiblesse de l'API
formation_id=f["formation_id"], # faiblesse de l'API
)
mod_list.append(mod)
return f, ue_list, mod_list
def setup_formsemestre(
self,
f,
mod_list,
semestre_id=1,
date_debut="01/01/2020",
date_fin="30/06/2020",
nb_evaluations_per_module=1,
):
"""Création semestre, avec modules et évaluations."""
sem = self.create_formsemestre(
formation_id=f["formation_id"],
semestre_id=semestre_id,
date_debut=date_debut,
date_fin=date_fin,
)
eval_list = []
for mod in mod_list:
if mod["semestre_id"] == semestre_id:
mi = self.create_moduleimpl(
module_id=mod["module_id"],
formsemestre_id=sem["formsemestre_id"],
responsable_id="bach",
)
for e_idx in range(1, nb_evaluations_per_module + 1):
e = self.create_evaluation(
moduleimpl_id=mi["moduleimpl_id"],
jour=date_debut,
description="evaluation test %s" % e_idx,
coefficient=1.0,
)
eval_list.append(e)
return sem, eval_list
def set_etud_notes_sem(
self, sem, eval_list, etuds, notes=None, random_min=0, random_max=20
):
"""Met des notes aux étudiants indiqués des evals indiquées.
Args:
sem: dict
eval_list: list of dicts
etuds: list of dicts
notes: liste des notes (float).
Si non spécifié, tire au hasard dans `[random_min, random_max]`
"""
set_random = notes is None
for e in eval_list:
if set_random:
notes = [float(random.randint(random_min, random_max)) for _ in etuds]
for etud, note in zip(etuds, notes):
self.create_note(evaluation=e, etud=etud, note=note)
def set_code_jury(
self,
sem,
etud,
code_etat=sco_codes_parcours.ADM,
devenir=sco_codes_parcours.NEXT,
assidu=True,
):
"""Affecte décision de jury"""
sco_formsemestre_validation.formsemestre_validation_etud_manu(
self.context,
formsemestre_id=sem["formsemestre_id"],
etudid=etud["etudid"],
code_etat=code_etat,
devenir=devenir,
assidu=assidu,
REQUEST=REQUEST,
)

View File

@ -1,9 +1,9 @@
# -*- mode: python -*-
# -*- coding: utf-8 -*-
"""test de base de ScoDoc
"""Test de base de ScoDoc
Creation etudiant, formation, semestre, inscription etudiant, creation evaluation, saisie note
Création 10 étudiants, formation, semestre, inscription etudiant, creation 1 evaluation, saisie 10 notes.
Utiliser comme:
scotests/scointeractive.sh -r TEST00 scotests/test_basic.py
@ -11,7 +11,7 @@ Utiliser comme:
"""
import random
import scotests.sco_fake_gen as sco_fake_gen
import scotests.sco_fake_gen as sco_fake_gen # pylint: disable=import-error
import sco_utils
G = sco_fake_gen.ScoFake(context.Notes) # pylint: disable=undefined-variable