from unittest import mock
import pytest
import taiga.base
from taiga.mdrender.processors import emoji
from taiga.mdrender.processors import mentions
from taiga.mdrender.processors import references
from taiga.mdrender.service import render
class DummyClass:
pass
dummy_project = DummyClass()
dummy_project.id = 1
dummy_project.slug = "test"
def test_proccessor_valid_emoji():
result = emoji.emoji(":smile:")
assert result == ''
def test_proccessor_invalid_emoji():
result = emoji.emoji(":notvalidemoji:")
assert result == ":notvalidemoji:"
def test_proccessor_valid_user_mention():
DummyModel = DummyClass()
DummyModel.objects = DummyClass()
DummyModel.objects.filter = lambda username: ["test"]
mentions.User = DummyModel
result = mentions.mentions("**@user1**")
assert result == '**[@user1](/#/profile/user1 "@user1")**'
def test_proccessor_invalid_user_mention():
DummyModel = DummyClass()
DummyModel.objects = DummyClass()
DummyModel.objects.filter = lambda username: []
mentions.User = DummyModel
result = mentions.mentions("**@notvaliduser**")
assert result == '**@notvaliduser**'
def test_proccessor_valid_us_reference():
class MockModelWithInstance:
class objects:
def filter(*args, **kwargs):
dummy_instance = DummyClass()
dummy_instance.subject = "test-subject"
return [dummy_instance]
UserStoryBack = references.UserStory
references.UserStory = MockModelWithInstance
result = references.references(dummy_project, "**#us1**")
assert result == '**[#us1](/#/project/test/user-story/1 "test-subject")**'
references.UserStory = UserStoryBack
def test_proccessor_invalid_us_reference():
class MockModelEmpty:
class objects:
def filter(*args, **kwargs):
return []
UserStoryBack = references.UserStory
references.UserStory = MockModelEmpty
result = references.references(dummy_project, "**#us1**")
assert result == "**#us1**"
references.UserStory = UserStoryBack
def test_proccessor_valid_issue_reference():
class MockModelWithInstance:
class objects:
def filter(*args, **kwargs):
dummy_instance = DummyClass()
dummy_instance.subject = "test-subject"
return [dummy_instance]
IssueBack = references.Issue
references.Issue = MockModelWithInstance
result = references.references(dummy_project, "**#issue1**")
assert result == '**[#issue1](/#/project/test/issues/1 "test-subject")**'
references.Issue = IssueBack
def test_proccessor_invalid_issue_reference():
class MockModelEmpty:
class objects:
def filter(*args, **kwargs):
return []
IssueBack = references.Issue
references.Issue = MockModelEmpty
result = references.references(dummy_project, "**#issue1**")
assert result == "**#issue1**"
references.Issue = IssueBack
def test_proccessor_valid_task_reference():
class MockModelWithInstance:
class objects:
def filter(*args, **kwargs):
dummy_instance = DummyClass()
dummy_instance.subject = "test-subject"
return [dummy_instance]
TaskBack = references.Task
references.Task = MockModelWithInstance
result = references.references(dummy_project, "**#task1**")
assert result == '**[#task1](/#/project/test/tasks/1 "test-subject")**'
references.Task = TaskBack
def test_proccessor_invalid_task_reference():
class MockModelEmpty:
class objects:
def filter(*args, **kwargs):
return []
TaskBack = references.Task
references.Task = MockModelEmpty
result = references.references(dummy_project, "**#task1**")
assert result == "**#task1**"
references.Task = TaskBack
def test_proccessor_invalid_type_reference():
result = references.references(dummy_project, "**#invalid1**")
assert result == "**#invalid1**"
def test_render_wiki_strong():
assert render(dummy_project, "**test**") == "
test
" assert render(dummy_project, "__test__") == "test
" def test_render_wiki_italic(): assert render(dummy_project, "*test*") == "test
" assert render(dummy_project, "_test_") == "test
" def test_render_wiki_strike(): assert render(dummy_project, "~~test~~") == "test
An example of reference link
" source = "An [example][id] of reference link\n [id]: http://example.com/ \"Title\"" assert render(dummy_project, source) == expected_result def test_render_url_autolinks(): expected_result = "Test the http://example.com/ autolink
" source = "Test the http://example.com/ autolink" assert render(dummy_project, source) == expected_result def test_render_absolute_image(): assert render(dummy_project, "") == "print("test")\n
print("test")\n