Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/common/test_templatetags.py
# Copyright (C) 2015-2018 The Software Heritage developers | # Copyright (C) 2015-2019 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU Affero General Public License version 3, or any later version | # License: GNU Affero General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import pytest | import pytest | ||||
from swh.web.common import swh_templatetags | from swh.web.common.swh_templatetags import ( | ||||
from swh.web.tests.testcase import WebTestCase | urlize_links_and_mails, urlize_header_links, safe_docstring_display | ||||
) | |||||
class SWHTemplateTagsTest(WebTestCase): | def test_urlize_api_links_api(): | ||||
def test_urlize_api_links_api(self): | |||||
# update api link with html links content with links | # update api link with html links content with links | ||||
content = '{"url": "/api/1/abc/"}' | content = '{"url": "/api/1/abc/"}' | ||||
expected_content = ('{"url": "<a href="/api/1/abc/">/api/1/abc/</a>"}') | expected_content = ('{"url": "<a href="/api/1/abc/">/api/1/abc/</a>"}') | ||||
self.assertEqual(swh_templatetags.urlize_links_and_mails(content), | assert urlize_links_and_mails(content) == expected_content | ||||
expected_content) | |||||
def test_urlize_api_links_browse(self): | |||||
def test_urlize_api_links_browse(): | |||||
# update /browse link with html links content with links | # update /browse link with html links content with links | ||||
content = '{"url": "/browse/def/"}' | content = '{"url": "/browse/def/"}' | ||||
expected_content = ('{"url": "<a href="/browse/def/">' | expected_content = ('{"url": "<a href="/browse/def/">' | ||||
'/browse/def/</a>"}') | '/browse/def/</a>"}') | ||||
self.assertEqual(swh_templatetags.urlize_links_and_mails(content), | assert urlize_links_and_mails(content) == expected_content | ||||
expected_content) | |||||
def test_urlize_header_links(self): | def test_urlize_header_links(): | ||||
# update api link with html links content with links | # update api link with html links content with links | ||||
content = """</api/1/abc/>; rel="next" | content = '</api/1/abc/>; rel="next"\n</api/1/def/>; rel="prev"' | ||||
</api/1/def/>; rel="prev" | |||||
""" | expected_content = ('<<a href="/api/1/abc/">/api/1/abc/</a>>; rel="next"\n' | ||||
expected_content = """<<a href="/api/1/abc/">/api/1/abc/</a>>; rel="next" | '<<a href="/api/1/def/">/api/1/def/</a>>; rel="prev"') | ||||
<<a href="/api/1/def/">/api/1/def/</a>>; rel="prev" | |||||
""" | assert urlize_header_links(content) == expected_content | ||||
self.assertEqual(swh_templatetags.urlize_header_links(content), | |||||
expected_content) | |||||
# remove deprecation warnings related to docutils | # remove deprecation warnings related to docutils | ||||
@pytest.mark.filterwarnings('ignore:.*U.*mode is deprecated:DeprecationWarning') # noqa | @pytest.mark.filterwarnings( | ||||
def test_safe_docstring_display(self): | 'ignore:.*U.*mode is deprecated:DeprecationWarning') | ||||
def test_safe_docstring_display(): | |||||
# update api link with html links content with links | # update api link with html links content with links | ||||
docstring = """This is my list header: | docstring = ( | ||||
'This is my list header:\n\n' | |||||
- Here is item 1, with a continuation | ' - Here is item 1, with a continuation\n' | ||||
line right here | ' line right here\n' | ||||
- Here is item 2 | ' - Here is item 2\n\n' | ||||
' Here is something that is not part of the list' | |||||
Here is something that is not part of the list""" | ) | ||||
expected_docstring = """<p>This is my list header:</p> | expected_docstring = ( | ||||
<ul class="docstring"> | '<p>This is my list header:</p>\n' | ||||
<li>Here is item 1, with a continuation | '<ul class="docstring">\n' | ||||
line right here</li> | '<li>Here is item 1, with a continuation\n' | ||||
<li>Here is item 2</li> | 'line right here</li>\n' | ||||
</ul> | '<li>Here is item 2</li>\n' | ||||
<p>Here is something that is not part of the list</p> | '</ul>\n' | ||||
""" | '<p>Here is something that is not part of the list</p>\n' | ||||
) | |||||
self.assertEqual(swh_templatetags.safe_docstring_display(docstring), | assert safe_docstring_display(docstring) == expected_docstring | ||||
expected_docstring) |