diff --git a/tests/test_reports_ledger.py b/tests/test_reports_ledger.py index 1613424ba7bc0c6b49c9a1fc125fd60841a863e5..34559dab2552d352d2d2dcd909523264b7600a97 100644 --- a/tests/test_reports_ledger.py +++ b/tests/test_reports_ledger.py @@ -15,6 +15,7 @@ # along with this program. If not, see . import collections +import contextlib import copy import datetime import io @@ -33,6 +34,8 @@ from conservancy_beancount import data from conservancy_beancount.reports import core from conservancy_beancount.reports import ledger +clean_account_meta = contextlib.contextmanager(testutil.clean_account_meta) + Acct = data.Account _ledger_load = bc_loader.load_file(testutil.test_path('books/ledger.beancount')) @@ -43,19 +46,11 @@ DEFAULT_REPORT_SHEETS = [ 'Equity', 'Assets:Receivable', 'Liabilities:Payable', - 'Assets:PayPal', 'Assets', 'Liabilities', ] -PROJECT_REPORT_SHEETS = [ - 'Balance', - 'Income', - 'Expenses', - 'Assets:Receivable', - 'Assets:Prepaid', - 'Liabilities:UnearnedIncome', - 'Liabilities:Payable', -] +PROJECT_REPORT_SHEETS = DEFAULT_REPORT_SHEETS[:6] +del PROJECT_REPORT_SHEETS[3] OVERSIZE_RE = re.compile( r'^([A-Za-z0-9:]+) has ([0-9,]+) rows, over size ([0-9,]+)$' ) @@ -275,7 +270,8 @@ def run_main(arglist, config=None): arglist.insert(0, '--output-file=-') output = io.BytesIO() errors = io.StringIO() - retcode = ledger.main(arglist, output, errors, config) + with clean_account_meta(): + retcode = ledger.main(arglist, output, errors, config) output.seek(0) return retcode, output, errors @@ -292,6 +288,30 @@ def test_main(ledger_entries): for _, expected in ExpectedPostings.group_by_account(postings): expected.check_report(ods, START_DATE, STOP_DATE) +@pytest.mark.parametrize('acct_arg', [ + 'Liabilities', + 'Accounts payable', +]) +def test_main_account_limit(ledger_entries, acct_arg): + retcode, output, errors = run_main([ + '-a', acct_arg, + '-b', START_DATE.isoformat(), + '-e', STOP_DATE.isoformat(), + ]) + assert not errors.getvalue() + assert retcode == 0 + ods = odf.opendocument.load(output) + assert get_sheet_names(ods) == ['Balance', 'Liabilities'] + postings = data.Posting.from_entries(ledger_entries) + for account, expected in ExpectedPostings.group_by_account(postings): + should_find = account.startswith('Liabilities') + try: + expected.check_report(ods, START_DATE, STOP_DATE) + except NotFound: + assert not should_find + else: + assert should_find + @pytest.mark.parametrize('project,start_date,stop_date', [ ('eighteen', START_DATE, MID_DATE.replace(day=30)), ('nineteen', MID_DATE, STOP_DATE),