from misago.markup.mentions import add_mentions from misago.users.testutils import AuthenticatedUserTestCase 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, 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} and @{0}, how is it going?
'.format(self.user.username) after = 'Hello @{1} and @{1}, how is it going?
'.format( self.user.get_absolute_url(), self.user.username ) result = {'parsed_text': before, 'mentions': []} add_mentions(MockRequest(self.user), result) self.assertEqual(result['parsed_text'], after) self.assertEqual(result['mentions'], [self.user]) def test_repeated_mention(self): """markup extension handles mentions across document""" before = 'Hello @{0}
@{0}, how is it going?
'.format(self.user.username) after = 'Hello @{1}
@{1}, how is it going?
'.format( self.user.get_absolute_url(), self.user.username ) result = {'parsed_text': before, 'mentions': []} add_mentions(MockRequest(self.user), result) self.assertEqual(result['parsed_text'], after) self.assertEqual(result['mentions'], [self.user])