from misago.users.testutils import AuthenticatedUserTestCase from ..mentions import add_mentions class MockRequest(object): def __init__(self, user): self.user = user class MentionsTests(AuthenticatedUserTestCase): def test_single_mention(self): """markup extension parses single mention""" TEST_CASES = ( ( '

Hello, @{}!

', '

Hello, @{}!

' ), ( '

Hello, @{}!

', '

Hello, @{}!

' ), ( '

Hello, @{}!

', '

Hello, @{}!

' ), ( '

Hello, @{}!

', '

Hello, @{}!

' ), ) for before, after in TEST_CASES: result = { 'parsed_text': before.format(self.user.username), 'mentions': [] } add_mentions(MockRequest(self.user), result) outcome = after.format(self.user.get_absolute_url(), self.user.username) self.assertEqual(result['parsed_text'], outcome) self.assertEqual(result['mentions'], [self.user]) def test_invalid_mentions(self): """markup extension leaves invalid mentions alone""" TEST_CASES = ( '

Hello, Bob!

', '

Hello, @Bob!

', '

Hello, @{}!

'.format(self.user.username), '

Hello, @{}!

'.format(self.user.username), ) for markup in TEST_CASES: result = { 'parsed_text': markup, 'mentions': [] } add_mentions(MockRequest(self.user), result) self.assertEqual(result['parsed_text'], markup) self.assertFalse(result['mentions']) def test_multiple_mentions(self): """markup extension handles multiple mentions""" before = '

Hello, @{0}, how you feel now, @{0}?

'.format(self.user.username) formats = (self.user.get_absolute_url(), self.user.username) after = '

Hello, @{1}, how you feel now, @{1}?

'.format(*formats) result = { 'parsed_text': before, 'mentions': [] } add_mentions(MockRequest(self.user), result) self.assertEqual(result['parsed_text'], after) self.assertEqual(result['mentions'], [self.user])