ScoDoc/tests/unit/test_models.py

50 lines
1.5 KiB
Python

""" Test méthodes génériques sur les modèles ScoDoc
"""
import pytest
from flask import g
import app
from app import db
from app.models import Departement, GroupDescr
from config import TestConfig
from tests.unit import yaml_setup
DEPT = TestConfig.DEPT_TEST
def test_get_instance(test_client):
"""Test accès instance avec ou sans dept"""
assert DEPT
app.set_sco_dept(DEPT)
# Création d'un autre départment
other_dept = Departement(acronym="X666")
db.session.add(other_dept)
db.session.flush()
# Crée qq semestres...
doc, formation, formsemestre_titres = yaml_setup.setup_from_yaml(
"tests/ressources/yaml/simple_formsemestres.yaml"
)
for formsemestre_titre in formsemestre_titres:
formsemestre = yaml_setup.create_formsemestre_with_etuds(
doc, formation, formsemestre_titre
)
assert formsemestre
# prend l'exemple de GroupDescr
# Crée un formsemestre et un groupe
gr = GroupDescr.query.first()
assert gr
oid = gr.id
# Accès sans département (comme le fait l'API non départementale)
g.scodoc_dept = None
g.scodoc_dept_id = -1 # invalide
assert GroupDescr.get_instance(oid, accept_none=True).id == oid
# Accès avec le bon département
app.set_sco_dept(DEPT)
assert GroupDescr.get_instance(oid, accept_none=True).id == oid
# Accès avec un autre département
app.set_sco_dept(other_dept.acronym)
assert GroupDescr.get_instance(oid, accept_none=True) is None