import sys
import os
import sqlite3

# 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_finder
import database
import data_fetcher

def test_auto_yearly_download():
    """Test: Automatické stažení ročních dat, pokud data pro daný rok neexistují."""
    print("Test: Automatické stažení ročních dat, pokud data pro daný rok neexistují...")
    
    # Inicializujeme databázi
    database.init_db()
    
    # Zkontrolujeme, zda databáze obsahuje data pro rok 2019
    year = 2019
    has_data = rate_finder.check_year_data_in_db(year)
    
    if has_data:
        print(f"Varování: Databáze již obsahuje data pro rok {year}. Pro test je třeba databázi vyčistit.")
        # Pro účely testu odstraníme data pro rok 2019
        conn = sqlite3.connect(database.DB_PATH)
        cursor = conn.cursor()
        cursor.execute('DELETE FROM exchange_rates WHERE strftime(\'%Y\', date) = ?', (str(year),))
        conn.commit()
        conn.close()
        print(f"Data pro rok {year} byla odstraněna z databáze.")
        # Znovu zkontrolujeme
        has_data = rate_finder.check_year_data_in_db(year)
    
    if not has_data:
        print(f"Databáze neobsahuje data pro rok {year}, jak očekáváno.")
        
        # Zkusíme vyhledat kurz pro datum 18.08.2019
        test_date = "18.08.2019"
        test_currency = "USD"
        print(f"Vyhledávám kurz pro {test_currency} na datum {test_date}...")
        rate = rate_finder.get_rate_for_date(test_date, test_currency)
        
        # Po vyhledání by měla být data pro rok 2019 v databázi
        has_data_after = rate_finder.check_year_data_in_db(year)
        if has_data_after:
            print(f"Test: Automatické stažení ročních dat pro rok {year} - OK")
            if rate:
                print(f"Kurz {test_currency} na datum {test_date} (nebo nejbližší pracovní den): {rate}")
            else:
                print(f"Kurz {test_currency} na datum {test_date} nebyl nalezen.")
        else:
            print(f"Test selhal: Data pro rok {year} nebyla automaticky stažena.")
    else:
        print(f"Test nelze provést, protože databáze již obsahuje data pro rok {year}.")

def run_all_tests():
    """Spustí všechny testy."""
    print("Spouštím testy automatického stahování ročních dat...")
    test_auto_yearly_download()
    print("\nTesty automatického stahování ročních dat dokončeny!")

if __name__ == "__main__":
    run_all_tests()