test_thread_poll_api.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import json
  2. from django.urls import reverse
  3. from misago.acl.testutils import override_acl
  4. from misago.categories.models import Category
  5. from misago.threads import testutils
  6. from misago.users.testutils import AuthenticatedUserTestCase
  7. class ThreadPollApiTestCase(AuthenticatedUserTestCase):
  8. def setUp(self):
  9. super().setUp()
  10. self.category = Category.objects.get(slug='first-category')
  11. self.thread = testutils.post_thread(self.category, poster=self.user)
  12. self.override_acl()
  13. self.api_link = reverse(
  14. 'misago:api:thread-poll-list', kwargs={
  15. 'thread_pk': self.thread.pk,
  16. }
  17. )
  18. def post(self, url, data=None):
  19. return self.client.post(url, json.dumps(data or {}), content_type='application/json')
  20. def put(self, url, data=None):
  21. return self.client.put(url, json.dumps(data or {}), content_type='application/json')
  22. def override_acl(self, user=None, category=None):
  23. new_acl = self.user.acl_cache
  24. new_acl['categories'][self.category.pk].update({
  25. 'can_see': 1,
  26. 'can_browse': 1,
  27. 'can_close_threads': 0,
  28. })
  29. new_acl.update({
  30. 'can_start_polls': 1,
  31. 'can_edit_polls': 1,
  32. 'can_delete_polls': 1,
  33. 'poll_edit_time': 0,
  34. 'can_always_see_poll_voters': 0,
  35. })
  36. if user:
  37. new_acl.update(user)
  38. if category:
  39. new_acl['categories'][self.category.pk].update(category)
  40. override_acl(self.user, new_acl)
  41. def mock_poll(self):
  42. self.poll = self.thread.poll = testutils.post_poll(self.thread, self.user)
  43. self.api_link = reverse(
  44. 'misago:api:thread-poll-detail',
  45. kwargs={
  46. 'thread_pk': self.thread.pk,
  47. 'pk': self.poll.pk,
  48. }
  49. )