@@ -38,6 +38,9 @@ INVALID_VALUES = {
}
TEST_KEY = 'expense-type'
PROJECT_KEY = 'project'
UNRESTRICTED_FUND = 'Conservancy'
RESTRICTED_FUND = 'Alpha'
@pytest.fixture(scope='module')
def hook():
@@ -102,21 +105,40 @@ def test_non_expense_accounts_skipped(hook, account):
assert not errors
testutil.check_post_meta(txn, None, meta)
@pytest.mark.parametrize('account,set_value', [
('Expenses:Services:Accounting', 'management'),
('Expenses:Services:Administration', 'management'),
('Expenses:Services:Advocacy', 'program'),
('Expenses:Services:Development', 'program'),
('Expenses:Services:Fundraising', 'fundraising'),
@pytest.mark.parametrize('account,exp_unrestricted,exp_restricted', [
('Expenses:Accounting', 'management', 'management'),
('Expenses:BadDebt', 'management', 'program'),
('Expenses:BankingFees', 'management', 'management'),
('Expenses:ComputerEquipment', 'management', 'program'),
('Expenses:Fines', 'management', 'program'),
('Expenses:FilingFees', 'management', 'program'),
('Expenses:Hosting', 'management', 'program'),
('Expenses:Insurance', 'management', 'management'),
('Expenses:Office', 'management', 'program'),
('Expenses:Other', 'management', 'program'),
('Expenses:Phones', 'management', 'program'),
('Expenses:Postage', 'management', 'program'),
('Expenses:ProfessionalMemberships', 'management', 'program'),
('Expenses:Services:Accounting', 'management', 'management'),
('Expenses:Services:Administration', 'management', 'management'),
('Expenses:Services:Advocacy', 'program', 'program'),
('Expenses:Services:Development', 'program', 'program'),
('Expenses:Services:Fundraising', 'fundraising', 'fundraising'),
('Expenses:Travel', 'management', 'management'),
])
def test_default_values(hook, account, set_value):
def test_default_values(hook, account, exp_unrestricted, exp_restricted):
txn = testutil.Transaction(postings=[
('Liabilites:CreditCard', -25),
(account, 25),
(account, 20, {PROJECT_KEY: UNRESTRICTED_FUND}),
(account, 5, {PROJECT_KEY: RESTRICTED_FUND}),
errors = list(hook.run(txn))
testutil.check_post_meta(txn, None, {TEST_KEY: set_value})
testutil.check_post_meta(
txn, None,
{TEST_KEY: exp_unrestricted, PROJECT_KEY: UNRESTRICTED_FUND},
{TEST_KEY: exp_restricted, PROJECT_KEY: RESTRICTED_FUND},
)
@pytest.mark.parametrize('date,set_value', [
(testutil.EXTREME_FUTURE_DATE, None),