Fix issue #4151: @mentions with dashes doesn't work
parent
761b224a61
commit
4516dbca49
|
@ -31,10 +31,10 @@ from markdown.util import etree, AtomicString
|
|||
|
||||
class MentionsExtension(Extension):
|
||||
def extendMarkdown(self, md, md_globals):
|
||||
MENTION_RE = r'(@)([a-zA-Z0-9.-\._]+)'
|
||||
MENTION_RE = r"(@)([\w.-]+)"
|
||||
mentionsPattern = MentionsPattern(MENTION_RE)
|
||||
mentionsPattern.md = md
|
||||
md.inlinePatterns.add('mentions', mentionsPattern, '_end')
|
||||
md.inlinePatterns.add("mentions", mentionsPattern, "_end")
|
||||
|
||||
|
||||
class MentionsPattern(Pattern):
|
||||
|
|
|
@ -27,6 +27,8 @@ dummy_project = MagicMock()
|
|||
dummy_project.id = 1
|
||||
dummy_project.slug = "test"
|
||||
|
||||
dummy_uuser = MagicMock()
|
||||
dummy_uuser.get_full_name.return_value = "Dummy User"
|
||||
|
||||
def test_proccessor_valid_emoji():
|
||||
result = emojify.EmojifyPreprocessor().run(["**:smile:**"])
|
||||
|
@ -38,6 +40,45 @@ def test_proccessor_invalid_emoji():
|
|||
assert result == ["**:notvalidemoji:**"]
|
||||
|
||||
|
||||
def test_mentions_valid_username():
|
||||
with patch("taiga.mdrender.extensions.mentions.get_user_model") as get_user_model_mock:
|
||||
dummy_uuser = MagicMock()
|
||||
dummy_uuser.get_full_name.return_value = "Hermione Granger"
|
||||
get_user_model_mock.return_value.objects.get = MagicMock(return_value=dummy_uuser)
|
||||
|
||||
result = render(dummy_project, "text @hermione text")
|
||||
|
||||
get_user_model_mock.return_value.objects.get.assert_called_with(username="hermione")
|
||||
assert result == ('<p>text <a class="mention" href="http://localhost:9001/profile/hermione" '
|
||||
'title="Hermione Granger">@hermione</a> text</p>')
|
||||
|
||||
|
||||
def test_mentions_valid_username_with_points():
|
||||
with patch("taiga.mdrender.extensions.mentions.get_user_model") as get_user_model_mock:
|
||||
dummy_uuser = MagicMock()
|
||||
dummy_uuser.get_full_name.return_value = "Luna Lovegood"
|
||||
get_user_model_mock.return_value.objects.get = MagicMock(return_value=dummy_uuser)
|
||||
|
||||
result = render(dummy_project, "text @luna.lovegood text")
|
||||
|
||||
get_user_model_mock.return_value.objects.get.assert_called_with(username="luna.lovegood")
|
||||
assert result == ('<p>text <a class="mention" href="http://localhost:9001/profile/luna.lovegood" '
|
||||
'title="Luna Lovegood">@luna.lovegood</a> text</p>')
|
||||
|
||||
|
||||
def test_mentions_valid_username_with_dash():
|
||||
with patch("taiga.mdrender.extensions.mentions.get_user_model") as get_user_model_mock:
|
||||
dummy_uuser = MagicMock()
|
||||
dummy_uuser.get_full_name.return_value = "Ginny Weasley"
|
||||
get_user_model_mock.return_value.objects.get = MagicMock(return_value=dummy_uuser)
|
||||
|
||||
result = render(dummy_project, "text @super-ginny text")
|
||||
|
||||
get_user_model_mock.return_value.objects.get.assert_called_with(username="super-ginny")
|
||||
assert result == ('<p>text <a class="mention" href="http://localhost:9001/profile/super-ginny" '
|
||||
'title="Ginny Weasley">@super-ginny</a> text</p>')
|
||||
|
||||
|
||||
def test_proccessor_valid_us_reference():
|
||||
with patch("taiga.mdrender.extensions.references.get_instance_by_ref") as mock:
|
||||
instance = mock.return_value
|
||||
|
|
Loading…
Reference in New Issue