@@ -118,6 +118,30 @@ def test_url_default_filename(new_client, mimetype, extension):
expected = '{}Ticket/Attachment/9/9/RT1%20attachment%209.{}'.format(DEFAULT_RT_URL, extension)
assert rt.url(1, 9) == expected
@pytest.mark.parametrize('rt_fmt,nonrt_fmt,missing_fmt', [
('{}', '{}', '{}',),
('<{}>', '[{}]', '({})'),
])
def test_iter_urls(rt, rt_fmt, nonrt_fmt, missing_fmt):
expected_map = {
'rt:{}{}'.format(tid, '' if aid is None else f'/{aid}'): url
for tid, aid, url in EXPECTED_URLS
}
expected_map['https://example.com'] = None
expected_map['invoice.pdf'] = None
keys = list(expected_map)
urls = rt.iter_urls(keys, rt_fmt, nonrt_fmt, missing_fmt)
for key, actual in itertools.zip_longest(keys, urls):
expected = expected_map[key]
if expected is None:
if key.startswith('rt:'):
expected = missing_fmt.format(key)
else:
expected = nonrt_fmt.format(key)
expected = rt_fmt.format(DEFAULT_RT_URL + expected)
assert actual == expected
@pytest.mark.parametrize('ticket_id,attachment_id,expected', EXPECTED_URLS)
def test_exists(rt, ticket_id, attachment_id, expected):
expected = False if expected is None else True
@@ -239,3 +263,21 @@ def test_txn_with_urls(rt):
assert txn.meta[key] == expected
assert txn.postings[0].meta['receipt'] == 'rt:2/13 donation.txt'
assert txn.postings[1].meta['receipt'] == 'cash.png rt:2/14'
def test_txn_with_urls_with_fmts(rt):
txn_meta = {
'rt-id': 'rt:1',
'contract': 'RepoLink.pdf',
'statement': 'rt:1/99 rt:1/4 stmt.txt',
txn = testutil.Transaction(**txn_meta)
actual = rt.txn_with_urls(txn, '<{}>', '[{}]', '({})')
rt_id_path = EXPECTED_URLS_MAP[(1, None)]
assert actual.meta['rt-id'] == f'<{DEFAULT_RT_URL}{rt_id_path}>'
assert actual.meta['contract'] == '[RepoLink.pdf]'
statement_path = EXPECTED_URLS_MAP[(1, 4)]
assert actual.meta['statement'] == ' '.join([
'(rt:1/99)',
f'<{DEFAULT_RT_URL}{statement_path}>',
'[stmt.txt]',