#!/usr/bin/env python3
"""
🎵 Muzlar Bot - Yakuniy Test
Barcha komponentlarni tekshirish
"""
import asyncio
import sys
import os
import requests
import mysql.connector
sys.path.append('/var/www/shaz')

from services.shazam_service import ShazamService
from config import Config

def test_database():
    """Database ulanishini test qilish"""
    print("🗄️  Database test...")
    try:
        conn = mysql.connector.connect(
            host='localhost',
            user='muzlar_user',
            password='Muzlar2024#Bot',
            database='muzlar_bot_db'
        )
        cursor = conn.cursor()
        cursor.execute("SELECT COUNT(*) FROM users")
        user_count = cursor.fetchone()[0]
        print(f"✅ Database ulandi: {user_count} ta foydalanuvchi")
        conn.close()
        return True
    except Exception as e:
        print(f"❌ Database xatosi: {e}")
        return False

def test_admin_panel():
    """Admin panelni test qilish"""
    print("🌐 Admin panel test...")
    try:
        response = requests.get('http://localhost:8081', timeout=5)
        if response.status_code == 200 and 'Muzlar Bot Admin' in response.text:
            print("✅ Admin panel ishlayapti")
            return True
        else:
            print(f"❌ Admin panel xatosi: {response.status_code}")
            return False
    except Exception as e:
        print(f"❌ Admin panel xatosi: {e}")
        return False

async def test_shazam_service():
    """ShazamIO service ni test qilish"""
    print("🎵 ShazamIO service test...")
    try:
        service = ShazamService()
        
        # Qidiruv testi
        results = await service.search_songs("test music", 2)
        print(f"✅ Qidiruv: {len(results)} ta natija")
        
        # Top tracks testi
        top_tracks = await service.get_top_tracks("POP", 2)
        print(f"✅ Top tracks: {len(top_tracks)} ta qo'shiq")
        
        return True
    except Exception as e:
        print(f"❌ ShazamIO xatosi: {e}")
        return False

def test_bot_process():
    """Bot jarayonini tekshirish"""
    print("🤖 Bot jarayon test...")
    try:
        import subprocess
        result = subprocess.run(['ps', 'aux'], capture_output=True, text=True)
        if 'python3 main.py' in result.stdout:
            print("✅ Bot jarayoni ishlayapti")
            return True
        else:
            print("❌ Bot jarayoni topilmadi")
            return False
    except Exception as e:
        print(f"❌ Bot jarayon xatosi: {e}")
        return False

async def main():
    """Asosiy test funksiyasi"""
    print("🚀 Muzlar Bot - Yakuniy Test Boshlandi")
    print("=" * 50)
    
    tests = []
    
    # 1. Database test
    tests.append(test_database())
    
    # 2. Admin panel test
    tests.append(test_admin_panel())
    
    # 3. Bot process test
    tests.append(test_bot_process())
    
    # 4. ShazamIO service test
    tests.append(await test_shazam_service())
    
    print("\n" + "=" * 50)
    print("📊 Test natijalari:")
    
    passed = sum(tests)
    total = len(tests)
    
    print(f"✅ Muvaffaqiyatli: {passed}/{total}")
    print(f"❌ Xatolik: {total - passed}/{total}")
    
    if passed == total:
        print("\n🎉 Barcha testlar muvaffaqiyatli!")
        print("🚀 Muzlar Bot to'liq ishlamoqda!")
        print("\n📋 Tizim ma'lumotlari:")
        print("   🤖 Bot: @muzlar_bot")
        print("   🌐 Admin: http://localhost:8081")
        print("   🗄️  Database: muzlar_bot_db")
        print("   🎵 ShazamIO: Faol")
        print("   🌍 Tillar: O'zbek, Rus, Ingliz")
    else:
        print(f"\n⚠️  {total - passed} ta test muvaffaqiyatsiz")
        print("🔧 Ba'zi komponentlar to'g'rilanishi kerak")

if __name__ == "__main__":
    asyncio.run(main()) 