tests: Add test for trying to make outgoing report without rt-id.
Changes to other test cases are to make them *not* trip up this error after adding it to the books.
This commit is contained in:
		
							parent
							
								
									d3e0a38073
								
							
						
					
					
						commit
						3a0b85c8f0
					
				
					 2 changed files with 17 additions and 10 deletions
				
			
		| 
						 | 
					@ -38,8 +38,7 @@
 | 
				
			||||||
  Expenses:Services:Legal  200.00 USD
 | 
					  Expenses:Services:Legal  200.00 USD
 | 
				
			||||||
  Liabilities:Payable:Accounts  -200.00 USD
 | 
					  Liabilities:Payable:Accounts  -200.00 USD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2020-05-15 * "DonorB" "Donation pledge"
 | 
					2020-05-15 * "MatchingProgram" "May matched donations"
 | 
				
			||||||
  rt-id: "rt://ticket/515"
 | 
					 | 
				
			||||||
  invoice: "rt://ticket/515/attachments/5150"
 | 
					  invoice: "rt://ticket/515/attachments/5150"
 | 
				
			||||||
  approval: "rt://ticket/515/attachments/5140"
 | 
					  approval: "rt://ticket/515/attachments/5140"
 | 
				
			||||||
  Income:Donations  -1500.00 USD
 | 
					  Income:Donations  -1500.00 USD
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,6 +18,7 @@ import collections
 | 
				
			||||||
import copy
 | 
					import copy
 | 
				
			||||||
import io
 | 
					import io
 | 
				
			||||||
import itertools
 | 
					import itertools
 | 
				
			||||||
 | 
					import logging
 | 
				
			||||||
import re
 | 
					import re
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import pytest
 | 
					import pytest
 | 
				
			||||||
| 
						 | 
					@ -161,8 +162,8 @@ def test_search_term_parse_regexp_escaping(search, unmatched):
 | 
				
			||||||
    ([], ACCRUALS_COUNT, lambda post: post.account.is_under(
 | 
					    ([], ACCRUALS_COUNT, lambda post: post.account.is_under(
 | 
				
			||||||
        'Assets:Receivable:', 'Liabilities:Payable:',
 | 
					        'Assets:Receivable:', 'Liabilities:Payable:',
 | 
				
			||||||
    )),
 | 
					    )),
 | 
				
			||||||
    ([('invoice', '^rt:505/5050$')], 2, lambda post: post.meta['entity'] == 'DonorA'),
 | 
					    ([('rt-id', '^rt:505$')], 2, lambda post: post.meta['entity'] == 'DonorA'),
 | 
				
			||||||
    ([('rt-id', r'^rt:\D+515$')], 1, lambda post: post.meta['entity'] == 'DonorB'),
 | 
					    ([('invoice', r'^rt:\D+515/')], 1, lambda post: post.meta['entity'] == 'MatchingProgram'),
 | 
				
			||||||
    ([('entity', '^Lawyer$')], 3, lambda post: post.meta['rt-id'] == 'rt:510'),
 | 
					    ([('entity', '^Lawyer$')], 3, lambda post: post.meta['rt-id'] == 'rt:510'),
 | 
				
			||||||
    ([('entity', '^Lawyer$'), ('contract', '^rt:510/')], 2,
 | 
					    ([('entity', '^Lawyer$'), ('contract', '^rt:510/')], 2,
 | 
				
			||||||
     lambda post: post.meta['invoice'].startswith('rt:510/')),
 | 
					     lambda post: post.meta['invoice'].startswith('rt:510/')),
 | 
				
			||||||
| 
						 | 
					@ -324,6 +325,16 @@ def test_outgoing_report_fx_amounts(accrual_postings, caplog):
 | 
				
			||||||
        r'^TOTAL TO PAY: 1,000\.00 EUR \(\$1,100.00\)$',
 | 
					        r'^TOTAL TO PAY: 1,000\.00 EUR \(\$1,100.00\)$',
 | 
				
			||||||
    ])
 | 
					    ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_outgoing_report_without_rt_id(accrual_postings, caplog):
 | 
				
			||||||
 | 
					    invoice = 'rt://ticket/515/attachments/5150'
 | 
				
			||||||
 | 
					    output = run_outgoing(invoice, accrual_postings)
 | 
				
			||||||
 | 
					    assert caplog.records
 | 
				
			||||||
 | 
					    log = caplog.records[0]
 | 
				
			||||||
 | 
					    assert log.message.startswith(
 | 
				
			||||||
 | 
					        f"can't generate outgoings report for {invoice} because no RT ticket available:",
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    assert not output.getvalue()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def run_main(arglist, config=None):
 | 
					def run_main(arglist, config=None):
 | 
				
			||||||
    if config is None:
 | 
					    if config is None:
 | 
				
			||||||
        config = testutil.TestConfig(
 | 
					        config = testutil.TestConfig(
 | 
				
			||||||
| 
						 | 
					@ -343,9 +354,8 @@ def check_main_fails(arglist, config, error_flags, error_patterns):
 | 
				
			||||||
    assert not output.getvalue()
 | 
					    assert not output.getvalue()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.mark.parametrize('arglist', [
 | 
					@pytest.mark.parametrize('arglist', [
 | 
				
			||||||
    ['--report-type=balance'],
 | 
					    ['--report-type=balance', 'entity=EarlyBird'],
 | 
				
			||||||
    ['--report-type=outgoing'],
 | 
					    ['--report-type=outgoing', 'entity=EarlyBird'],
 | 
				
			||||||
    ['entity=EarlyBird'],
 | 
					 | 
				
			||||||
])
 | 
					])
 | 
				
			||||||
def test_output_excludes_payments(arglist):
 | 
					def test_output_excludes_payments(arglist):
 | 
				
			||||||
    retcode, output, errors = run_main(arglist)
 | 
					    retcode, output, errors = run_main(arglist)
 | 
				
			||||||
| 
						 | 
					@ -369,7 +379,6 @@ def test_output_payments_when_only_match(arglist, expect_invoice):
 | 
				
			||||||
    ])
 | 
					    ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.mark.parametrize('arglist', [
 | 
					@pytest.mark.parametrize('arglist', [
 | 
				
			||||||
    ['--report-type=outgoing'],
 | 
					 | 
				
			||||||
    ['510'],
 | 
					    ['510'],
 | 
				
			||||||
    ['510/6100'],
 | 
					    ['510/6100'],
 | 
				
			||||||
    ['entity=Lawyer'],
 | 
					    ['entity=Lawyer'],
 | 
				
			||||||
| 
						 | 
					@ -390,9 +399,8 @@ def test_main_outgoing_report(arglist):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.mark.parametrize('arglist', [
 | 
					@pytest.mark.parametrize('arglist', [
 | 
				
			||||||
    ['-t', 'balance'],
 | 
					    ['-t', 'balance'],
 | 
				
			||||||
    ['515'],
 | 
					 | 
				
			||||||
    ['515/5150'],
 | 
					    ['515/5150'],
 | 
				
			||||||
    ['entity=DonorB'],
 | 
					    ['entity=MatchingProgram'],
 | 
				
			||||||
])
 | 
					])
 | 
				
			||||||
def test_main_balance_report(arglist):
 | 
					def test_main_balance_report(arglist):
 | 
				
			||||||
    retcode, output, errors = run_main(arglist)
 | 
					    retcode, output, errors = run_main(arglist)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue