Files
cnb_exchange_rates/tests/test_auto_yearly_download.py
2025-08-19 15:02:55 +02:00

64 lines
2.5 KiB
Python

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()