Files
@ ab9c65d20dc5
Branch filter:
Location: NPO-Accounting/import2ledger/tests/test_templates.py - annotation
ab9c65d20dc5
2.5 KiB
text/x-python
import2ledger: Support only importing entries in a date range.
5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe | import configparser
import datetime
import decimal
import pathlib
import pytest
from import2ledger import template
from . import DATA_DIR, normalize_whitespace
DATE = datetime.date(2015, 3, 14)
config = configparser.ConfigParser(comment_prefixes='#')
with pathlib.Path(DATA_DIR, 'templates.ini').open() as conffile:
config.read_file(conffile)
def template_from(section_name, *args, **kwargs):
return template.Template(config[section_name]['template'], *args, **kwargs)
def assert_easy_render(tmpl, entity, amount, currency, expect_date, expect_amt):
rendered = tmpl.render(entity, decimal.Decimal(amount), currency, DATE)
lines = [normalize_whitespace(s) for s in rendered.splitlines()]
assert lines == [
"",
"{} {}".format(expect_date, entity),
" Accrued:Accounts Receivable " + expect_amt,
" Income:Donations " + expect_amt.replace(amount, "-" + amount),
]
def test_easy_template():
tmpl = template_from('Simplest')
assert_easy_render(tmpl, 'JJ', '5.99', 'CAD', '2015/03/14', '5.99 CAD')
def test_date_formatting():
tmpl = template_from('Simplest', date_fmt='%Y-%m-%d')
assert_easy_render(tmpl, 'KK', '6.99', 'CAD', '2015-03-14', '6.99 CAD')
def test_currency_formatting():
tmpl = template_from('Simplest', signed_currencies=['USD'])
assert_easy_render(tmpl, 'CC', '7.99', 'USD', '2015/03/14', '$7.99')
def test_complex_template():
template_vars = {
'entity': 'T-T',
'txid': 'ABCDEF',
}
tmpl = template_from('Complex', date_fmt='%Y-%m-%d', signed_currencies=['USD'])
rendered = tmpl.render('TT', decimal.Decimal('125.50'), 'USD', DATE, **template_vars)
lines = [normalize_whitespace(s) for s in rendered.splitlines()]
assert lines == [
"",
"2015-03-14 TT",
" ;Tag: Value",
" ;TransactionID: ABCDEF",
" Accrued:Accounts Receivable $125.50",
" ;Entity: Supplier",
" Income:Donations:Specific $-119.85",
" ;Program: Specific",
" ;Entity: T-T",
" Income:Donations:General $-5.65",
" ;Entity: T-T",
]
def test_balancing():
tmpl = template_from('FiftyFifty')
rendered = tmpl.render('FF', decimal.Decimal('1.01'), 'USD', DATE)
lines = [normalize_whitespace(s) for s in rendered.splitlines()]
assert lines == [
"",
"2015/03/14 FF",
" Accrued:Accounts Receivable 1.01 USD",
" Income:Donations -0.50 USD",
" Income:Sales -0.51 USD",
]
|