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

69 lines
3.0 KiB
Python

import sys
import os
from datetime import datetime
# 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 holidays
def test_future_date():
"""Test vyhledání kurzu pro budoucí datum."""
print("Test: Vyhledání kurzu pro budoucí datum...")
future_date = "01.01.2030"
rate = rate_finder.get_rate_for_date(future_date, "USD")
assert rate is None, "Mělo by vrátit None pro budoucí datum"
print("Test pro budoucí datum: OK")
def test_today_before_1430():
"""Test vyhledání kurzu pro dnešní datum před 14:30."""
print("Test: Vyhledání kurzu pro dnešní datum před 14:30...")
# Pro tento test předpokládáme, že čas je před 14:30
# Tento test může být složitější na automatizaci, protože závisí na aktuálním čase
# Pro jednoduchost jej provedeme pouze pokud je to relevantní
today = datetime.now()
if today.time() < datetime.strptime("14:30", "%H:%M").time():
today_str = today.strftime("%d.%m.%Y")
rate = rate_finder.get_rate_for_date(today_str, "USD")
assert rate is None, "Mělo by vrátit None pro dnešní datum před 14:30"
print("Test pro dnešní datum před 14:30: OK")
else:
print("Test pro dnešní datum před 14:30: Přeskočeno (čas je po 14:30)")
def test_weekend_with_previous_workday():
"""Test vyhledání kurzu pro víkend s předchozím pracovním dnem."""
print("Test: Vyhledání kurzu pro víkend...")
# 11.08.2025 je pondělí, 10.08.2025 je neděle
# Otestujeme, zda pro neděli vrátí kurz z pondělí
# Nejprve vložíme testovací kurz pro pondělí
database.init_db()
database.insert_rate("11.08.2025", "TEST", 1, 25.0)
rate = rate_finder.get_rate_for_date("10.08.2025", "TEST")
# Očekáváme, že vrátí kurz z 11.08.2025, ale protože logika hledá zpět,
# měl by najít kurz z předchozího pracovního dne, který je 08.08.2025 (pátek)
# Nicméně v naší testovací databázi máme jen kurz z 11.08.2025
# Takže tento test by měl selhat, pokud není správně implementována logika.
# Pro správný test bychom museli mít data v databázi.
# Upravíme test tak, že vložíme kurz pro 08.08.2025 a otestujeme proti němu.
# Vložíme kurz pro 08.08.2025
database.insert_rate("08.08.2025", "TEST", 1, 24.5)
# 10.08.2025 je neděle, předchozí pracovní den je 08.08.2025
rate = rate_finder.get_rate_for_date("10.08.2025", "TEST")
assert rate == 24.5, f"Očekáváno 24.5, ale vráceno {rate}"
print("Test pro víkend: OK")
def run_all_tests():
"""Spustí všechny testy."""
print("Spouštím testy modulu rate_finder.py...")
test_future_date()
test_today_before_1430()
test_weekend_with_previous_workday()
print("\nVšechny testy modulu rate_finder.py byly úspěšné!")
if __name__ == "__main__":
run_all_tests()