#!/usr/bin/env python3
"""
Script de test pour vérifier les corrections apportées au scambot
"""

import os
import sys
import logging

# Ajouter le chemin du module
sys.path.append('/var/www/html/swiplay.fr/scambot')

from modules.contract_generator import ContractGenerator
from modules.user_manager import UserManager

def test_contract_generator():
    """Test du générateur de contrats avec encodage UTF-8"""
    print("🔧 Test du générateur de contrats...")
    
    # Données de test avec caractères spéciaux
    user_data = {
        'prenom': 'François',
        'nom': 'Müller',
        'rue': '123 Rue de la Paix & Harmonie',
        'code_postal': '75001',
        'ville': 'Paris',
        'email': 'francois.muller@test.fr',
        'telephone': '06 12 34 56 78'
    }
    
    video_data = {
        'title': 'Test vidéo avec caractères spéciaux: ça marche! 100%',
        'platform': 'YouTube',
        'published_date': '15/08/2024',
        'url': 'https://youtube.com/test'
    }
    
    generator = ContractGenerator()
    
    # Test de vérification LaTeX
    latex_ok = generator.check_latex_installation()
    print(f"✅ LaTeX disponible: {latex_ok}")
    
    if latex_ok:
        # Test de génération
        result = generator.generate_contract(user_data, video_data, "TestPseudo123")
        
        if result['success']:
            print(f"✅ Contrat généré: {result['filename']}")
            print(f"📁 Chemin: {result['pdf_path']}")
            
            # Vérifier que le fichier existe
            if os.path.exists(result['pdf_path']):
                print("✅ Fichier PDF créé avec succès")
                size = os.path.getsize(result['pdf_path'])
                print(f"📊 Taille du fichier: {size} bytes")
            else:
                print("❌ Fichier PDF non trouvé")
        else:
            print(f"❌ Erreur génération: {result['error']}")
    else:
        print("⚠️ LaTeX non disponible - test de génération générique")
        generic = generator.generate_generic_contract({
            'title': 'Test vidéo',
            'platform': 'YouTube',
            'published_date': '15/08/2024',
            'url': 'https://youtube.com/test'
        })
        print(f"✅ Contrat générique: {len(generic)} caractères")

def test_user_manager():
    """Test du gestionnaire d'utilisateurs"""
    print("\n👤 Test du gestionnaire d'utilisateurs...")
    
    manager = UserManager()
    
    # Test d'ajout d'utilisateur avec caractères spéciaux
    test_user_id = "test_123456"
    success = manager.add_user(
        discord_id=test_user_id,
        prenom="François",
        nom="Müller",
        email="francois.muller@test.fr",
        telephone="06 12 34 56 78",
        rue="123 Rue de la Paix & Harmonie",
        code_postal="75001",
        ville="Paris"
    )
    
    if success:
        print("✅ Utilisateur ajouté avec succès")
        
        # Test de récupération
        user_data = manager.get_user(test_user_id)
        if user_data:
            print(f"✅ Utilisateur récupéré: {user_data['prenom']} {user_data['nom']}")
            print(f"📧 Email: {user_data['email']}")
            print(f"🏠 Adresse: {user_data['rue']}, {user_data['code_postal']} {user_data['ville']}")
        else:
            print("❌ Impossible de récupérer l'utilisateur")
        
        # Nettoyage
        manager.delete_user(test_user_id)
        print("🗑️ Utilisateur de test supprimé")
    else:
        print("❌ Impossible d'ajouter l'utilisateur")

def test_import_modules():
    """Test d'import des modules principaux"""
    print("\n📦 Test d'import des modules...")
    
    try:
        from modules.scraper import VideoScraper
        print("✅ VideoScraper importé")
    except Exception as e:
        print(f"❌ Erreur import VideoScraper: {e}")
    
    try:
        from modules.llm_processor import LLMProcessor
        print("✅ LLMProcessor importé")
    except Exception as e:
        print(f"❌ Erreur import LLMProcessor: {e}")
    
    try:
        from modules.database import Database
        print("✅ Database importé")
    except Exception as e:
        print(f"❌ Erreur import Database: {e}")
    
    try:
        from modules.user_registration import UserRegistrationModal
        print("✅ UserRegistrationModal importé")
    except Exception as e:
        print(f"❌ Erreur import UserRegistrationModal: {e}")

if __name__ == "__main__":
    print("🚀 Test des corrections du scambot")
    print("=" * 50)
    
    # Configuration du logging
    logging.basicConfig(level=logging.WARNING)
    
    # Tests
    test_import_modules()
    test_user_manager()
    test_contract_generator()
    
    print("\n✅ Tests terminés!")
    print("\n📋 Résumé des corrections apportées:")
    print("1. ✅ Correction de l'erreur d'encodage UTF-8 dans le générateur de contrats")
    print("2. ✅ Ajout de la gestion des caractères spéciaux LaTeX")
    print("3. ✅ Correction de la récupération des données utilisateur pour la page 6")
    print("4. ✅ Optimisation de la commande /declare pour éviter les timeouts")
    print("5. ✅ Ajout d'une génération automatique de PDF avec bouton de téléchargement")
    print("6. ✅ Suppression des envois en double")
    print("\n💡 Le bot devrait maintenant:")
    print("   - Générer automatiquement un PDF à la page 7")
    print("   - Afficher un bouton '📄 Télécharger PDF' cliquable")
    print("   - Récupérer correctement les données utilisateur") 
    print("   - Ne plus avoir d'erreurs d'encodage UTF-8")
    print("   - Ne plus envoyer de formulaire en double")