from unittest.mock import patch, MagicMock import pytest import taiga.base from taiga.mdrender.extensions import mentions from taiga.mdrender.extensions import emojify from taiga.mdrender.service import render from taiga.projects.references import services from taiga.users.models import User dummy_project = MagicMock() dummy_project.id = 1 dummy_project.slug = "test" def test_proccessor_valid_emoji(): result = emojify.EmojifyPreprocessor().run(["**:smile:**"]) assert result == ["**![smile](http://localhost:8000/static/img/emojis/smile.png)**"] def test_proccessor_invalid_emoji(): result = emojify.EmojifyPreprocessor().run(["**:notvalidemoji:**"]) assert result == ["**:notvalidemoji:**"] def test_proccessor_valid_user_mention(): with patch("taiga.mdrender.extensions.mentions.User") as mock: instance = mock.objects.get.return_value instance.get_full_name.return_value = "test name" result = render(dummy_project, "**@user1**") expected_result = "

@user1

" assert result == expected_result def test_proccessor_invalid_user_mention(): with patch("taiga.mdrender.extensions.mentions.User") as mock: mock.DoesNotExist = User.DoesNotExist mock.objects.get.side_effect = User.DoesNotExist result = render(dummy_project, "**@notvaliduser**") assert result == '

@notvaliduser

' def test_proccessor_valid_us_reference(): with patch("taiga.mdrender.extensions.references.get_instance_by_ref") as mock: instance = mock.return_value instance.content_type.model = "userstory" instance.content_object.subject = "test" result = render(dummy_project, "**#1**") expected_result = '

#1

' assert result == expected_result def test_proccessor_valid_issue_reference(): with patch("taiga.mdrender.extensions.references.get_instance_by_ref") as mock: instance = mock.return_value instance.content_type.model = "issue" instance.content_object.subject = "test" result = render(dummy_project, "**#1**") expected_result = '

#1

' assert result == expected_result def test_proccessor_valid_task_reference(): with patch("taiga.mdrender.extensions.references.get_instance_by_ref") as mock: instance = mock.return_value instance.content_type.model = "task" instance.content_object.subject = "test" result = render(dummy_project, "**#1**") expected_result = '

#1

' assert result == expected_result def test_proccessor_invalid_reference(): with patch("taiga.mdrender.extensions.references.get_instance_by_ref") as mock: mock.return_value = None result = render(dummy_project, "**#1**") assert result == "

#1

" 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

" def test_render_absolute_link(): assert render(dummy_project, "[test](/test)") == "

test

" def test_render_relative_link(): assert render(dummy_project, "[test](test)") == "

test

" def test_render_wikilink(): expected_result = "

test

" assert render(dummy_project, "[[test]]") == expected_result def test_render_wikilink_with_custom_title(): expected_result = "

custom

" assert render(dummy_project, "[[test|custom]]") == expected_result def test_render_reference_links(): expected_result = "

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, "![test](/test.png)") == "

\"test\"

" def test_render_relative_image(): assert render(dummy_project, "![test](test.png)") == "

\"test\"

" def test_render_triple_quote_code(): expected_result = "
print("test")\n
" assert render(dummy_project, "```\nprint(\"test\")\n```") == expected_result def test_render_triple_quote_and_lang_code(): expected_result = "
print("test")\n
" assert render(dummy_project, "```python\nprint(\"test\")\n```") == expected_result