more methods and tests

This commit is contained in:
Pablo Martin 2024-06-12 00:44:30 +02:00
parent aec65e5364
commit d382c332e3
2 changed files with 145 additions and 12 deletions

View file

@ -4,7 +4,12 @@ from decimal import Decimal
from money.currency import Currency
from money.money import Money
from xexe.exchange_rates import ExchangeRate, ExchangeRates, add_equal_rates
from xexe.exchange_rates import (
ExchangeRate,
ExchangeRates,
add_equal_rates,
add_inverse_rates,
)
def test_exchange_rate_creation_works():
@ -124,6 +129,26 @@ def test_present_dates_works_fine():
}
def test_exchange_rates_is_rate_present_method_works_fine():
a_rate = ExchangeRate(
from_currency=Currency.USD,
to_currency=Currency.EUR,
rate=Decimal("1.2"),
rate_date=datetime.date(2020, 3, 10),
)
another_rate = ExchangeRate(
from_currency=Currency.GBP,
to_currency=Currency.JPY,
rate=Decimal("10"),
rate_date=datetime.date(2019, 10, 3),
)
rates = ExchangeRates({a_rate})
assert rates.is_rate_present(a_rate)
assert not rates.is_rate_present(another_rate)
def test_add_equal_rates_returns_expected_values():
a_rate = ExchangeRate(
from_currency=Currency.USD,
@ -170,3 +195,73 @@ def test_add_equal_rates_runs_on_empty_rates():
empty_rates = add_equal_rates(empty_rates)
assert True
def test_add_equal_rates_overwrites():
a_rate = ExchangeRate(
from_currency=Currency.USD,
to_currency=Currency.USD,
rate=Decimal("1.2"),
rate_date=datetime.date(2020, 3, 10),
)
rates = ExchangeRates([a_rate])
assert len(rates) == 1
rates = add_equal_rates(rates, overwrite=True)
assert len(rates) == 1
assert list(rates)[0].amount == 1
def test_add_equal_rates_does_not_overwrite():
a_rate = ExchangeRate(
from_currency=Currency.USD,
to_currency=Currency.USD,
rate=Decimal("1.2"),
rate_date=datetime.date(2020, 3, 10),
)
rates = ExchangeRates([a_rate])
assert len(rates) == 1
rates = add_equal_rates(rates, overwrite=False)
assert len(rates) == 1
assert list(rates)[0].amount == Decimal("1.2")
def test_add_inverse_rates_returns_expected():
a_rate = ExchangeRate(
from_currency=Currency.EUR,
to_currency=Currency.USD,
rate=Decimal("1.25"),
rate_date=datetime.date(2020, 3, 10),
)
inverse_rate = ExchangeRate(
from_currency=Currency.USD,
to_currency=Currency.EUR,
rate=Decimal("0.8"),
rate_date=datetime.date(2020, 3, 10),
)
rates = ExchangeRates([a_rate])
assert len(rates) == 1
rates = add_inverse_rates(rates)
assert len(rates) == 2
assert rates.is_rate_present(inverse_rate)
assert rates[inverse_rate.descriptor].amount == Decimal("0.8")
def test_add_inverse_rates_runs_on_empty_rates():
empty_rates = ExchangeRates()
empty_rates = add_inverse_rates(empty_rates)
assert True