data-xexe/tests/tests_unit/test_utils.py
2024-06-11 18:35:48 +02:00

49 lines
1.5 KiB
Python

import datetime
import pytest
from money.currency import Currency
from xexe.utils import DateRange, generate_currency_and_dates_combinations
def test_date_range_breaks_with_reversed_dates():
with pytest.raises(ValueError):
DateRange(
start_date=datetime.date(year=2024, month=1, day=3),
end_date=datetime.date(year=2024, month=1, day=1),
)
def test_date_range_generates_proper_dates_when_itered():
a_range = DateRange(
start_date=datetime.date(year=2024, month=1, day=1),
end_date=datetime.date(year=2024, month=1, day=3),
)
dates = [a_date for a_date in a_range]
assert dates[0] == datetime.date(year=2024, month=1, day=1)
assert dates[1] == datetime.date(year=2024, month=1, day=2)
assert dates[-1] == datetime.date(year=2024, month=1, day=3)
assert len(dates) == 3
def generate_currency_and_dates_combinations_outputs_correctly():
date_range = DateRange(
start_date=datetime.date(year=2024, month=1, day=1),
end_date=datetime.date(year=2024, month=1, day=3),
)
currencies = {Currency.USD, Currency.EUR, Currency.GBP}
combinations = generate_currency_and_dates_combinations(
currencies=currencies, date_range=date_range
)
assert len(combinations) == 9
assert len({date for date in combinations["date"]}) == 3
assert len({currency for currency in combinations["from_currency"]}) == 3
assert len({currency for currency in combinations["to_currency"]}) == 3