Changeset - 13df0390a19b
[Not reviewed]
0 1 0
Brett Smith - 4 years ago 2020-05-23 12:49:20
brettcsmith@brettcsmith.org
tests: Generate configuration in accrual-report tests.

Usually reduces the amount of testing boilerplate.
1 file changed with 10 insertions and 16 deletions:
0 comments (0 inline, 0 general)
tests/test_reports_accrual.py
Show inline comments
...
 
@@ -343,13 +343,18 @@ def test_outgoing_report_custom_field_fallbacks(accrual_postings):
 
        r'^PAYMENT FOR APPROVAL:$',
 
        r'^REQUESTOR: <mx510@example\.org>$',
 
        r'^PAYMENT TO:\s*$',
 
        r'^PAYMENT METHOD:\s*$',
 
    ])
 

	
 
def run_main(arglist, config):
 
def run_main(arglist, config=None):
 
    if config is None:
 
        config = testutil.TestConfig(
 
            books_path=testutil.test_path('books/accruals.beancount'),
 
            rt_client=RTClient(),
 
        )
 
    output = io.StringIO()
 
    errors = io.StringIO()
 
    retcode = accrual.main(arglist, output, errors, config)
 
    return retcode, output, errors
 

	
 
def check_main_fails(arglist, config, error_flags, error_patterns):
...
 
@@ -363,21 +368,16 @@ def check_main_fails(arglist, config, error_flags, error_patterns):
 
    ['--report-type=outgoing'],
 
    ['510'],
 
    ['510/6100'],
 
    ['entity=Lawyer'],
 
])
 
def test_main_outgoing_report(arglist):
 
    rt_client = RTClient()
 
    config = testutil.TestConfig(
 
        books_path=testutil.test_path('books/accruals.beancount'),
 
        rt_client=rt_client,
 
    )
 
    retcode, output, errors = run_main(arglist, config)
 
    retcode, output, errors = run_main(arglist)
 
    assert not errors.getvalue()
 
    assert retcode == 0
 
    rt_url = rt_client.DEFAULT_URL[:-9]
 
    rt_url = RTClient.DEFAULT_URL[:-9]
 
    rt_id_url = re.escape(f'<{rt_url}Ticket/Display.html?id=510>')
 
    contract_url = re.escape(f'<{rt_url}Ticket/Attachment/4000/4000/contract.pdf>')
 
    check_output(output, [
 
        r'^REQUESTOR: Mx\. 510 <mx510@example\.org>$',
 
        r'^TOTAL TO PAY: 280\.00 USD$',
 
        r'^\s*2020-06-12\s',
...
 
@@ -388,16 +388,13 @@ def test_main_outgoing_report(arglist):
 
    ['-t', 'balance'],
 
    ['515'],
 
    ['515/5150'],
 
    ['entity=DonorB'],
 
])
 
def test_main_balance_report(arglist):
 
    config = testutil.TestConfig(
 
        books_path=testutil.test_path('books/accruals.beancount'),
 
    )
 
    retcode, output, errors = run_main(arglist, config)
 
    retcode, output, errors = run_main(arglist)
 
    assert not errors.getvalue()
 
    assert retcode == 0
 
    check_output(output, [
 
        r'\brt://ticket/515/attachments/5150:$',
 
        r'^\s+1500\.00 USD outstanding since 2020-05-15$',
 
    ])
...
 
@@ -410,16 +407,13 @@ def test_main_no_books():
 
@pytest.mark.parametrize('arglist', [
 
    ['499'],
 
    ['505/99999'],
 
    ['entity=NonExistent'],
 
])
 
def test_main_no_matches(arglist):
 
    config = testutil.TestConfig(
 
        books_path=testutil.test_path('books/accruals.beancount'),
 
    )
 
    check_main_fails(arglist, config, 8, [
 
    check_main_fails(arglist, None, 8, [
 
        r'^warning: no matching entries found to report$',
 
    ])
 

	
 
def test_main_no_rt():
 
    config = testutil.TestConfig(
 
        books_path=testutil.test_path('books/accruals.beancount'),
0 comments (0 inline, 0 general)