from unittest import mock import pytest import taiga.base from taiga.mdrender.gfm import mentions from taiga.mdrender.gfm import emojify 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 = emojify.EmojifyPreprocessor().run(["**:smile:**"]) assert result == ["****"] def test_proccessor_invalid_emoji(): result = emojify.EmojifyPreprocessor().run(["**: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.MentionsPreprocessor().run(["**@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.MentionsPreprocessor().run(["**@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