diff --git a/tests/test_data_account.py b/tests/test_data_account.py index 5c312eb254e1285763e12d5e9979056c529047a1..3b92fcde6de1c214858452c16dfdd48203c2360c 100644 --- a/tests/test_data_account.py +++ b/tests/test_data_account.py @@ -21,6 +21,7 @@ from . import testutil from datetime import date as Date from beancount.core.data import Open, Close, Booking +from beancount.parser import options as bc_options from conservancy_beancount import data @@ -267,3 +268,48 @@ def test_load_openings_and_closings(clean_account_meta): check_account_meta('Income:Donations', entries[0]) check_account_meta('Income:Other', entries[1]) check_account_meta('Assets:Checking', entries[2], entries[-1]) + +@pytest.mark.parametrize('account_s', [ + 'Assets:Bank:Checking', + 'Equity:Funds:Restricted', + 'Expenses:Other', + 'Income:Donations', + 'Liabilities:CreditCard:Visa', +]) +def test_is_account(account_s): + assert data.Account.is_account(account_s) + +@pytest.mark.parametrize('account_s', [ + 'Assets:Bank:12-345', + 'Equity:Funds:Restricted', + 'Expenses:Other', + 'Income:Donations', + 'Liabilities:CreditCard:Visa0123', +]) +def test_is_account(clean_account_meta, account_s): + assert data.Account.is_account(account_s) + +@pytest.mark.parametrize('account_s', [ + 'Assets:checking', + 'Assets::Cash', + 'Equity', + 'Liabilities:Credit Card', + 'income:Donations', + 'Expenses:Banking_Fees', + 'Revenue:Grants', +]) +def test_is_not_account(clean_account_meta, account_s): + assert not data.Account.is_account(account_s) + +@pytest.mark.parametrize('account_s,expected', [ + ('Revenue:Donations', True), + ('Costs:Other', True), + ('Income:Donations', False), + ('Expenses:Other', False), +]) +def test_is_account_respects_configured_roots(clean_account_meta, account_s, expected): + config = bc_options.OPTIONS_DEFAULTS.copy() + config['name_expenses'] = 'Costs' + config['name_income'] = 'Revenue' + data.Account.load_options_map(config) + assert data.Account.is_account(account_s) == expected