Improving coverage of mdrender to 100%
parent
c7ee910647
commit
6a48e28ca4
|
@ -181,7 +181,3 @@ class EmojifyPreprocessor(Preprocessor):
|
||||||
new_lines.append(line)
|
new_lines.append(line)
|
||||||
|
|
||||||
return new_lines
|
return new_lines
|
||||||
|
|
||||||
|
|
||||||
def makeExtension(configs=None):
|
|
||||||
return EmojifyExtension(configs=configs)
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
|
||||||
# for details. All rights reserved. Use of this source code is governed by a
|
|
||||||
# BSD-style license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
from markdown.extensions.codehilite import CodeHiliteExtension
|
|
||||||
|
|
||||||
class HiddenHiliteExtension(CodeHiliteExtension):
|
|
||||||
"""A subclass of CodeHiliteExtension that doesn't highlight on its own.
|
|
||||||
|
|
||||||
This just enables the fenced code extension to use syntax highlighting,
|
|
||||||
without adding syntax highlighting or line numbers to any additional code
|
|
||||||
blocks.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def extendMarkdown(self, md, md_globals):
|
|
||||||
md.registerExtension(self)
|
|
|
@ -46,7 +46,6 @@ class MentionsExtension(Extension):
|
||||||
|
|
||||||
class MentionsPattern(Pattern):
|
class MentionsPattern(Pattern):
|
||||||
def handleMatch(self, m):
|
def handleMatch(self, m):
|
||||||
if m.group(2).strip():
|
|
||||||
username = m.group(2)
|
username = m.group(2)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -65,7 +64,3 @@ class MentionsPattern(Pattern):
|
||||||
a.set('title', user.get_full_name())
|
a.set('title', user.get_full_name())
|
||||||
a.set('class', "mention")
|
a.set('class', "mention")
|
||||||
return a
|
return a
|
||||||
return ''
|
|
||||||
|
|
||||||
def makeExtension(configs=None):
|
|
||||||
return MentionsExtension(configs=configs)
|
|
||||||
|
|
|
@ -53,7 +53,6 @@ class TaigaReferencesPattern(Pattern):
|
||||||
super().__init__(pattern)
|
super().__init__(pattern)
|
||||||
|
|
||||||
def handleMatch(self, m):
|
def handleMatch(self, m):
|
||||||
if m.group(2).strip():
|
|
||||||
obj_ref = m.group(2)
|
obj_ref = m.group(2)
|
||||||
|
|
||||||
instance = get_instance_by_ref(self.project.id, obj_ref)
|
instance = get_instance_by_ref(self.project.id, obj_ref)
|
||||||
|
@ -89,8 +88,3 @@ class TaigaReferencesPattern(Pattern):
|
||||||
a.set('title', subject)
|
a.set('title', subject)
|
||||||
a.set('class', html_classes)
|
a.set('class', html_classes)
|
||||||
return a
|
return a
|
||||||
return ''
|
|
||||||
|
|
||||||
|
|
||||||
def makeExtension(configs=None):
|
|
||||||
return TaigaReferencesExtension(configs=configs)
|
|
||||||
|
|
|
@ -41,7 +41,6 @@ class WikiLinks(Pattern):
|
||||||
self.config = config
|
self.config = config
|
||||||
|
|
||||||
def handleMatch(self, m):
|
def handleMatch(self, m):
|
||||||
if m.group(2).strip():
|
|
||||||
base_url, end_url, html_class = self._getMeta()
|
base_url, end_url, html_class = self._getMeta()
|
||||||
label = m.group(2).strip()
|
label = m.group(2).strip()
|
||||||
url = self.config['build_url'](label, base_url, end_url)
|
url = self.config['build_url'](label, base_url, end_url)
|
||||||
|
@ -56,8 +55,6 @@ class WikiLinks(Pattern):
|
||||||
a.set('href', url)
|
a.set('href', url)
|
||||||
if html_class:
|
if html_class:
|
||||||
a.set('class', html_class)
|
a.set('class', html_class)
|
||||||
else:
|
|
||||||
a = ''
|
|
||||||
return a
|
return a
|
||||||
|
|
||||||
def _getMeta(self):
|
def _getMeta(self):
|
||||||
|
@ -65,15 +62,4 @@ class WikiLinks(Pattern):
|
||||||
base_url = self.config['base_url']
|
base_url = self.config['base_url']
|
||||||
end_url = self.config['end_url']
|
end_url = self.config['end_url']
|
||||||
html_class = self.config['html_class']
|
html_class = self.config['html_class']
|
||||||
if hasattr(self.md, 'Meta'):
|
|
||||||
if 'wiki_base_url' in self.md.Meta:
|
|
||||||
base_url = self.md.Meta['wiki_base_url'][0]
|
|
||||||
if 'wiki_end_url' in self.md.Meta:
|
|
||||||
end_url = self.md.Meta['wiki_end_url'][0]
|
|
||||||
if 'wiki_html_class' in self.md.Meta:
|
|
||||||
html_class = self.md.Meta['wiki_html_class'][0]
|
|
||||||
return base_url, end_url, html_class
|
return base_url, end_url, html_class
|
||||||
|
|
||||||
|
|
||||||
def makeExtension(configs=None) :
|
|
||||||
return WikiLinkExtension(configs=configs)
|
|
||||||
|
|
|
@ -9,7 +9,6 @@ from fn import F
|
||||||
|
|
||||||
from .extensions.autolink import AutolinkExtension
|
from .extensions.autolink import AutolinkExtension
|
||||||
from .extensions.automail import AutomailExtension
|
from .extensions.automail import AutomailExtension
|
||||||
from .extensions.hidden_hilite import HiddenHiliteExtension
|
|
||||||
from .extensions.semi_sane_lists import SemiSaneListExtension
|
from .extensions.semi_sane_lists import SemiSaneListExtension
|
||||||
from .extensions.spaced_link import SpacedLinkExtension
|
from .extensions.spaced_link import SpacedLinkExtension
|
||||||
from .extensions.strikethrough import StrikethroughExtension
|
from .extensions.strikethrough import StrikethroughExtension
|
||||||
|
@ -47,7 +46,7 @@ def cache_by_sha(func):
|
||||||
if cached is not None:
|
if cached is not None:
|
||||||
return cached
|
return cached
|
||||||
|
|
||||||
returned_value = func(text)
|
returned_value = func(project, text)
|
||||||
cache.set(key, returned_value, timeout=None)
|
cache.set(key, returned_value, timeout=None)
|
||||||
return returned_value
|
return returned_value
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,14 @@ import pytest
|
||||||
import taiga.base
|
import taiga.base
|
||||||
from taiga.mdrender.extensions import mentions
|
from taiga.mdrender.extensions import mentions
|
||||||
from taiga.mdrender.extensions import emojify
|
from taiga.mdrender.extensions import emojify
|
||||||
from taiga.mdrender.service import render
|
from taiga.mdrender.service import render, cache_by_sha, get_diff_of_htmls
|
||||||
|
|
||||||
from taiga.projects.references import services
|
from taiga.projects.references import services
|
||||||
|
|
||||||
from taiga.users.models import User
|
from taiga.users.models import User
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
dummy_project = MagicMock()
|
dummy_project = MagicMock()
|
||||||
dummy_project.id = 1
|
dummy_project.id = 1
|
||||||
dummy_project.slug = "test"
|
dummy_project.slug = "test"
|
||||||
|
@ -65,6 +67,14 @@ def test_proccessor_valid_task_reference():
|
||||||
expected_result = '<p><strong><a alt="test" class="reference task" href="/#/project/test/tasks/1" title="test">#1</a></strong></p>'
|
expected_result = '<p><strong><a alt="test" class="reference task" href="/#/project/test/tasks/1" title="test">#1</a></strong></p>'
|
||||||
assert result == expected_result
|
assert result == expected_result
|
||||||
|
|
||||||
|
def test_proccessor_invalid_type_reference():
|
||||||
|
with patch("taiga.mdrender.extensions.references.get_instance_by_ref") as mock:
|
||||||
|
instance = mock.return_value
|
||||||
|
instance.content_type.model = "other"
|
||||||
|
instance.content_object.subject = "test"
|
||||||
|
result = render(dummy_project, "**#1**")
|
||||||
|
assert result == "<p><strong>#1</strong></p>"
|
||||||
|
|
||||||
def test_proccessor_invalid_reference():
|
def test_proccessor_invalid_reference():
|
||||||
with patch("taiga.mdrender.extensions.references.get_instance_by_ref") as mock:
|
with patch("taiga.mdrender.extensions.references.get_instance_by_ref") as mock:
|
||||||
mock.return_value = None
|
mock.return_value = None
|
||||||
|
@ -106,6 +116,16 @@ def test_render_url_autolinks():
|
||||||
source = "Test the http://example.com/ autolink"
|
source = "Test the http://example.com/ autolink"
|
||||||
assert render(dummy_project, source) == expected_result
|
assert render(dummy_project, source) == expected_result
|
||||||
|
|
||||||
|
def test_render_url_autolinks_without_http():
|
||||||
|
expected_result = "<p>Test the <a href=\"http://www.example.com\">www.example.com</a> autolink</p>"
|
||||||
|
source = "Test the www.example.com autolink"
|
||||||
|
assert render(dummy_project, source) == expected_result
|
||||||
|
|
||||||
|
def test_render_url_automail():
|
||||||
|
expected_result = "<p>Test the <a href=\"mailto:example@example.com\">example@example.com</a> automail</p>"
|
||||||
|
source = "Test the example@example.com automail"
|
||||||
|
assert render(dummy_project, source) == expected_result
|
||||||
|
|
||||||
def test_render_absolute_image():
|
def test_render_absolute_image():
|
||||||
assert render(dummy_project, "") == "<p><img alt=\"test\" src=\"/test.png\" /></p>"
|
assert render(dummy_project, "") == "<p><img alt=\"test\" src=\"/test.png\" /></p>"
|
||||||
|
|
||||||
|
@ -119,3 +139,26 @@ def test_render_triple_quote_code():
|
||||||
def test_render_triple_quote_and_lang_code():
|
def test_render_triple_quote_and_lang_code():
|
||||||
expected_result = "<div class=\"codehilite\"><pre><span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s\">"test"</span><span class=\"p\">)</span>\n</pre></div>"
|
expected_result = "<div class=\"codehilite\"><pre><span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s\">"test"</span><span class=\"p\">)</span>\n</pre></div>"
|
||||||
assert render(dummy_project, "```python\nprint(\"test\")\n```") == expected_result
|
assert render(dummy_project, "```python\nprint(\"test\")\n```") == expected_result
|
||||||
|
|
||||||
|
def test_cache_by_sha():
|
||||||
|
@cache_by_sha
|
||||||
|
def test_cache(project, text):
|
||||||
|
return datetime.now()
|
||||||
|
|
||||||
|
result1 = test_cache(dummy_project, "test")
|
||||||
|
result2 = test_cache(dummy_project, "test2")
|
||||||
|
assert result1 != result2
|
||||||
|
result3 = test_cache(dummy_project, "test")
|
||||||
|
assert result1 == result3
|
||||||
|
|
||||||
|
def test_get_diff_of_htmls_insertions():
|
||||||
|
result = get_diff_of_htmls("", "<p>test</p>")
|
||||||
|
assert result == "<ins style=\"background:#e6ffe6;\"><p>test</p></ins>"
|
||||||
|
|
||||||
|
def test_get_diff_of_htmls_deletions():
|
||||||
|
result = get_diff_of_htmls("<p>test</p>", "")
|
||||||
|
assert result == "<del style=\"background:#ffe6e6;\"><p>test</p></del>"
|
||||||
|
|
||||||
|
def test_get_diff_of_htmls_modifications():
|
||||||
|
result = get_diff_of_htmls("<p>test1</p>", "<p>1test</p>")
|
||||||
|
assert result == "<span><p></span><ins style=\"background:#e6ffe6;\">1</ins><span>test</span><del style=\"background:#ffe6e6;\">1</del><span></p></span>"
|
||||||
|
|
Loading…
Reference in New Issue