2023-01-11 13:37:02 +01:00
|
|
|
##############################################################################
|
|
|
|
# ScoDoc
|
|
|
|
# Copyright (c) 1999 - 2023 Emmanuel Viennet. All rights reserved.
|
|
|
|
# See LICENSE
|
|
|
|
##############################################################################
|
|
|
|
|
2022-12-07 23:04:11 +01:00
|
|
|
""" Test jury BUT avec parcours
|
2023-01-11 13:37:02 +01:00
|
|
|
|
|
|
|
Ces tests sont généralement lents (construction de la base),
|
|
|
|
et donc marqués par `@pytest.mark.slow`.
|
|
|
|
|
|
|
|
Certains sont aussi marqués par @pytest.mark.lemans ou @pytest.mark.lyon
|
|
|
|
pour lancer certains tests spécifiques seulement.
|
|
|
|
|
|
|
|
Exemple utilisation spécifique:
|
|
|
|
# test sur "Lyon" seulement:
|
|
|
|
pytest --pdb -m lyon tests/unit/test_but_jury.py
|
|
|
|
|
2023-03-27 10:36:54 +02:00
|
|
|
pytest --pdb -m but_gccd tests/unit/test_but_jury.py
|
2022-12-07 23:04:11 +01:00
|
|
|
"""
|
2022-12-18 15:59:06 +01:00
|
|
|
|
2022-12-20 04:16:38 +01:00
|
|
|
import pytest
|
2023-02-11 05:04:10 +01:00
|
|
|
from tests.unit import yaml_setup, yaml_setup_but
|
2022-12-18 15:59:06 +01:00
|
|
|
|
2022-12-07 23:04:11 +01:00
|
|
|
import app
|
2022-12-18 19:42:33 +01:00
|
|
|
from app.but.jury_but_validation_auto import formsemestre_validation_auto_but
|
2023-03-29 23:57:50 +02:00
|
|
|
from app.models import Formation, FormSemestre
|
2022-12-07 23:04:11 +01:00
|
|
|
from config import TestConfig
|
|
|
|
|
|
|
|
DEPT = TestConfig.DEPT_TEST
|
|
|
|
|
|
|
|
|
2022-12-20 04:16:38 +01:00
|
|
|
@pytest.mark.slow
|
2023-01-12 17:08:39 +01:00
|
|
|
@pytest.mark.but_gb
|
2022-12-18 15:59:06 +01:00
|
|
|
def test_but_jury_GB(test_client):
|
|
|
|
"""Tests sur un cursus GB
|
2023-01-26 14:49:04 +01:00
|
|
|
- construction des semestres et de leurs étudiants à partir du yaml
|
2022-12-18 15:59:06 +01:00
|
|
|
- vérification jury de S1
|
|
|
|
- vérification jury de S2
|
|
|
|
- vérification jury de S3
|
|
|
|
- vérification jury de S1 avec redoublants et capitalisations
|
2022-12-07 23:04:11 +01:00
|
|
|
"""
|
|
|
|
app.set_sco_dept(DEPT)
|
2022-12-18 15:59:06 +01:00
|
|
|
# Construit la base de test GB une seule fois
|
|
|
|
# puis lance les tests de jury
|
2023-02-21 21:34:38 +01:00
|
|
|
doc = yaml_setup.setup_from_yaml("tests/ressources/yaml/cursus_but_gb.yaml")
|
2022-12-18 15:59:06 +01:00
|
|
|
|
|
|
|
# Vérifie les deca de tous les semestres:
|
|
|
|
for formsemestre in FormSemestre.query:
|
2023-02-11 05:04:10 +01:00
|
|
|
yaml_setup_but.check_deca_fields(formsemestre)
|
2022-12-18 15:59:06 +01:00
|
|
|
|
2022-12-18 19:42:33 +01:00
|
|
|
# Saisie de toutes les décisions de jury
|
|
|
|
for formsemestre in FormSemestre.query.order_by(FormSemestre.semestre_id):
|
|
|
|
formsemestre_validation_auto_but(formsemestre, only_adm=False)
|
|
|
|
|
|
|
|
# Vérifie résultats attendus:
|
2022-12-18 15:59:06 +01:00
|
|
|
S1: FormSemestre = FormSemestre.query.filter_by(titre="S1_SEE").first()
|
2023-02-11 05:04:10 +01:00
|
|
|
yaml_setup_but.but_test_jury(S1, doc)
|
2022-12-18 16:25:34 +01:00
|
|
|
S2: FormSemestre = FormSemestre.query.filter_by(titre="S2_SEE").first()
|
2023-02-11 05:04:10 +01:00
|
|
|
yaml_setup_but.but_test_jury(S2, doc)
|
2022-12-18 16:25:34 +01:00
|
|
|
S3: FormSemestre = FormSemestre.query.filter_by(titre="S3").first()
|
2023-02-11 05:04:10 +01:00
|
|
|
yaml_setup_but.but_test_jury(S3, doc)
|
2022-12-18 16:25:34 +01:00
|
|
|
# _test_but_jury(S1_redoublant, doc)
|
2022-12-18 15:59:06 +01:00
|
|
|
|
|
|
|
|
2022-12-20 04:16:38 +01:00
|
|
|
@pytest.mark.slow
|
|
|
|
@pytest.mark.lemans
|
|
|
|
def test_but_jury_GMP_lm(test_client):
|
2023-01-08 19:33:38 +01:00
|
|
|
"""Tests sur un cursus GMP fourni par Le Mans"""
|
2022-12-20 04:16:38 +01:00
|
|
|
app.set_sco_dept(DEPT)
|
|
|
|
# Construit la base de test GB une seule fois
|
|
|
|
# puis lance les tests de jury
|
2023-02-21 21:34:38 +01:00
|
|
|
doc = yaml_setup.setup_from_yaml("tests/ressources/yaml/cursus_but_gmp_iutlm.yaml")
|
2022-12-20 04:16:38 +01:00
|
|
|
|
2022-12-20 19:20:00 +01:00
|
|
|
formsemestres = FormSemestre.query.order_by(
|
|
|
|
FormSemestre.date_debut, FormSemestre.semestre_id
|
|
|
|
).all()
|
2022-12-24 23:21:05 +01:00
|
|
|
|
2022-12-20 04:16:38 +01:00
|
|
|
# Vérifie les deca de tous les semestres:
|
|
|
|
for formsemestre in formsemestres:
|
2023-02-11 05:04:10 +01:00
|
|
|
yaml_setup_but.check_deca_fields(formsemestre)
|
2022-12-20 04:16:38 +01:00
|
|
|
|
2022-12-24 23:21:05 +01:00
|
|
|
# Saisie de toutes les décisions de jury qui ne le seraient pas déjà
|
2022-12-20 04:16:38 +01:00
|
|
|
for formsemestre in formsemestres:
|
|
|
|
formsemestre_validation_auto_but(formsemestre, only_adm=False)
|
2022-12-24 23:21:05 +01:00
|
|
|
|
2022-12-20 04:16:38 +01:00
|
|
|
# Vérifie résultats attendus:
|
|
|
|
for formsemestre in formsemestres:
|
2023-02-11 05:04:10 +01:00
|
|
|
yaml_setup_but.but_test_jury(formsemestre, doc)
|
2022-12-20 04:16:38 +01:00
|
|
|
|
|
|
|
|
2023-01-08 19:33:38 +01:00
|
|
|
@pytest.mark.slow
|
|
|
|
@pytest.mark.lyon
|
|
|
|
def test_but_jury_GEII_lyon(test_client):
|
|
|
|
"""Tests sur un cursus GEII fourni par Lyon"""
|
|
|
|
app.set_sco_dept(DEPT)
|
|
|
|
# Construit la base de test GB une seule fois
|
|
|
|
# puis lance les tests de jury
|
2023-02-21 21:34:38 +01:00
|
|
|
doc = yaml_setup.setup_from_yaml("tests/ressources/yaml/cursus_but_geii_lyon.yaml")
|
2023-01-08 19:33:38 +01:00
|
|
|
formsemestres = FormSemestre.query.order_by(
|
|
|
|
FormSemestre.date_debut, FormSemestre.semestre_id
|
|
|
|
).all()
|
|
|
|
|
2023-01-09 22:46:27 +01:00
|
|
|
# Vérifie les champs de DecisionsProposeesAnnee de tous les semestres:
|
2023-01-08 19:33:38 +01:00
|
|
|
for formsemestre in formsemestres:
|
2023-02-11 05:04:10 +01:00
|
|
|
yaml_setup_but.check_deca_fields(formsemestre)
|
2023-01-08 19:33:38 +01:00
|
|
|
|
2023-01-09 22:46:27 +01:00
|
|
|
# Saisie de toutes les décisions de jury "automatiques"
|
|
|
|
# et vérification des résultats attendus:
|
2023-01-08 19:33:38 +01:00
|
|
|
for formsemestre in formsemestres:
|
2023-01-09 22:46:27 +01:00
|
|
|
formsemestre_validation_auto_but(
|
|
|
|
formsemestre, only_adm=False, no_overwrite=False
|
|
|
|
)
|
2023-02-11 05:04:10 +01:00
|
|
|
yaml_setup_but.but_test_jury(formsemestre, doc)
|
2023-03-27 10:36:54 +02:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.slow
|
|
|
|
@pytest.mark.but_gccd
|
|
|
|
def test_but_jury_GCCD_CY(test_client):
|
|
|
|
"""Tests sur un cursus BUT GCCD de S1 à S6"""
|
|
|
|
# WIP
|
|
|
|
app.set_sco_dept(DEPT)
|
|
|
|
doc = yaml_setup.setup_from_yaml("tests/ressources/yaml/cursus_but_gccd_cy.yaml")
|
|
|
|
formsemestres = FormSemestre.query.order_by(
|
|
|
|
FormSemestre.date_debut, FormSemestre.semestre_id
|
|
|
|
).all()
|
2023-03-29 23:57:50 +02:00
|
|
|
|
|
|
|
formation: Formation = formsemestres[0].formation
|
|
|
|
# Vérifie les UEs du parcours BAT
|
|
|
|
parcour_BAT = formation.referentiel_competence.parcours.filter_by(
|
|
|
|
code="BAT"
|
|
|
|
).first()
|
|
|
|
assert parcour_BAT
|
|
|
|
# check le nombre d'UE dans chaque semestre BUT:
|
|
|
|
assert [
|
|
|
|
len(formation.query_ues_parcour(parcour_BAT).filter_by(semestre_idx=i).all())
|
|
|
|
for i in range(1, 7)
|
|
|
|
] == [5, 5, 5, 5, 3, 3]
|
|
|
|
# Vérifie les UEs du parcours TP
|
|
|
|
parcour_TP = formation.referentiel_competence.parcours.filter_by(code="TP").first()
|
|
|
|
assert parcour_TP
|
|
|
|
# check le nombre d'UE dans chaque semestre BUT:
|
|
|
|
assert [
|
|
|
|
len(formation.query_ues_parcour(parcour_TP).filter_by(semestre_idx=i).all())
|
|
|
|
for i in range(1, 7)
|
|
|
|
] == [5, 5, 5, 5, 3, 3]
|