test_moderatedcontent_view.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from django.core.urlresolvers import reverse
  2. from django.utils.translation import ugettext as _
  3. from misago.acl.testutils import override_acl
  4. from misago.forums.models import Forum
  5. from misago.users.testutils import UserTestCase, AuthenticatedUserTestCase
  6. from misago.threads import testutils
  7. class AuthenticatedTests(AuthenticatedUserTestCase):
  8. def override_acl(self):
  9. new_acl = {
  10. 'can_see': True,
  11. 'can_browse': True,
  12. 'can_see_all_threads': True,
  13. 'can_review_moderated_content': True,
  14. }
  15. forums_acl = self.user.acl
  16. for forum in Forum.objects.all():
  17. forums_acl['visible_forums'].append(forum.pk)
  18. forums_acl['moderated_forums'].append(forum.pk)
  19. forums_acl['forums'][forum.pk] = new_acl
  20. override_acl(self.user, forums_acl)
  21. def test_cant_see_threads_list(self):
  22. """user has no permission to see moderated list"""
  23. response = self.client.get(reverse('misago:moderated_content'))
  24. self.assertEqual(response.status_code, 403)
  25. self.assertIn("review moderated content.", response.content)
  26. def test_empty_threads_list(self):
  27. """empty threads list is rendered"""
  28. forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
  29. [testutils.post_thread(forum) for t in xrange(10)]
  30. self.override_acl();
  31. response = self.client.get(reverse('misago:moderated_content'))
  32. self.assertEqual(response.status_code, 200)
  33. self.assertIn("There are no threads with moderated", response.content)
  34. def test_filled_threads_list(self):
  35. """filled threads list is rendered"""
  36. forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
  37. threads = []
  38. for t in xrange(10):
  39. threads.append(testutils.post_thread(forum, is_moderated=True))
  40. for t in xrange(10):
  41. threads.append(testutils.post_thread(forum))
  42. testutils.reply_thread(threads[-1], is_moderated=True)
  43. self.override_acl();
  44. response = self.client.get(reverse('misago:moderated_content'))
  45. self.assertEqual(response.status_code, 200)
  46. for thread in threads:
  47. self.assertIn(thread.get_absolute_url(), response.content)
  48. class AnonymousTests(UserTestCase):
  49. def test_anon_access_to_view(self):
  50. """anonymous user has no access to unread threads list"""
  51. response = self.client.get(reverse('misago:moderated_content'))
  52. self.assertEqual(response.status_code, 403)
  53. self.assertIn("sign in to see list", response.content)