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,3 @@
"""
Unit тесты для middleware
"""

View File

@@ -0,0 +1,83 @@
"""
Тесты для RateLimitMiddleware
Что тестировать:
- Инициализация middleware
- Применение rate limiting к сообщениям
- Пропуск других типов событий
- Обработка ошибок rate limiting
- Интеграция с telegram_rate_limiter
- Логирование rate limit событий
- Производительность middleware
- Обработка TelegramRetryAfter
- Обработка TelegramAPIError
"""
import pytest
from unittest.mock import AsyncMock, MagicMock
from aiogram.types import Message, User, Chat, CallbackQuery, Update
from aiogram.exceptions import TelegramRetryAfter, TelegramAPIError
from middlewares.rate_limit_middleware import RateLimitMiddleware
class TestRateLimitMiddleware:
"""Тесты для RateLimitMiddleware"""
def test_middleware_initialization(self):
"""Тест инициализации middleware"""
# TODO: Реализовать тест
pass
def test_apply_rate_limit_to_message(self):
"""Тест применения rate limiting к сообщению"""
# TODO: Реализовать тест
pass
def test_skip_rate_limit_for_callback_query(self):
"""Тест пропуска rate limiting для CallbackQuery"""
# TODO: Реализовать тест
pass
def test_skip_rate_limit_for_update(self):
"""Тест пропуска rate limiting для Update"""
# TODO: Реализовать тест
pass
def test_handle_telegram_retry_after(self):
"""Тест обработки TelegramRetryAfter"""
# TODO: Реализовать тест
pass
def test_handle_telegram_api_error(self):
"""Тест обработки TelegramAPIError"""
# TODO: Реализовать тест
pass
def test_rate_limit_success(self):
"""Тест успешного rate limiting"""
# TODO: Реализовать тест
pass
def test_rate_limit_exceeded(self):
"""Тест превышения rate limit"""
# TODO: Реализовать тест
pass
def test_middleware_with_none_message(self):
"""Тест middleware с None сообщением"""
# TODO: Реализовать тест
pass
def test_middleware_with_none_chat_id(self):
"""Тест middleware с None chat_id"""
# TODO: Реализовать тест
pass
def test_performance_with_high_frequency(self):
"""Тест производительности при высокой частоте"""
# TODO: Реализовать тест
pass
def test_integration_with_telegram_rate_limiter(self):
"""Тест интеграции с telegram_rate_limiter"""
# TODO: Реализовать тест
pass

View File

@@ -0,0 +1,94 @@
"""
Тесты для ValidationMiddleware
Что тестировать:
- Инициализация middleware
- Валидация CallbackQuery
- Валидация Message
- Обработка ошибок валидации
- Пропуск невалидных данных
- Логирование ошибок
- Интеграция с InputValidator
- Обработка различных типов событий
- Возврат санитизированных данных
- Производительность middleware
"""
import pytest
from unittest.mock import AsyncMock, MagicMock
from aiogram.types import CallbackQuery, Message, User, Chat, Update
from middlewares.validation_middleware import ValidationMiddleware, ValidationError
from services.validation import InputValidator, ValidationResult
class TestValidationMiddleware:
"""Тесты для ValidationMiddleware"""
def test_middleware_initialization(self):
"""Тест инициализации middleware"""
# TODO: Реализовать тест
pass
def test_validate_callback_query_valid(self):
"""Тест валидации корректного CallbackQuery"""
# TODO: Реализовать тест
pass
def test_validate_callback_query_invalid(self):
"""Тест валидации некорректного CallbackQuery"""
# TODO: Реализовать тест
pass
def test_validate_message_valid(self):
"""Тест валидации корректного Message"""
# TODO: Реализовать тест
pass
def test_validate_message_invalid(self):
"""Тест валидации некорректного Message"""
# TODO: Реализовать тест
pass
def test_validation_error_handling(self):
"""Тест обработки ошибок валидации"""
# TODO: Реализовать тест
pass
def test_validation_error_response(self):
"""Тест ответа на ошибку валидации"""
# TODO: Реализовать тест
pass
def test_unsupported_event_type(self):
"""Тест обработки неподдерживаемого типа события"""
# TODO: Реализовать тест
pass
def test_sanitized_data_injection(self):
"""Тест инъекции санитизированных данных"""
# TODO: Реализовать тест
pass
def test_validator_injection(self):
"""Тест инъекции валидатора в данные"""
# TODO: Реализовать тест
pass
def test_handler_continuation_on_valid_data(self):
"""Тест продолжения обработки при валидных данных"""
# TODO: Реализовать тест
pass
def test_handler_stop_on_invalid_data(self):
"""Тест остановки обработки при невалидных данных"""
# TODO: Реализовать тест
pass
def test_performance_with_large_data(self):
"""Тест производительности с большими данными"""
# TODO: Реализовать тест
pass
def test_middleware_with_none_validator(self):
"""Тест middleware с None валидатором"""
# TODO: Реализовать тест
pass