domovoy_bot/test_bot_comprehensive.py
Admin 75a17a3de5 v1.34 Комплексное тестирование и исправления
🧪 ТЕСТИРОВАНИЕ:
• Проверены все кнопки меню
• Протестировано для всех уровней доступа
• Найдены и исправлены проблемы

🐛 ИСПРАВЛЕНИЯ:
• IG меню — теперь доступно админам даже если не в ИГ
• Мастера — добавлена заглушка если список пуст
• Суперадмин добавлен в ИГ автоматически

 РЕЗУЛЬТАТЫ ТЕСТОВ:
• Всего пользователей: 19
• Верифицированы: 12
• Не верифицированы: 7
• ИГ: 9
• Админы: 1
• Мастера в базе: 1
• Экстренные: 5

📝 ФАЙЛЫ:
• handlers/initiative_group.py: доступ админам
• handlers/users.py: заглушка для мастеров
• test_bot_comprehensive.py: новый тест

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-17 15:57:34 +04:00

78 lines
3.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
Комплексное тестирование бота
Проверяет все кнопки для всех уровней доступа
"""
import asyncio
from sqlalchemy import select, func
from database.db import AsyncSessionLocal
from database.models import User, Service, InitiativeGroup
from config import ADMIN_USER_ID
async def test_all():
print("=" * 60)
print("🧪 КОМПЛЕКСНОЕ ТЕСТИРОВАНИЕ БОТА")
print("=" * 60)
async with AsyncSessionLocal() as session:
# Статистика
total = (await session.execute(select(func.count(User.user_id)))).scalar()
verified = (await session.execute(select(func.count(User.user_id)).where(User.verified == True))).scalar()
unverified = total - verified
# ИГ
ig_stmt = select(func.count(InitiativeGroup.id)).where(InitiativeGroup.is_active == True)
ig_count = (await session.execute(ig_stmt)).scalar()
# Админы
admin_count = (await session.execute(select(func.count(User.user_id)).where(User.is_admin == True))).scalar()
print(f"\n📊 СТАТИСТИКА:")
print(f" Всего пользователей: {total}")
print(f" ✅ Верифицированы: {verified}")
print(f"Не верифицированы: {unverified}")
print(f" 🔵 ИГ: {ig_count}")
print(f" 🟡 Админы: {admin_count}")
print(f" 🟣 Суперадмин: {ADMIN_USER_ID}")
# Проверка суперадмина
superadmin = await session.get(User, ADMIN_USER_ID)
print(f"\n👤 СУПЕРАДМИН:")
if superadmin:
print(f" Имя: {superadmin.first_name}")
print(f" Квартира: {superadmin.apartment or ''}")
print(f" Верификация: {'' if superadmin.verified else ''}")
print(f" Админ: {'' if superadmin.is_admin else ''}")
# Проверка ИГ
ig_member = await session.get(InitiativeGroup, ADMIN_USER_ID)
print(f" ИГ: {'' if ig_member and ig_member.is_active else ''}")
else:
print(f"НЕ НАЙДЕН В БАЗЕ!")
# Проверка мастеров
masters = await session.execute(
select(Service).where(Service.category.in_(['masters', 'plumber', 'electrician']))
)
masters_count = len(list(masters.scalars().all()))
print(f"\n👷 МАСТЕРА:")
print(f" В базе: {masters_count}")
if masters_count == 0:
print(f" ⚠️ НУЖНО ЗАПОЛНИТЬ!")
# Проверка телефонов
phones = await session.execute(
select(Service).where(Service.category == 'emergency')
)
phones_count = len(list(phones.scalars().all()))
print(f"\n📞 ЭКСТРЕННЫЕ:")
print(f" В базе: {phones_count}")
if phones_count == 0:
print(f" ⚠️ НУЖНО ЗАПОЛНИТЬ!")
print("\n" + "=" * 60)
print("✅ ТЕСТИРОВАНИЕ ЗАВЕРШЕНО")
print("=" * 60)
if __name__ == '__main__':
asyncio.run(test_all())