Some checks reported errors
continuous-integration/drone/push Build encountered an error
- Исправлены критические ошибки callback обработки - Реализована модульная архитектура с применением SOLID принципов - Добавлена система dependency injection - Создана новая структура: interfaces, repositories, components, controllers - Исправлены проблемы с базой данных (добавлены отсутствующие столбцы) - Заменены заглушки на полную функциональность управления розыгрышами - Добавлены отчеты о проделанной работе и документация Архитектура готова для production и легко масштабируется
74 lines
2.6 KiB
Python
74 lines
2.6 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Скрипт для тестирования функциональности бота
|
||
"""
|
||
|
||
import asyncio
|
||
import sys
|
||
import os
|
||
sys.path.insert(0, os.path.dirname(__file__))
|
||
|
||
from src.core.database import async_session_maker
|
||
from src.core.models import User, Lottery
|
||
from sqlalchemy import select
|
||
|
||
async def test_database_connectivity():
|
||
"""Тест подключения к базе данных"""
|
||
print("🔌 Тестируем подключение к базе данных...")
|
||
|
||
async with async_session_maker() as session:
|
||
# Проверяем подключение
|
||
result = await session.execute(select(1))
|
||
print("✅ Подключение к PostgreSQL работает")
|
||
|
||
# Проверяем количество пользователей
|
||
users_count = await session.execute(select(User))
|
||
users = users_count.scalars().all()
|
||
print(f"📊 В базе {len(users)} пользователей")
|
||
|
||
# Проверяем количество лотерей
|
||
lotteries_count = await session.execute(select(Lottery))
|
||
lotteries = lotteries_count.scalars().all()
|
||
print(f"🎰 В базе {len(lotteries)} лотерей")
|
||
|
||
async def test_bot_imports():
|
||
"""Тест импортов бота"""
|
||
print("🔄 Тестируем импорты модулей...")
|
||
|
||
try:
|
||
from src.handlers.registration_handlers import router as registration_router
|
||
print("✅ registration_router импортирован")
|
||
|
||
from src.handlers.admin_panel import admin_router
|
||
print("✅ admin_router импортирован")
|
||
|
||
from src.handlers.account_handlers import account_router
|
||
print("✅ account_router импортирован")
|
||
|
||
from src.core.config import BOT_TOKEN
|
||
print("✅ BOT_TOKEN получен из конфигурации")
|
||
|
||
except Exception as e:
|
||
print(f"❌ Ошибка импорта: {e}")
|
||
return False
|
||
|
||
return True
|
||
|
||
async def main():
|
||
"""Основная функция тестирования"""
|
||
print("🤖 Тестирование функциональности лотерейного бота")
|
||
print("=" * 50)
|
||
|
||
# Тест импортов
|
||
imports_ok = await test_bot_imports()
|
||
|
||
if imports_ok:
|
||
print("\n")
|
||
# Тест базы данных
|
||
await test_database_connectivity()
|
||
|
||
print("\n" + "=" * 50)
|
||
print("✅ Тестирование завершено")
|
||
|
||
if __name__ == "__main__":
|
||
asyncio.run(main()) |