@@ -135,6 +135,61 @@ def test_iter_with_balance_credit_card(credit_card_cycle):
def test_iter_with_balance_two_acccruals(two_accruals_three_payments):
check_iter_with_balance(two_accruals_three_payments)
def test_balance_at_cost_mixed():
txn = testutil.Transaction(postings=[
('Expenses:Other', '22'),
('Expenses:Other', '30', 'EUR', ('1.1',)),
('Expenses:Other', '40', 'EUR'),
('Expenses:Other', '50', 'USD', ('1.1', 'EUR')),
])
related = core.RelatedPostings(data.Posting.from_txn(txn))
balance = related.balance_at_cost()
amounts = set(balance.values())
assert amounts == {testutil.Amount(55, 'USD'), testutil.Amount(95, 'EUR')}
def test_balance_at_single_currency_cost():
('Expenses:Other', '40', 'GBP', ('1.1',)),
assert amounts == {testutil.Amount(99)}
def test_balance_at_cost_zeroed_out():
('Income:Other', '-22'),
('Assets:Receivable:Accounts', '20', 'EUR', ('1.1',)),
assert balance.is_zero()
def test_balance_at_cost_singleton():
assert amounts == {testutil.Amount(22)}
def test_balance_at_cost_singleton_without_cost():
('Assets:Receivable:Accounts', '20'),
assert amounts == {testutil.Amount(20)}
def test_balance_at_cost_empty():
related = core.RelatedPostings()
def test_meta_values_empty():
assert related.meta_values('key') == set()