fix: tests

This commit is contained in:
2025-08-16 16:07:57 +02:00
parent 292227b968
commit dcd88bd383
4 changed files with 68 additions and 59 deletions

View File

@@ -1,8 +1,9 @@
import pytest
import tempfile
import os
from datetime import date
from app import create_app
from models import db
from models import db, Student, StudentEnrollment
@pytest.fixture
@@ -30,6 +31,30 @@ 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()

View File

@@ -3,6 +3,7 @@ from datetime import date
from werkzeug.exceptions import NotFound
from models import db, ClassGroup, Student, Assessment
from repositories.class_repository import ClassRepository
from .conftest import create_student_with_enrollment
class TestClassRepository:
@@ -292,7 +293,8 @@ class TestClassRepository:
db.session.add(class_group)
db.session.commit()
student = Student(first_name="Jean", last_name="Dupont", class_group_id=class_group.id)
# Utiliser le helper pour créer un étudiant avec inscription temporelle
student = create_student_with_enrollment("Jean", "Dupont", class_group.id)
assessment = Assessment(title="Test", trimester=1, class_group_id=class_group.id, date=date(2023, 10, 15))
db.session.add_all([student, assessment])
db.session.commit()
@@ -313,12 +315,12 @@ class TestClassRepository:
db.session.add(class_group)
db.session.commit()
# Utiliser le helper pour créer des étudiants avec inscriptions temporelles
students = [
Student(first_name="Marie", last_name="Zidane", class_group_id=class_group.id),
Student(first_name="Jean", last_name="Dupont", class_group_id=class_group.id),
Student(first_name="Paul", last_name="Martin", class_group_id=class_group.id),
create_student_with_enrollment("Marie", "Zidane", class_group.id),
create_student_with_enrollment("Jean", "Dupont", class_group.id),
create_student_with_enrollment("Paul", "Martin", class_group.id),
]
db.session.add_all(students)
db.session.commit()
# Test
@@ -423,7 +425,7 @@ class TestClassRepository:
db.session.commit()
# Ajouter étudiants et évaluations
student = Student(first_name="Jean", last_name="Dupont", class_group_id=class_group.id)
student = create_student_with_enrollment("Jean", "Dupont", class_group.id)
assessment = Assessment(title="Test", trimester=1, class_group_id=class_group.id, date=date(2023, 10, 15))
db.session.add_all([student, assessment])
db.session.commit()
@@ -464,9 +466,9 @@ class TestClassRepository:
# Ajouter des étudiants
students = [
Student(first_name="Jean", last_name="Dupont", class_group_id=class_group.id),
Student(first_name="Marie", last_name="Martin", class_group_id=class_group.id),
Student(first_name="Paul", last_name="Durand", class_group_id=class_group.id),
create_student_with_enrollment("Jean", "Dupont", class_group.id),
create_student_with_enrollment("Marie", "Martin", class_group.id),
create_student_with_enrollment("Paul", "Durand", class_group.id),
]
db.session.add_all(students)
db.session.commit()

View File

@@ -1,6 +1,7 @@
import pytest
from datetime import datetime, date
from models import db, ClassGroup, Student, Assessment, Exercise, GradingElement, Grade
from .conftest import create_student_with_enrollment
class TestClassGroup:
@@ -40,64 +41,54 @@ class TestStudent:
db.session.add(class_group)
db.session.commit()
student = Student(
first_name="Jean",
last_name="Dupont",
email="jean.dupont@example.com",
class_group_id=class_group.id
# Utiliser le helper pour créer un étudiant avec inscription temporelle
student = create_student_with_enrollment(
"Jean",
"Dupont",
class_group.id,
email="jean.dupont@example.com"
)
db.session.add(student)
db.session.commit()
assert student.id is not None
assert student.first_name == "Jean"
assert student.last_name == "Dupont"
assert student.email == "jean.dupont@example.com"
assert student.class_group_id == class_group.id
# Vérifier l'inscription temporelle au lieu de class_group_id
assert len(student.enrollments) == 1
assert student.enrollments[0].class_group_id == class_group.id
def test_student_full_name_property(self, app):
with app.app_context():
class_group = ClassGroup(name="6A", year="2023-2024")
db.session.add(class_group)
db.session.commit()
# Pas besoin de class_group pour tester full_name
student = Student(
first_name="Jean",
last_name="Dupont",
class_group_id=class_group.id
last_name="Dupont"
)
assert student.full_name == "Jean Dupont"
def test_student_repr(self, app):
with app.app_context():
class_group = ClassGroup(name="6A", year="2023-2024")
db.session.add(class_group)
db.session.commit()
# Pas besoin de class_group pour tester __repr__
student = Student(
first_name="Jean",
last_name="Dupont",
class_group_id=class_group.id
last_name="Dupont"
)
assert repr(student) == "<Student Jean Dupont>"
def test_student_unique_email(self, app):
with app.app_context():
class_group = ClassGroup(name="6A", year="2023-2024")
db.session.add(class_group)
db.session.commit()
# Pas besoin de class_group pour tester contrainte unique email
student1 = Student(
first_name="Jean",
last_name="Dupont",
email="jean.dupont@example.com",
class_group_id=class_group.id
email="jean.dupont@example.com"
)
student2 = Student(
first_name="Marie",
last_name="Martin",
email="jean.dupont@example.com",
class_group_id=class_group.id
email="jean.dupont@example.com"
)
db.session.add(student1)
@@ -287,12 +278,8 @@ class TestGrade:
db.session.add(class_group)
db.session.commit()
student = Student(
first_name="Jean",
last_name="Dupont",
class_group_id=class_group.id
)
db.session.add(student)
# Utiliser le helper pour créer un étudiant avec inscription temporelle
student = create_student_with_enrollment("Jean", "Dupont", class_group.id)
db.session.commit()
assessment = Assessment(title="Contrôle", trimester=1, class_group_id=class_group.id)
@@ -330,12 +317,8 @@ class TestGrade:
db.session.add(class_group)
db.session.commit()
student = Student(
first_name="Jean",
last_name="Dupont",
class_group_id=class_group.id
)
db.session.add(student)
# Utiliser le helper pour créer un étudiant avec inscription temporelle
student = create_student_with_enrollment("Jean", "Dupont", class_group.id)
db.session.commit()
grade = Grade(

View File

@@ -2,6 +2,7 @@ import pytest
from models import GradingCalculator, db, Assessment, ClassGroup, Student, Exercise, GradingElement, Grade
from app_config import config_manager
from datetime import date
from .conftest import create_student_with_enrollment
class TestUnifiedGrading:
@@ -143,10 +144,9 @@ class TestIntegration:
db.session.add(class_group)
db.session.flush()
# Créer étudiants
student1 = Student(first_name='Alice', last_name='Martin', class_group_id=class_group.id)
student2 = Student(first_name='Bob', last_name='Durand', class_group_id=class_group.id)
db.session.add_all([student1, student2])
# Créer étudiants avec inscriptions temporelles
student1 = create_student_with_enrollment('Alice', 'Martin', class_group.id)
student2 = create_student_with_enrollment('Bob', 'Durand', class_group.id)
db.session.flush()
# Créer évaluation
@@ -261,16 +261,15 @@ class TestPerformance:
db.session.add(class_group)
db.session.flush()
# 30 étudiants
# 30 étudiants avec inscriptions temporelles
students = []
for i in range(30):
student = Student(
first_name=f'Étudiant{i}',
last_name=f'Test{i}',
class_group_id=class_group.id
student = create_student_with_enrollment(
f'Étudiant{i}',
f'Test{i}',
class_group.id
)
students.append(student)
db.session.add_all(students)
db.session.flush()
# Évaluation avec 20 éléments