#!/usr/bin/env python3
"""
Test du générateur avec les vraies données du bot
"""

import os
import sys
import logging

# Configuration logging pour voir les détails
logging.basicConfig(level=logging.INFO, format='%(levelname)s:%(name)s:%(message)s')

sys.path.append('/var/www/html/swiplay.fr/scambot')

from modules.contract_generator import ContractGenerator

def test_real_data():
    """Test avec des données réelles comme celles du bot"""
    print("🔧 Test avec données réelles du bot...")
    
    generator = ContractGenerator()
    
    # Données utilisateur réelles (similaires à celles du bot)
    user_data = {
        'prenom': 'Mohamed',
        'nom': 'Hamdouni', 
        'rue': '123 Rue Test',
        'code_postal': '75001',
        'ville': 'Paris'
    }
    
    # Données vidéo Instagram réelles
    video_data = {
        'title': 'Ce jeu où toi et tes potes entrez en guerre !',
        'platform': 'Instagram',
        'published_date': '30/05/2025',
        'url': 'https://www.instagram.com/p/DKRynr4sOeN/',
        'duration': 'Non trouvée'
    }
    
    print(f"👤 Utilisateur: {user_data['prenom']} {user_data['nom']}")
    print(f"🎬 Vidéo: {video_data['title']}")
    print(f"📱 Plateforme: {video_data['platform']}")
    
    try:
        # Test exact comme dans le bot
        result = generator.generate_contract(user_data, video_data, "eyzuro")
        
        if result['success']:
            print(f"✅ Contrat généré: {result['filename']}")
            print(f"📁 Chemin: {result['pdf_path']}")
            
            if os.path.exists(result['pdf_path']):
                size = os.path.getsize(result['pdf_path'])
                print(f"📊 Taille: {size} bytes")
                
                # Test lecture du fichier
                try:
                    with open(result['pdf_path'], 'rb') as f:
                        data = f.read(100)  # Lire les premiers 100 bytes
                        print(f"✅ Fichier lisible: {len(data)} bytes lus")
                except Exception as read_error:
                    print(f"❌ Erreur lecture: {read_error}")
            else:
                print(f"❌ Fichier non trouvé: {result['pdf_path']}")
                
        else:
            print(f"❌ Erreur génération: {result['error']}")
            return False
            
    except Exception as e:
        print(f"❌ Exception: {e}")
        import traceback
        traceback.print_exc()
        return False
    
    return True

def test_fake_user_data():
    """Test avec données utilisateur fake (pour utilisateur non inscrit)"""
    print("\n🔧 Test avec données fake (utilisateur non inscrit)...")
    
    generator = ContractGenerator()
    
    # Données fake comme dans le bot pour utilisateur non inscrit
    fake_user_data = {
        'prenom': '[VOTRE PRÉNOM]',
        'nom': '[VOTRE NOM]', 
        'rue': '[VOTRE RUE]',
        'code_postal': '[CODE POSTAL]',
        'ville': '[VOTRE VILLE]'
    }
    
    video_data = {
        'title': 'Ce jeu où toi et tes potes entrez en guerre !',
        'platform': 'Instagram',
        'published_date': '30/05/2025',
        'url': 'https://www.instagram.com/p/DKRynr4sOeN/'
    }
    
    try:
        result = generator.generate_contract(fake_user_data, video_data, "[VOTRE PSEUDONYME]")
        
        if result['success']:
            print(f"✅ Contrat fake généré: {result['filename']}")
            print(f"📁 Chemin: {result['pdf_path']}")
            
            if os.path.exists(result['pdf_path']):
                size = os.path.getsize(result['pdf_path'])
                print(f"📊 Taille: {size} bytes")
            else:
                print(f"❌ Fichier non trouvé: {result['pdf_path']}")
                
        else:
            print(f"❌ Erreur génération fake: {result['error']}")
            return False
            
    except Exception as e:
        print(f"❌ Exception fake: {e}")
        return False
    
    return True

if __name__ == "__main__":
    print("🚀 Test générateur avec données réelles")
    print("=" * 50)
    
    success1 = test_real_data()
    success2 = test_fake_user_data()
    
    print(f"\n📊 Résultats:")
    print(f"   Données réelles: {'✅' if success1 else '❌'}")
    print(f"   Données fake: {'✅' if success2 else '❌'}")
    
    if success1 and success2:
        print("\n🎉 Tous les tests réussis!")
        print("✅ Le problème ne vient pas du générateur lui-même")
        print("🔍 Le problème est probablement dans la logique du bot Discord")
    else:
        print("\n⚠️ Problème identifié avec certaines données")