from ...users.test 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, @%s!

", '

Hello, @%s!

'), ("

Hello, @%s!

", '

Hello, @%s!

'), ("
Hello, @%s!
", '
Hello, @%s!
'), ( "

Hello, @%s!

", '

Hello, @%s!

', ), ( "

Hello, @%s!

", '

Hello, @%s!

', ), ] for before, after in TEST_CASES: result = {"parsed_text": before % self.user.username, "mentions": []} add_mentions(MockRequest(self.user), result) expected_outcome = after % ( self.user.get_absolute_url(), self.user.username, ) self.assertEqual(result["parsed_text"], expected_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, @%s!

' % self.user.username, '

Hello, @%s!

' % 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])