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