""" Интеграционные тесты полных сценариев. """ import pytest from django.utils import timezone from datetime import timedelta from apps.schedule.models import Lesson, Subject from apps.homework.models import Homework, HomeworkSubmission from apps.subscriptions.models import SubscriptionPlan, Subscription from apps.users.models import Client @pytest.mark.django_db @pytest.mark.integration class TestMentorWorkflow: """Тест полного workflow ментора.""" def test_mentor_complete_workflow(self, mentor_user, client_user): """Тест полного цикла работы ментора.""" # 1. Создание клиента client_profile = Client.objects.create( user=client_user, mentor=mentor_user ) # 2. Создание подписки plan = SubscriptionPlan.objects.create( name='Базовый', slug='basic', price=1000.00, duration_days=30 ) subscription = Subscription.objects.create( user=mentor_user, plan=plan, status='active' ) assert subscription.is_active() is True # 3. Создание занятия subject = Subject.objects.create(name='Математика') lesson = Lesson.objects.create( mentor=mentor_user, client=client_profile, subject=subject, title='Урок алгебры', start_time=timezone.now() + timedelta(hours=1), duration_minutes=60, status='scheduled' ) assert lesson.status == 'scheduled' # 4. Создание домашнего задания homework = Homework.objects.create( mentor=mentor_user, lesson=lesson, title='Решить задачи', description='Учебник, стр. 45', status='published' ) assert homework.status == 'published' # 5. Получение решения submission = HomeworkSubmission.objects.create( homework=homework, student=client_user, text='Мое решение', status='pending' ) assert submission.status == 'pending' # 6. Оценивание решения submission.grade(score=85, feedback='Хорошая работа!') assert submission.status == 'graded' assert submission.score == 85 # 7. Завершение занятия lesson.complete(grade=5, notes='Отличная работа!') assert lesson.status == 'completed' @pytest.mark.django_db @pytest.mark.integration class TestClientWorkflow: """Тест полного workflow клиента.""" def test_client_complete_workflow(self, mentor_user, client_user): """Тест полного цикла работы клиента.""" # 1. Клиент видит свои занятия client_profile = Client.objects.create( user=client_user, mentor=mentor_user ) subject = Subject.objects.create(name='Физика') lesson = Lesson.objects.create( mentor=mentor_user, client=client_profile, subject=subject, title='Урок', start_time=timezone.now() + timedelta(hours=1), duration_minutes=60, status='scheduled' ) # 2. Клиент видит назначенные задания homework = Homework.objects.create( mentor=mentor_user, lesson=lesson, title='Задание', description='Описание', status='published' ) homework.assigned_to.add(client_user) # 3. Клиент отправляет решение submission = HomeworkSubmission.objects.create( homework=homework, student=client_user, text='Решение', status='pending' ) assert submission.student == client_user assert submission.status == 'pending'