""" Test jury BUT avec parcours
"""
import pytest
import yaml
from tests.unit import setup_test_yaml as sty
import app
from app.but.jury_but import DecisionsProposeesAnnee
from app.models import (
    Formation,
    FormSemestre,
    Identite,
    UniteEns,
)
from app.scodoc import sco_utils as scu
from config import TestConfig

DEPT = TestConfig.DEPT_TEST


def test_but_jury_S1(test_client):
    """Test jurys BUT1 avec un seul parcours.
    Vérifie aussi les champs de DecisionsProposeesAnnee
    """
    app.set_sco_dept(DEPT)
    doc = sty.setup_from_yaml("tests/unit/cursus_but_gb.yaml")
    formsemestre: FormSemestre = FormSemestre.query.filter_by(titre="S1_SEE").first()
    etud: Identite = formsemestre.etuds.first()
    deca = DecisionsProposeesAnnee(etud, formsemestre)
    assert deca.validation is None  # pas encore de validation enregistrée
    assert False is deca.recorded
    assert deca.code_valide is None
    assert deca.formsemestre_impair == formsemestre
    assert deca.formsemestre_pair is None  # jury de S1, pas de S2
    assert deca.rcues_annee == []  # S1, pas de RCUEs
    assert deca.inscription_etat == scu.INSCRIT
    assert deca.inscription_etat_impair is None
    assert deca.parcour == formsemestre.parcours[0]  # un seul parcours dans ce sem.
    assert formsemestre.query_ues().all() == deca.ues_impair
    nb_ues = formsemestre.query_ues().count()
    assert len(deca.decisions_ues) == nb_ues
    assert len(deca.niveaux_competences) == nb_ues
    assert deca.nb_competences == nb_ues
    # XXX à compléter avec le jury quand on aura décidé des notes


def test_but_jury_S3(test_client):
    """Test jurys BUT2/S3 avec 2 parcours dans le sem."""
    app.set_sco_dept(DEPT)
    doc = sty.setup_from_yaml("tests/unit/cursus_but_gb.yaml")
    formsemestre: FormSemestre = FormSemestre.query.filter_by(titre="S3").first()
    etud: Identite = formsemestre.etuds.filter_by(nom="See1").first()  # du parcours SEE
    assert etud
    deca = DecisionsProposeesAnnee(etud, formsemestre)
    assert len(deca.niveaux_competences) == 5  # 5 compétences dans ce parcours
