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()