/
dayekb
/
vibecoding_tgbot
Обзор
Документация
Войти
/
dayekb
/
vibecoding_tgbot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
test_bot.py
186 строк
6 KB
Your Name
Initial commit: TG Daily Bot - Agile Team Standup Bot
19 авг 2025, 23:23
19 авг 2025, 23:23
1bc4aac
Код
Авторство
О чём код?
#!/usr/bin/env python3 """ Простой скрипт для тестирования основных функций TG Daily Bot """ import asyncio import sys import os # Добавляем корневую директорию в путь sys.path.append(os.path.dirname(os.path.abspath(__file__))) from app.models import * from app.services.user_service import UserService from app.services.team_service import TeamService from app.services.daily_service import DailyService from config.database import engine, Base from config.settings import settings def test_database_connection(): """Тест подключения к базе данных""" try: # Создаем таблицы Base.metadata.create_all(bind=engine) print("✅ База данных подключена успешно") print("✅ Таблицы созданы") return True except Exception as e: print(f"❌ Ошибка подключения к базе данных: {e}") return False def test_models(): """Тест создания моделей""" try: # Создаем тестового пользователя db = next(get_db()) user_service = UserService(db) # Тестируем создание пользователя from app.schemas.user import UserCreate from app.models.user import UserRole test_user = UserCreate( telegram_id=123456789, username="test_user", first_name="Test", last_name="User", role=UserRole.MANAGER ) user = user_service.create_user(test_user) print(f"✅ Пользователь создан: {user.first_name} {user.last_name}") # Тестируем создание команды team_service = TeamService(db) from app.schemas.team import TeamCreate test_team = TeamCreate( name="Test Team", description="Тестовая команда", telegram_group_id="-1001234567890" ) team = team_service.create_team(test_team, user.id) print(f"✅ Команда создана: {team.name}") # Тестируем настройки команды settings = team_service.get_team_settings(team.id) if settings: print(f"✅ Настройки команды созданы: утренние опросы в {settings.survey_time_morning}") # Тестируем вопросы questions = db.query(DailyQuestion).filter(DailyQuestion.team_id == team.id).all() print(f"✅ Создано {len(questions)} вопросов для команды") db.close() return True except Exception as e: print(f"❌ Ошибка тестирования моделей: {e}") return False def test_services(): """Тест сервисов""" try: db = next(get_db()) # Тестируем DailyService daily_service = DailyService(db) # Генерируем тестовый отчет from datetime import date report = daily_service.generate_daily_report(1, date.today()) if report: print("✅ DailyService работает корректно") # Тестируем форматирование отчета report_text = daily_service.format_telegram_report(report) if report_text: print("✅ Форматирование отчета работает") db.close() return True except Exception as e: print(f"❌ Ошибка тестирования сервисов: {e}") return False def cleanup_test_data(): """Очистка тестовых данных""" try: db = next(get_db()) # Удаляем тестовые данные db.query(DailyResponse).delete() db.query(DailyQuestion).delete() db.query(TeamSettings).delete() db.query(TeamMember).delete() db.query(Team).delete() db.query(User).delete() db.commit() print("✅ Тестовые данные очищены") db.close() return True except Exception as e: print(f"❌ Ошибка очистки данных: {e}") return False def main(): """Главная функция тестирования""" print("🧪 Запуск тестирования TG Daily Bot...") print("=" * 50) # Проверяем настройки if not settings.telegram_bot_token: print("⚠️ TELEGRAM_BOT_TOKEN не установлен") print(" Установите токен в .env файле для полного тестирования") if not settings.database_url: print("⚠️ DATABASE_URL не установлен") print(" Установите URL базы данных в .env файле") return # Тестируем подключение к базе данных if not test_database_connection(): return print() # Тестируем модели if not test_models(): return print() # Тестируем сервисы if not test_services(): return print() # Очищаем тестовые данные cleanup_test_data() print() print("🎉 Все тесты пройдены успешно!") print("=" * 50) print("Бот готов к работе!") print() print("Следующие шаги:") print("1. Настройте .env файл с вашими данными") print("2. Запустите бота: python main.py") print("3. Протестируйте в Telegram") if __name__ == "__main__": main()