|
@@ -0,0 +1,39 @@
|
|
|
+import pytest
|
|
|
+
|
|
|
+import finoex
|
|
|
+import ioex.calcex
|
|
|
+
|
|
|
+
|
|
|
+def get_item_a(currency='EUR'):
|
|
|
+ return finoex.Item(
|
|
|
+ name='a',
|
|
|
+ price_brutto=finoex.Sum(2.0, currency),
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+def get_item_b():
|
|
|
+ return finoex.Item(
|
|
|
+ name='b',
|
|
|
+ price_brutto=finoex.Sum(3.0, 'EUR'),
|
|
|
+ sub_items=[get_item_a(), get_item_a()],
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize(('items', 'expected_total'), [
|
|
|
+ [[], 0],
|
|
|
+ [[get_item_a()], finoex.Sum(2.0, 'EUR')],
|
|
|
+ [[get_item_b()], finoex.Sum(7.0, 'EUR')],
|
|
|
+ [[get_item_a(), get_item_b()], finoex.Sum(9.0, 'EUR')],
|
|
|
+])
|
|
|
+def test_get_items_total_price_brutto(items, expected_total):
|
|
|
+ c = finoex._ItemCollection(items=items)
|
|
|
+ assert expected_total == c.items_total_price_brutto
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize(('items'), [
|
|
|
+ [get_item_a(currency='EUR'), get_item_a(currency='USD')],
|
|
|
+])
|
|
|
+def test_get_items_total_price_brutto_fail(items):
|
|
|
+ c = finoex._ItemCollection(items=items)
|
|
|
+ with pytest.raises(ioex.calcex.UnitMismatchError):
|
|
|
+ c.items_total_price_brutto
|