Improving coverage of mdrender to 100%

remotes/origin/enhancement/email-actions
Jesús Espino 2014-05-21 18:57:37 +02:00
parent c7ee910647
commit 6a48e28ca4
7 changed files with 100 additions and 103 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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">&num;1</a></strong></p>' expected_result = '<p><strong><a alt="test" class="reference task" href="/#/project/test/tasks/1" title="test">&num;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, "![test](/test.png)") == "<p><img alt=\"test\" src=\"/test.png\" /></p>" assert render(dummy_project, "![test](/test.png)") == "<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\">&quot;test&quot;</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\">&quot;test&quot;</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;\">&lt;p&gt;test&lt;/p&gt;</ins>"
def test_get_diff_of_htmls_deletions():
result = get_diff_of_htmls("<p>test</p>", "")
assert result == "<del style=\"background:#ffe6e6;\">&lt;p&gt;test&lt;/p&gt;</del>"
def test_get_diff_of_htmls_modifications():
result = get_diff_of_htmls("<p>test1</p>", "<p>1test</p>")
assert result == "<span>&lt;p&gt;</span><ins style=\"background:#e6ffe6;\">1</ins><span>test</span><del style=\"background:#ffe6e6;\">1</del><span>&lt;/p&gt;</span>"