110 lines
3.7 KiB
Python
110 lines
3.7 KiB
Python
"""
|
||
Unit тесты для моделей домашних заданий.
|
||
"""
|
||
import pytest
|
||
from django.utils import timezone
|
||
from datetime import timedelta
|
||
from apps.homework.models import Homework, HomeworkSubmission, HomeworkFile
|
||
from apps.schedule.models import Lesson, Subject
|
||
from apps.users.models import User, Client
|
||
|
||
|
||
@pytest.mark.django_db
|
||
@pytest.mark.unit
|
||
class TestHomeworkModel:
|
||
"""Тесты модели Homework."""
|
||
|
||
def test_create_homework(self, mentor_user):
|
||
"""Тест создания домашнего задания."""
|
||
homework = Homework.objects.create(
|
||
mentor=mentor_user,
|
||
title='Решить задачи по алгебре',
|
||
description='Учебник, страница 45, задачи 1-10',
|
||
max_score=100,
|
||
status='draft'
|
||
)
|
||
|
||
assert homework.mentor == mentor_user
|
||
assert homework.title == 'Решить задачи по алгебре'
|
||
assert homework.status == 'draft'
|
||
assert homework.max_score == 100
|
||
|
||
def test_homework_publish(self, mentor_user):
|
||
"""Тест публикации домашнего задания."""
|
||
homework = Homework.objects.create(
|
||
mentor=mentor_user,
|
||
title='Тест',
|
||
description='Описание',
|
||
status='draft'
|
||
)
|
||
|
||
homework.publish()
|
||
|
||
assert homework.status == 'published'
|
||
assert homework.published_at is not None
|
||
|
||
def test_homework_archive(self, mentor_user):
|
||
"""Тест архивирования домашнего задания."""
|
||
homework = Homework.objects.create(
|
||
mentor=mentor_user,
|
||
title='Тест',
|
||
description='Описание',
|
||
status='published'
|
||
)
|
||
|
||
homework.archive()
|
||
|
||
assert homework.status == 'archived'
|
||
|
||
|
||
@pytest.mark.django_db
|
||
@pytest.mark.unit
|
||
class TestHomeworkSubmissionModel:
|
||
"""Тесты модели HomeworkSubmission."""
|
||
|
||
def test_create_submission(self, mentor_user, client_user):
|
||
"""Тест создания решения домашнего задания."""
|
||
homework = Homework.objects.create(
|
||
mentor=mentor_user,
|
||
title='Тест',
|
||
description='Описание',
|
||
status='published'
|
||
)
|
||
|
||
submission = HomeworkSubmission.objects.create(
|
||
homework=homework,
|
||
student=client_user,
|
||
text='Мое решение задачи',
|
||
status='pending'
|
||
)
|
||
|
||
assert submission.homework == homework
|
||
assert submission.student == client_user
|
||
assert submission.status == 'pending'
|
||
assert submission.text == 'Мое решение задачи'
|
||
|
||
def test_submission_grade(self, mentor_user, client_user):
|
||
"""Тест оценивания решения."""
|
||
homework = Homework.objects.create(
|
||
mentor=mentor_user,
|
||
title='Тест',
|
||
description='Описание',
|
||
status='published',
|
||
max_score=100
|
||
)
|
||
|
||
submission = HomeworkSubmission.objects.create(
|
||
homework=homework,
|
||
student=client_user,
|
||
text='Решение',
|
||
status='pending'
|
||
)
|
||
|
||
submission.grade(score=85, feedback='Хорошая работа!')
|
||
|
||
assert submission.status == 'graded'
|
||
assert submission.score == 85
|
||
assert submission.feedback == 'Хорошая работа!'
|
||
assert submission.graded_at is not None
|
||
|