From eac16b53ba399420ecbf15bb2a53d78ce5ebf51e Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Thu, 27 Jun 2024 16:55:43 +0200 Subject: [PATCH] add tests for money amount --- tests/tests_unit/test_money_amount.py | 49 +++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/tests_unit/test_money_amount.py diff --git a/tests/tests_unit/test_money_amount.py b/tests/tests_unit/test_money_amount.py new file mode 100644 index 0000000..ee1538c --- /dev/null +++ b/tests/tests_unit/test_money_amount.py @@ -0,0 +1,49 @@ +from decimal import Decimal + +import pytest +from money.currency import Currency + +from xexe.money_amount import MoneyAmount + + +def test_money_amount_simple_creation_works(): + + an_amount = MoneyAmount(amount=10, currency=Currency.USD) + + assert an_amount.amount == 10 + assert an_amount.currency == Currency.USD + + +def test_money_amount_takes_integer_amounts(): + an_amount = MoneyAmount(amount=10, currency=Currency.USD) + + assert an_amount.amount == 10 + + +def test_money_amount_takes_decimal_amounts(): + an_amount = MoneyAmount(amount=Decimal(10.5), currency=Currency.USD) + + assert an_amount.amount == Decimal(10.5) + + +def test_money_amount_takes_proper_strings_amounts(): + an_amount = MoneyAmount(amount="10.55", currency=Currency.USD) + + assert an_amount.amount == Decimal(10.55) + + +def test_money_amount_fails_with_ugly_strings(): + with pytest.raises(ValueError): + MoneyAmount(amount="not a nuuuuumber", currency=Currency.USD) + + +def test_money_amount_takes_string_for_currency(): + an_amount = MoneyAmount(amount="10.55", currency="USD") + + assert an_amount.currency == Currency.USD + + +def test_money_amount_works_with_8_decimal_positions(): + an_amount = MoneyAmount(amount="1.12345678", currency="USD") + + assert an_amount == Decimal(1.12345678)