fix: tests
This commit is contained in:
@@ -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()
|
@@ -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()
|
||||
|
@@ -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(
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user