-test_privatethreads_view.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from django.core.urlresolvers import reverse
  2. from django.utils import timezone
  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. from misago.threads.models import ThreadParticipant
  8. class AuthenticatedTests(AuthenticatedUserTestCase):
  9. def test_empty_threads_list(self):
  10. """empty threads list is rendered"""
  11. response = self.client.get(reverse('misago:private_threads'))
  12. self.assertEqual(response.status_code, 200)
  13. self.assertIn("You are not participating in any private threads.",
  14. response.content)
  15. def test_cant_use_threads_list(self):
  16. """user has no permission to use private threads"""
  17. override_acl(self.user, {'can_use_private_threads': False})
  18. response = self.client.get(reverse('misago:private_threads'))
  19. self.assertEqual(response.status_code, 403)
  20. self.assertIn("use private threads system.",
  21. response.content)
  22. def test_participating_threads_list(self):
  23. """private threads list displays threads user participates in"""
  24. override_acl(self.user, {'can_moderate_private_threads': False})
  25. forum = Forum.objects.private_threads()
  26. invisible_threads = [testutils.post_thread(forum) for t in xrange(10)]
  27. visible_threads = [testutils.post_thread(forum) for t in xrange(10)]
  28. for thread in visible_threads:
  29. ThreadParticipant.objects.set_owner(thread, self.user)
  30. # only threads user participates in are displayed
  31. response = self.client.get(reverse('misago:private_threads'))
  32. self.assertEqual(response.status_code, 200)
  33. for thread in invisible_threads:
  34. self.assertNotIn(thread.get_absolute_url(), response.content)
  35. for thread in visible_threads:
  36. self.assertIn(thread.get_absolute_url(), response.content)
  37. def test_reported_threads_list(self):
  38. """private threads list displays threads with reports"""
  39. override_acl(self.user, {'can_moderate_private_threads': True})
  40. forum = Forum.objects.private_threads()
  41. invisible_threads = [testutils.post_thread(forum) for t in xrange(10)]
  42. visible_threads = [testutils.post_thread(forum) for t in xrange(10)]
  43. for thread in visible_threads:
  44. thread.has_reported_posts = True
  45. thread.save()
  46. # only threads user participates in are displayed
  47. response = self.client.get(reverse('misago:private_threads'))
  48. self.assertEqual(response.status_code, 200)
  49. for thread in invisible_threads:
  50. self.assertNotIn(thread.get_absolute_url(), response.content)
  51. for thread in visible_threads:
  52. self.assertIn(thread.get_absolute_url(), response.content)
  53. class AnonymousTests(UserTestCase):
  54. def test_anon_access_to_view(self):
  55. """anonymous user has no access to private threads list"""
  56. response = self.client.get(reverse('misago:private_threads'))
  57. self.assertEqual(response.status_code, 403)
  58. self.assertIn("use private threads system.", response.content)