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

166
tests/run_tests.sh Executable file
View File

@@ -0,0 +1,166 @@
#!/bin/bash
# Скрипт для запуска тестов AnonBot
set -e
echo "🧪 Запуск тестов AnonBot"
echo "========================="
# Проверяем, что мы в правильной директории
if [ ! -f "pytest.ini" ]; then
echo "❌ Ошибка: pytest.ini не найден. Запустите скрипт из корневой директории проекта."
exit 1
fi
# Устанавливаем тестовые зависимости
echo "📦 Установка тестовых зависимостей..."
pip install -r tests/requirements.txt
# Создаем тестовую БД в памяти
export DATABASE_PATH=":memory:"
export TELEGRAM_BOT_TOKEN="test_token"
export ADMINS="123456789,987654321"
export LOG_LEVEL="DEBUG"
echo "🔧 Настройка тестового окружения..."
# Функция для запуска тестов с покрытием
run_tests_with_coverage() {
local test_path="$1"
local test_name="$2"
echo "📊 Запуск $test_name с покрытием..."
pytest "$test_path" \
--cov=. \
--cov-report=html \
--cov-report=term-missing \
--cov-fail-under=80 \
-v
}
# Функция для запуска тестов без покрытия
run_tests() {
local test_path="$1"
local test_name="$2"
echo "🚀 Запуск $test_name..."
pytest "$test_path" -v
}
# Функция для запуска тестов по маркерам
run_tests_by_marker() {
local marker="$1"
local test_name="$2"
echo "🏷️ Запуск $test_name (маркер: $marker)..."
pytest -m "$marker" -v
}
# Основное меню
case "${1:-all}" in
"all")
echo "🎯 Запуск всех тестов..."
run_tests_with_coverage "tests/" "всех тестов"
;;
"unit")
echo "🔬 Запуск unit тестов..."
run_tests_with_coverage "tests/unit/" "unit тестов"
;;
"integration")
echo "🔗 Запуск интеграционных тестов..."
run_tests "tests/integration/" "интеграционных тестов"
;;
"models")
echo "📊 Запуск тестов моделей..."
run_tests "tests/unit/models/" "тестов моделей"
;;
"validation")
echo "✅ Запуск тестов валидации..."
run_tests "tests/unit/services/validation/" "тестов валидации"
;;
"auth")
echo "🔐 Запуск тестов авторизации..."
run_tests "tests/unit/services/auth/" "тестов авторизации"
;;
"crud")
echo "💾 Запуск тестов CRUD..."
run_tests "tests/unit/database/" "тестов CRUD"
;;
"services")
echo "⚙️ Запуск тестов сервисов..."
run_tests "tests/unit/services/" "тестов сервисов"
;;
"handlers")
echo "🎮 Запуск тестов обработчиков..."
run_tests "tests/unit/handlers/" "тестов обработчиков"
;;
"middleware")
echo "🔧 Запуск тестов middleware..."
run_tests "tests/unit/middlewares/" "тестов middleware"
;;
"config")
echo "⚙️ Запуск тестов конфигурации..."
run_tests "tests/unit/config/" "тестов конфигурации"
;;
"coverage")
echo "📊 Генерация отчета о покрытии..."
pytest --cov=. --cov-report=html --cov-report=term-missing -v
echo "📁 Отчет сохранен в htmlcov/index.html"
;;
"fast")
echo "⚡ Быстрый запуск тестов..."
pytest -x -v --tb=short
;;
"debug")
echo "🐛 Запуск тестов в режиме отладки..."
pytest -v -s --pdb --tb=long
;;
"help")
echo "📖 Доступные команды:"
echo " all - Запуск всех тестов с покрытием"
echo " unit - Запуск unit тестов с покрытием"
echo " integration - Запуск интеграционных тестов"
echo " models - Запуск тестов моделей"
echo " validation - Запуск тестов валидации"
echo " auth - Запуск тестов авторизации"
echo " crud - Запуск тестов CRUD"
echo " services - Запуск тестов сервисов"
echo " handlers - Запуск тестов обработчиков"
echo " middleware - Запуск тестов middleware"
echo " config - Запуск тестов конфигурации"
echo " coverage - Генерация отчета о покрытии"
echo " fast - Быстрый запуск тестов"
echo " debug - Запуск в режиме отладки"
echo " help - Показать эту справку"
echo ""
echo "Примеры использования:"
echo " ./tests/run_tests.sh all"
echo " ./tests/run_tests.sh unit"
echo " ./tests/run_tests.sh models"
echo " ./tests/run_tests.sh coverage"
;;
*)
echo "❌ Неизвестная команда: $1"
echo "Используйте './tests/run_tests.sh help' для справки"
exit 1
;;
esac
echo ""
echo "✅ Тесты завершены!"