cleaning root
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
This commit is contained in:
117
tests/test_bot_fix.py
Normal file
117
tests/test_bot_fix.py
Normal file
@@ -0,0 +1,117 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Тест для проверки работы бота после исправления ошибки Pydantic
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
|
||||
# Добавляем путь к проекту
|
||||
project_root = os.path.dirname(os.path.abspath(__file__))
|
||||
sys.path.insert(0, project_root)
|
||||
|
||||
from aiogram.types import User, Chat, Message, CallbackQuery, InlineKeyboardMarkup, InlineKeyboardButton
|
||||
from src.bot import QuizBot
|
||||
from config.config import config
|
||||
|
||||
|
||||
async def create_mock_callback(user_id: int = 12345, data: str = "back_to_menu") -> CallbackQuery:
|
||||
"""Создаем мок callback query"""
|
||||
user = User(
|
||||
id=user_id,
|
||||
is_bot=False,
|
||||
first_name="Test",
|
||||
username="testuser"
|
||||
)
|
||||
|
||||
chat = Chat(id=user_id, type="private")
|
||||
|
||||
message = Message(
|
||||
message_id=1,
|
||||
date=1234567890,
|
||||
chat=chat,
|
||||
from_user=user,
|
||||
content_type="text",
|
||||
text="Test message"
|
||||
)
|
||||
|
||||
callback = CallbackQuery(
|
||||
id="test_callback",
|
||||
from_user=user,
|
||||
chat_instance="test",
|
||||
data=data,
|
||||
message=message
|
||||
)
|
||||
|
||||
return callback
|
||||
|
||||
|
||||
async def test_bot_handlers():
|
||||
"""Тестируем обработчики бота"""
|
||||
print("🧪 Тестирование обработчиков бота...")
|
||||
|
||||
# Создаем экземпляр бота
|
||||
bot = QuizBot()
|
||||
await bot.init_db()
|
||||
|
||||
try:
|
||||
# Тестируем stats_callback_handler
|
||||
print("📊 Тестируем stats_callback_handler...")
|
||||
callback = await create_mock_callback(data="stats")
|
||||
|
||||
# Этот вызов должен работать без ошибок
|
||||
await bot.stats_callback_handler(callback)
|
||||
print("✅ stats_callback_handler работает корректно")
|
||||
|
||||
# Тестируем back_to_menu
|
||||
print("🏠 Тестируем back_to_menu...")
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram.fsm.storage.memory import MemoryStorage
|
||||
|
||||
storage = MemoryStorage()
|
||||
context = FSMContext(
|
||||
storage=storage,
|
||||
key={'bot_id': bot.bot.id, 'chat_id': 12345, 'user_id': 12345}
|
||||
)
|
||||
|
||||
callback = await create_mock_callback(data="back_to_menu")
|
||||
|
||||
# Этот вызов должен работать без ошибок Pydantic
|
||||
await bot.back_to_menu(callback, context)
|
||||
print("✅ back_to_menu работает корректно")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Ошибка в тестах: {e}")
|
||||
return False
|
||||
|
||||
finally:
|
||||
await bot.db.close()
|
||||
|
||||
print("🎉 Все тесты пройдены успешно!")
|
||||
return True
|
||||
|
||||
|
||||
async def main():
|
||||
"""Главная функция"""
|
||||
print("=" * 50)
|
||||
print("🔧 Тест исправления ошибки Pydantic frozen instance")
|
||||
print("=" * 50)
|
||||
|
||||
try:
|
||||
success = await test_bot_handlers()
|
||||
if success:
|
||||
print("\n✅ Исправление успешно! Бот готов к использованию.")
|
||||
return 0
|
||||
else:
|
||||
print("\n❌ Тесты не прошли. Требуется дополнительная отладка.")
|
||||
return 1
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n💥 Критическая ошибка: {e}")
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
exit_code = asyncio.run(main())
|
||||
sys.exit(exit_code)
|
||||
Reference in New Issue
Block a user