test_mentions.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from ..mentions import add_mentions
  2. def test_util_replaces_mention_with_link_to_user_profile_in_parsed_text(
  3. request_mock, user
  4. ):
  5. parsing_result = {"parsed_text": f"<p>Hello, @{user.username}!</p>", "mentions": []}
  6. add_mentions(request_mock, parsing_result)
  7. assert parsing_result["parsed_text"] == (
  8. f'<p>Hello, <a href="{user.get_absolute_url()}">@{user.username}</a>!</p>'
  9. )
  10. def test_util_adds_mention_to_parsig_result(request_mock, user):
  11. parsing_result = {"parsed_text": f"<p>Hello, @{user.username}!</p>", "mentions": []}
  12. add_mentions(request_mock, parsing_result)
  13. assert parsing_result["mentions"] == [user]
  14. def test_mentions_arent_added_for_nonexisting_user(request_mock, user):
  15. parsing_result = {"parsed_text": f"<p>Hello, @OtherUser!</p>", "mentions": []}
  16. add_mentions(request_mock, parsing_result)
  17. assert parsing_result["parsed_text"] == "<p>Hello, @OtherUser!</p>"
  18. def test_util_replaces_multiple_mentions_with_link_to_user_profiles_in_parsed_text(
  19. request_mock, user, other_user
  20. ):
  21. parsing_result = {
  22. "parsed_text": f"<p>Hello, @{user.username} and @{other_user.username}!</p>",
  23. "mentions": [],
  24. }
  25. add_mentions(request_mock, parsing_result)
  26. assert (
  27. f'<a href="{user.get_absolute_url()}">@{user.username}</a>'
  28. in parsing_result["parsed_text"]
  29. )
  30. assert (
  31. f'<a href="{other_user.get_absolute_url()}">@{other_user.username}</a>'
  32. in parsing_result["parsed_text"]
  33. )
  34. def test_util_adds_multiple_mentions_to_parsig_result(request_mock, user, other_user):
  35. parsing_result = {
  36. "parsed_text": f"<p>Hello, @{user.username} and @{other_user.username}!</p>",
  37. "mentions": [],
  38. }
  39. add_mentions(request_mock, parsing_result)
  40. assert parsing_result["mentions"] == [user, other_user]
  41. def test_util_handles_repeated_mentions_of_same_user(request_mock, user):
  42. parsing_result = {
  43. "parsed_text": f"<p>Hello, @{user.username} and @{user.username}!</p>",
  44. "mentions": [],
  45. }
  46. add_mentions(request_mock, parsing_result)
  47. assert parsing_result["mentions"] == [user]
  48. def test_util_skips_mentions_in_links(request_mock, user, snapshot):
  49. parsing_result = {
  50. "parsed_text": f'<p>Hello, <a href="/">@{user.username}</a></p>',
  51. "mentions": [],
  52. }
  53. add_mentions(request_mock, parsing_result)
  54. assert parsing_result["parsed_text"] == (
  55. f'<p>Hello, <a href="/">@{user.username}</a></p>'
  56. )
  57. assert parsing_result["mentions"] == []
  58. def test_util_handles_text_without_mentions(request_mock):
  59. parsing_result = {"parsed_text": f"<p>Hello, world!</p>", "mentions": []}
  60. add_mentions(request_mock, parsing_result)
  61. assert parsing_result["parsed_text"] == ("<p>Hello, world!</p>")
  62. assert parsing_result["mentions"] == []