Implement user-specific question numbering and update database schema. Added triggers for automatic question numbering and adjustments upon deletion. Enhanced CRUD operations to manage user_question_number effectively.

This commit is contained in:
2025-09-06 18:35:12 +03:00
parent 50be010026
commit 596a2fa813
111 changed files with 16847 additions and 65 deletions

View File

@@ -0,0 +1,126 @@
"""
Тесты для модели Question и QuestionStatus
Что тестировать:
- Создание объекта Question
- QuestionStatus enum (все значения)
- Валидация полей (message_text, answer_text, etc.)
- Методы форматирования
- Статусы вопросов (pending, answered, rejected, deleted)
- Временные поля (created_at, answered_at)
- Анонимность (is_anonymous)
- Связи с пользователями (from_user_id, to_user_id)
- Методы изменения статуса
- Валидация длины текста
"""
import pytest
from datetime import datetime
from models.question import Question, QuestionStatus
class TestQuestionStatus:
"""Тесты для enum QuestionStatus"""
def test_question_status_values(self):
"""Тест всех значений QuestionStatus"""
# TODO: Реализовать тест
pass
def test_question_status_string_values(self):
"""Тест строковых значений QuestionStatus"""
# TODO: Реализовать тест
pass
class TestQuestion:
"""Тесты для модели Question"""
def test_question_creation_basic(self):
"""Тест базового создания вопроса"""
# TODO: Реализовать тест
pass
def test_question_creation_with_all_fields(self):
"""Тест создания вопроса со всеми полями"""
# TODO: Реализовать тест
pass
def test_question_validation_message_text_required(self):
"""Тест обязательности message_text"""
# TODO: Реализовать тест
pass
def test_question_validation_to_user_id_required(self):
"""Тест обязательности to_user_id"""
# TODO: Реализовать тест
pass
def test_question_default_status(self):
"""Тест статуса по умолчанию"""
# TODO: Реализовать тест
pass
def test_question_default_anonymous(self):
"""Тест анонимности по умолчанию"""
# TODO: Реализовать тест
pass
def test_question_default_is_read(self):
"""Тест флага is_read по умолчанию"""
# TODO: Реализовать тест
pass
def test_question_created_at_timestamp(self):
"""Тест временной метки создания"""
# TODO: Реализовать тест
pass
def test_question_answer_timestamp(self):
"""Тест временной метки ответа"""
# TODO: Реализовать тест
pass
def test_question_mark_as_answered(self):
"""Тест метода mark_as_answered"""
# TODO: Реализовать тест
pass
def test_question_mark_as_rejected(self):
"""Тест метода mark_as_rejected"""
# TODO: Реализовать тест
pass
def test_question_mark_as_deleted(self):
"""Тест метода mark_as_deleted"""
# TODO: Реализовать тест
pass
def test_question_mark_as_read(self):
"""Тест метода mark_as_read"""
# TODO: Реализовать тест
pass
def test_question_formatting_methods(self):
"""Тест методов форматирования"""
# TODO: Реализовать тест
pass
def test_question_validation_message_length(self):
"""Тест валидации длины сообщения"""
# TODO: Реализовать тест
pass
def test_question_validation_answer_length(self):
"""Тест валидации длины ответа"""
# TODO: Реализовать тест
pass
def test_question_serialization(self):
"""Тест сериализации вопроса"""
# TODO: Реализовать тест
pass
def test_question_deserialization(self):
"""Тест десериализации вопроса"""
# TODO: Реализовать тест
pass