@@ -12,12 +12,14 @@
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
import contextlib
import itertools
import re
import pytest
from . import testutil
from conservancy_beancount import rtutil
@@ -59,12 +61,34 @@ def new_cache(database=':memory:'):
@pytest.mark.parametrize('ticket_id,attachment_id,expected', EXPECTED_URLS)
def test_url(rt, ticket_id, attachment_id, expected):
if expected is not None:
expected = DEFAULT_RT_URL + expected
assert rt.url(ticket_id, attachment_id) == expected
@pytest.mark.parametrize('attachment_id,first_link_only', itertools.product(
[245, None],
[True, False],
))
def test_metadata_regexp(rt, attachment_id, first_link_only):
if attachment_id is None:
match_links = ['rt:220', 'rt://ticket/220']
else:
match_links = [f'rt:220/{attachment_id}',
f'rt://ticket/220/attachments/{attachment_id}']
regexp = rt.metadata_regexp(220, attachment_id, first_link_only=first_link_only)
for link in match_links:
assert re.search(regexp, link)
assert re.search(regexp, link + ' link2')
assert re.search(regexp, link + '0') is None
assert re.search(regexp, 'a' + link) is None
end_match = re.search(regexp, 'link0 ' + link)
if first_link_only:
assert end_match is None
assert end_match
@pytest.mark.parametrize('attachment_id', [
13,
None,
])
def test_url_caches(new_client, attachment_id):