test_thread_view.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from misago.users.testutils import AuthenticatedUserTestCase
  2. from misago.threads.models import Thread
  3. from misago.threads.testutils import post_thread, reply_thread
  4. class ThreadViewTests(AuthenticatedUserTestCase):
  5. def setUp(self):
  6. super(ThreadViewTests, self).setUp()
  7. self.forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
  8. self.thread = post_thread(self.forum)
  9. def override_acl(self, new_acl):
  10. new_acl.update({'can_browse': True})
  11. forums_acl = self.user.acl
  12. forums_acl['visible_forums'].append(self.forum.pk)
  13. forums_acl['forums'][self.forum.pk] = new_acl
  14. override_acl(self.user, forums_acl)
  15. self.forum.acl = {}
  16. add_acl(self.user, self.forum)
  17. def reload_thread(self):
  18. self.thread = Thread.objects.get(id=thread.id)
  19. return self.thread
  20. class ThreadViewModerationTests(ThreadViewTests):
  21. def test_pin_thread(self):
  22. """its possible to pin thread"""
  23. self.override_acl({'can_pin_threads': 0})
  24. response = self.client.post(self.thread.get_absolute_url(),
  25. data={'thread_action': 'pin'})
  26. self.assertEqual(response.status_code, 200)
  27. # allow for pinning threads
  28. self.override_acl({'can_pin_threads': 1})
  29. response = self.client.post(self.thread.get_absolute_url(),
  30. data={'thread_action': 'pin'})
  31. self.assertEqual(response.status_code, 302)
  32. self.assertTrue(self.reload_thread().is_pinned)
  33. def test_unpin_thread(self):
  34. """its possible to unpin thread"""
  35. self.thread.is_pinned = True
  36. self.thread.save()
  37. self.override_acl({'can_pin_threads': 0})
  38. response = self.client.post(self.thread.get_absolute_url(),
  39. data={'thread_action': 'unpin'})
  40. self.assertEqual(response.status_code, 200)
  41. # allow for pinning threads
  42. self.override_acl({'can_pin_threads': 1})
  43. response = self.client.post(self.thread.get_absolute_url(),
  44. data={'thread_action': 'unpin'})
  45. self.assertEqual(response.status_code, 302)
  46. self.assertFalse(self.reload_thread().is_pinned)