test_gotolists_views.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. from misago.acl import add_acl
  2. from misago.acl.testutils import override_acl
  3. from misago.forums.models import Forum
  4. from misago.users.testutils import AuthenticatedUserTestCase
  5. from misago.threads.testutils import post_thread, reply_thread
  6. class GotoListsViewsTests(AuthenticatedUserTestCase):
  7. ajax_header = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'}
  8. def setUp(self):
  9. super(GotoListsViewsTests, self).setUp()
  10. self.forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
  11. self.forum.labels = []
  12. self.thread = post_thread(self.forum)
  13. def override_acl(self, new_acl):
  14. new_acl.update({
  15. 'can_browse': True,
  16. 'can_see': True,
  17. 'can_see_all_threads': True,
  18. })
  19. forums_acl = self.user.acl
  20. forums_acl['visible_forums'].append(self.forum.pk)
  21. forums_acl['forums'][self.forum.pk] = new_acl
  22. override_acl(self.user, forums_acl)
  23. self.forum.acl = {}
  24. add_acl(self.user, self.forum)
  25. def test_moderated_list(self):
  26. """moderated posts list works"""
  27. self.override_acl({'can_review_moderated_content': True})
  28. response = self.client.get(self.thread.get_moderated_url(),
  29. **self.ajax_header)
  30. self.assertEqual(response.status_code, 200)
  31. self.assertIn("0 unapproved posts", response.content)
  32. self.assertIn("There are no posts to display on this list.",
  33. response.content)
  34. # post 10 not moderated posts
  35. [reply_thread(self.thread) for i in xrange(10)]
  36. # assert that posts don't show
  37. self.override_acl({'can_review_moderated_content': True})
  38. response = self.client.get(self.thread.get_moderated_url(),
  39. **self.ajax_header)
  40. self.assertEqual(response.status_code, 200)
  41. self.assertIn("0 unapproved posts", response.content)
  42. self.assertIn("There are no posts to display on this list.",
  43. response.content)
  44. # post 10 reported posts
  45. posts = []
  46. for i in xrange(10):
  47. posts.append(reply_thread(self.thread, is_moderated=True))
  48. # assert that posts show
  49. self.override_acl({'can_review_moderated_content': True})
  50. response = self.client.get(self.thread.get_moderated_url(),
  51. **self.ajax_header)
  52. self.assertEqual(response.status_code, 200)
  53. self.assertIn("10 unapproved posts", response.content)
  54. self.assertNotIn("There are no posts to display on this list.",
  55. response.content)
  56. for post in posts:
  57. self.assertIn(post.get_absolute_url(), response.content)
  58. # overflow list via posting extra 20 reported posts
  59. posts = []
  60. for i in xrange(20):
  61. posts.append(reply_thread(self.thread, is_moderated=True))
  62. # assert that posts don't show
  63. self.override_acl({'can_review_moderated_content': True})
  64. response = self.client.get(self.thread.get_moderated_url(),
  65. **self.ajax_header)
  66. self.assertEqual(response.status_code, 200)
  67. self.assertIn("30 unapproved posts", response.content)
  68. self.assertIn("This list is limited to last 15 posts.",
  69. response.content)
  70. for post in posts[15:]:
  71. self.assertIn(post.get_absolute_url(), response.content)
  72. def test_reported_list(self):
  73. """reported posts list works"""
  74. self.override_acl({'can_see_reports': True})
  75. response = self.client.get(self.thread.get_reported_url(),
  76. **self.ajax_header)
  77. self.assertEqual(response.status_code, 200)
  78. self.assertIn("0 reported posts", response.content)
  79. self.assertIn("There are no posts to display on this list.",
  80. response.content)
  81. # post 10 not reported posts
  82. [reply_thread(self.thread) for i in xrange(10)]
  83. # assert that posts don't show
  84. self.override_acl({'can_see_reports': True})
  85. response = self.client.get(self.thread.get_reported_url(),
  86. **self.ajax_header)
  87. self.assertEqual(response.status_code, 200)
  88. self.assertIn("0 reported posts", response.content)
  89. self.assertIn("There are no posts to display on this list.",
  90. response.content)
  91. # post 10 reported posts
  92. posts = []
  93. for i in xrange(10):
  94. posts.append(reply_thread(self.thread, has_reports=True))
  95. # assert that posts show
  96. self.override_acl({'can_see_reports': True})
  97. response = self.client.get(self.thread.get_reported_url(),
  98. **self.ajax_header)
  99. self.assertEqual(response.status_code, 200)
  100. self.assertIn("10 reported posts", response.content)
  101. self.assertNotIn("There are no posts to display on this list.",
  102. response.content)
  103. for post in posts:
  104. self.assertIn(post.get_absolute_url(), response.content)
  105. # overflow list via posting extra 20 reported posts
  106. posts = []
  107. for i in xrange(20):
  108. posts.append(reply_thread(self.thread, has_reports=True))
  109. # assert that posts don't show
  110. self.override_acl({'can_see_reports': True})
  111. response = self.client.get(self.thread.get_reported_url(),
  112. **self.ajax_header)
  113. self.assertEqual(response.status_code, 200)
  114. self.assertIn("30 reported posts", response.content)
  115. self.assertIn("This list is limited to last 15 posts.",
  116. response.content)
  117. for post in posts[15:]:
  118. self.assertIn(post.get_absolute_url(), response.content)