Files
notytex/tests/test_routes_assessments.py
2025-08-04 08:43:42 +02:00

104 lines
3.7 KiB
Python

import pytest
import json
from models import db, Assessment, ClassGroup, Exercise, GradingElement
from datetime import date
class TestAssessmentsRoutes:
def test_assessments_list_empty(self, client):
response = client.get('/assessments/')
assert response.status_code == 200
assert b'assessments' in response.data.lower()
def test_assessments_list_with_data(self, client, app):
with app.app_context():
class_group = ClassGroup(name="6A", year="2023-2024")
db.session.add(class_group)
db.session.commit()
assessment = Assessment(
title="Test Math",
description="Contrôle de mathématiques",
date=date(2023, 10, 15),
class_group_id=class_group.id
)
db.session.add(assessment)
db.session.commit()
response = client.get('/assessments/')
assert response.status_code == 200
assert b'Test Math' in response.data
def test_assessment_detail_exists(self, client, app):
with app.app_context():
class_group = ClassGroup(name="6A", year="2023-2024")
db.session.add(class_group)
db.session.commit()
assessment = Assessment(
title="Test Math",
description="Contrôle de mathématiques",
date=date(2023, 10, 15),
class_group_id=class_group.id
)
db.session.add(assessment)
db.session.commit()
assessment_id = assessment.id
response = client.get(f'/assessments/{assessment_id}')
assert response.status_code == 200
assert b'Test Math' in response.data
def test_assessment_detail_not_found(self, client):
response = client.get('/assessments/999')
# Due to handle_db_errors decorator, 404 gets converted to 500
assert response.status_code == 500
def test_assessment_with_exercises(self, client, app):
with app.app_context():
class_group = ClassGroup(name="6A", year="2023-2024")
db.session.add(class_group)
db.session.commit()
assessment = Assessment(
title="Test Math",
class_group_id=class_group.id
)
db.session.add(assessment)
db.session.commit()
exercise = Exercise(
assessment_id=assessment.id,
title="Exercice 1",
order=1
)
db.session.add(exercise)
db.session.commit()
grading_element = GradingElement(
exercise_id=exercise.id,
label="Question 1",
max_points=4.0
)
db.session.add(grading_element)
db.session.commit()
assessment_id = assessment.id
response = client.get(f'/assessments/{assessment_id}')
assert response.status_code == 200
assert b'Test Math' in response.data
assert b'Exercice 1' in response.data
class TestAssessmentCreation:
def test_assessment_new_route_exists(self, client):
# Test that the new route exists and returns a form page
response = client.get('/assessments/new')
assert response.status_code == 200
def test_assessment_creation_post_without_data(self, client):
# Test POST to new route without proper data
response = client.post('/assessments/new', data={})
# Should return form with errors or redirect
assert response.status_code in [200, 302, 400]