Files
@ 45bc99e9acc4
Branch filter:
Location: NPO-Accounting/conservancy_beancount/tests/test_reports_period_postings.py - annotation
45bc99e9acc4
2.3 KiB
text/x-python
Add colorama dependency
Used by statement reconciler.
Used by statement reconciler.
6213bc1e5da9 6213bc1e5da9 1b7fdf4f3b00 6213bc1e5da9 1b7fdf4f3b00 1b7fdf4f3b00 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 6213bc1e5da9 | """test_reports_period_postings - Unit tests for PeriodPostings"""
# 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.
import datetime
import operator
from decimal import Decimal
import pytest
from . import testutil
from conservancy_beancount import data
from conservancy_beancount.reports import core
def check_balance_attrs(balance_postings, start_usd, stop_usd):
if start_usd:
expected = {'USD': testutil.Amount(start_usd)}
assert balance_postings.start_bal == expected
assert balance_postings.begin_bal == expected
else:
assert balance_postings.start_bal.is_zero()
assert balance_postings.begin_bal.is_zero()
expected = {'USD': testutil.Amount(stop_usd)}
assert balance_postings.stop_bal == expected
assert balance_postings.end_bal == expected
expected = {'USD': testutil.Amount(stop_usd - start_usd)}
assert balance_postings.period_bal == expected
@pytest.mark.parametrize('start_date,expect_start_bal', [
(datetime.date(2019, 2, 1), 0),
(datetime.date(2019, 4, 1), 30),
(datetime.date(2019, 6, 1), 120),
])
def test_balance_postings_attrs(start_date, expect_start_bal):
entries = [testutil.Transaction(date=datetime.date(2019, n, 15), postings=[
('Income:Donations', -n * 10),
('Assets:Cash', n * 10),
]) for n in range(3, 7)]
cls = core.PeriodPostings.with_start_date(start_date)
actual = dict(cls.group_by_account(data.Posting.from_entries(entries)))
assert len(actual) == 2
check_balance_attrs(actual['Assets:Cash'], expect_start_bal, 180)
check_balance_attrs(actual['Income:Donations'], -expect_start_bal, -180)
@pytest.mark.parametrize('start_date,expect_count', [
(datetime.date(2019, 2, 1), 4),
(datetime.date(2019, 4, 1), 3),
(datetime.date(2019, 6, 1), 1),
])
def test_balance_postings_filter(start_date, expect_count):
entries = [testutil.Transaction(date=datetime.date(2019, n, 15), postings=[
('Income:Donations', -n * 10),
('Assets:Cash', n * 10),
]) for n in range(3, 7)]
cls = core.PeriodPostings.with_start_date(start_date)
for _, related in cls.group_by_account(data.Posting.from_entries(entries)):
assert len(related) == expect_count
|