Files @ 5a8da108b983
Branch filter:

Location: NPO-Accounting/conservancy_beancount/tests/test_data_is_opening_balance_txn.py

bsturmfels
statement_reconciler: Add initial Chase bank CSV statement matching

We currently don't have many examples to work with, so haven't done any
significant testing of the matching accuracy between statement and books.
"""Test data.is_opening_balance_txn function"""
# Copyright © 2020  Brett Smith
# License: AGPLv3-or-later WITH Beancount-Plugin-Additional-Permission-1.0
#
# Full copyright and licensing details can be found at toplevel file
# LICENSE.txt in the repository.

from decimal import Decimal

import pytest

from . import testutil

from conservancy_beancount import data

def test_typical_opening():
    txn = testutil.OpeningBalance()
    assert data.is_opening_balance_txn(txn)

def test_multiacct_opening():
    txn = testutil.Transaction(postings=[
        ('Assets:Receivable:Accounts', 100),
        (next(testutil.OPENING_EQUITY_ACCOUNTS), -100),
        ('Liabilities:Payable:Accounts', -150),
        (next(testutil.OPENING_EQUITY_ACCOUNTS), 150),
    ])
    assert data.is_opening_balance_txn(txn)

def test_opening_with_fx():
    txn = testutil.OpeningBalance()
    equity_post = txn.postings[-1]
    txn.postings[-1] = equity_post._replace(
        units=testutil.Amount(equity_post.units.number * Decimal('.9'), 'EUR'),
        cost=testutil.Cost('1.11111'),
    )
    assert data.is_opening_balance_txn(txn)

@pytest.mark.parametrize('acct1,acct2,number', [
    ('Assets:Receivable:Accounts', 'Income:Donations', 100),
    ('Expenses:Other', 'Liabilities:Payable:Accounts', 200),
    ('Expenses:Other', 'Equity:Retained:Costs', 300),
    # Release from restriction
    ('Equity:Funds:Unrestricted', 'Equity:Funds:Restricted', 400),
    # Donation from project fund
    ('Equity:Funds:Restricted', 'Income:Donations', 500),
])
def test_not_opening_balance(acct1, acct2, number):
    txn = testutil.Transaction(postings=[
        (acct1, number),
        (acct2, -number),
    ])
    assert not data.is_opening_balance_txn(txn)