60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
import pytest
|
|
import tempfile
|
|
import os
|
|
from datetime import date
|
|
from app import create_app
|
|
from models import db, Student, StudentEnrollment
|
|
|
|
|
|
@pytest.fixture
|
|
def app():
|
|
db_fd, db_path = tempfile.mkstemp()
|
|
|
|
app = create_app('testing')
|
|
app.config.update({
|
|
'TESTING': True,
|
|
'SQLALCHEMY_DATABASE_URI': f'sqlite:///{db_path}',
|
|
'WTF_CSRF_ENABLED': False,
|
|
})
|
|
|
|
with app.app_context():
|
|
db.create_all()
|
|
yield app
|
|
db.drop_all()
|
|
|
|
os.close(db_fd)
|
|
os.unlink(db_path)
|
|
|
|
|
|
@pytest.fixture
|
|
def client(app):
|
|
return app.test_client()
|
|
|
|
|
|
def create_student_with_enrollment(first_name, last_name, class_group_id, email=None, enrollment_date=None):
|
|
"""
|
|
Helper pour créer un étudiant avec inscription temporelle.
|
|
Utilise le nouveau système temporel au lieu de l'ancien class_group_id.
|
|
"""
|
|
if enrollment_date is None:
|
|
enrollment_date = date(2023, 9, 1) # Date par défaut de rentrée
|
|
|
|
# Créer l'étudiant sans class_group_id
|
|
student = Student(first_name=first_name, last_name=last_name, email=email)
|
|
db.session.add(student)
|
|
db.session.flush() # Pour obtenir l'ID
|
|
|
|
# Créer l'inscription temporelle
|
|
enrollment = StudentEnrollment(
|
|
student_id=student.id,
|
|
class_group_id=class_group_id,
|
|
enrollment_date=enrollment_date
|
|
)
|
|
db.session.add(enrollment)
|
|
|
|
return student
|
|
|
|
|
|
@pytest.fixture
|
|
def runner(app):
|
|
return app.test_cli_runner() |