import sys
import os

# Přidání adresáře src do sys.path, aby bylo možné importovat moduly
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'src'))

import rate_reporter
import database

def test_yearly_report():
    """Test: Generování ročního reportu."""
    print("Test: Generování ročního reportu...")
    
    # Inicializujeme databázi
    database.init_db()
    
    # Vygenerujeme report pro rok 2020 a měnu USD
    filepath = rate_reporter.generate_yearly_report(2020, "USD", output_dir="data")
    
    if filepath and os.path.exists(filepath):
        print(f"Roční report byl úspěšně vygenerován: {filepath}")
        # Zkontrolujeme, zda soubor není prázdný
        if os.path.getsize(filepath) > 0:
            print("Roční report není prázdný.")
            # Zobrazíme prvních několik řádků souboru
            with open(filepath, 'r', encoding='utf-8') as f:
                lines = f.readlines()
                print("Prvních 5 řádků reportu:")
                for line in lines[:5]:
                    print(f"  {line.strip()}")
        else:
            print("Varování: Roční report je prázdný.")
    else:
        print("Test selhal: Roční report nebyl vygenerován.")

def test_monthly_report():
    """Test: Generování měsíčního reportu."""
    print("\nTest: Generování měsíčního reportu...")
    
    # Vygenerujeme report pro červenec 2020 a měnu USD
    filepath = rate_reporter.generate_monthly_report(2020, 7, "USD", output_dir="data")
    
    if filepath and os.path.exists(filepath):
        print(f"Měsíční report byl úspěšně vygenerován: {filepath}")
        # Zkontrolujeme, zda soubor není prázdný
        if os.path.getsize(filepath) > 0:
            print("Měsíční report není prázdný.")
            # Zobrazíme prvních několik řádků souboru
            with open(filepath, 'r', encoding='utf-8') as f:
                lines = f.readlines()
                print("Prvních 5 řádků reportu:")
                for line in lines[:5]:
                    print(f"  {line.strip()}")
        else:
            print("Varování: Měsíční report je prázdný.")
    else:
        print("Test selhal: Měsíční report nebyl vygenerován.")

def test_period_report():
    """Test: Generování reportu za období."""
    print("\nTest: Generování reportu za období...")
    
    # Vygenerujeme report pro období 1.7.2020 - 31.7.2020 a měnu USD
    filepath = rate_reporter.generate_period_report("01.07.2020", "31.07.2020", "USD", output_dir="data")
    
    if filepath and os.path.exists(filepath):
        print(f"Report za období byl úspěšně vygenerován: {filepath}")
        # Zkontrolujeme, zda soubor není prázdný
        if os.path.getsize(filepath) > 0:
            print("Report za období není prázdný.")
            # Zobrazíme prvních několik řádků souboru
            with open(filepath, 'r', encoding='utf-8') as f:
                lines = f.readlines()
                print("Prvních 5 řádků reportu:")
                for line in lines[:5]:
                    print(f"  {line.strip()}")
        else:
            print("Varování: Report za období je prázdný.")
    else:
        print("Test selhal: Report za období nebyl vygenerován.")

def run_all_tests():
    """Spustí všechny testy."""
    print("Spouštím testy generování reportů o kurzech...")
    test_yearly_report()
    test_monthly_report()
    test_period_report()
    print("\nTesty generování reportů o kurzech dokončeny!")

if __name__ == "__main__":
    run_all_tests()