#!/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())