test_events_view.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. from django.core.urlresolvers import reverse
  2. from misago.acl.testutils import override_acl
  3. from misago.categories.models import Category
  4. from misago.users.testutils import AuthenticatedUserTestCase
  5. from misago.threads.models import Thread, Event
  6. from misago.threads.testutils import post_thread, reply_thread
  7. class EventsViewTestCase(AuthenticatedUserTestCase):
  8. ajax_header = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'}
  9. def setUp(self):
  10. super(EventsViewTestCase, self).setUp()
  11. self.category = Category.objects.all_categories().filter(role='forum')[:1][0]
  12. self.category.labels = []
  13. self.thread = post_thread(self.category)
  14. def override_acl(self, new_acl):
  15. new_acl.update({
  16. 'can_see': True,
  17. 'can_browse': True,
  18. 'can_see_all_threads': True,
  19. 'can_see_own_threads': False,
  20. 'can_pin_threads': True
  21. })
  22. categories_acl = self.user.acl
  23. categories_acl['visible_categories'].append(self.category.pk)
  24. categories_acl['categories'][self.category.pk] = new_acl
  25. override_acl(self.user, categories_acl)
  26. def test_hide_event(self):
  27. """its possible to hide event"""
  28. self.override_acl({'can_hide_events': 0})
  29. response = self.client.post(self.thread.get_absolute_url(),
  30. data={'thread_action': 'pin'})
  31. self.assertEqual(response.status_code, 302)
  32. event = self.thread.event_set.all()[0]
  33. self.override_acl({'can_hide_events': 0})
  34. response = self.client.post(
  35. reverse('misago:edit_event', kwargs={'event_id': event.id}),
  36. data={'action': 'toggle'},
  37. **self.ajax_header)
  38. self.assertEqual(response.status_code, 403)
  39. self.override_acl({'can_hide_events': 1})
  40. response = self.client.post(
  41. reverse('misago:edit_event', kwargs={'event_id': event.id}),
  42. data={'action': 'toggle'},
  43. **self.ajax_header)
  44. self.assertEqual(response.status_code, 200)
  45. event = Event.objects.get(id=event.id)
  46. self.assertTrue(event.is_hidden)
  47. def test_show_event(self):
  48. """its possible to unhide event"""
  49. self.override_acl({'can_hide_events': 0})
  50. response = self.client.post(self.thread.get_absolute_url(),
  51. data={'thread_action': 'pin'})
  52. self.assertEqual(response.status_code, 302)
  53. event = self.thread.event_set.all()[0]
  54. event.is_hidden = True
  55. event.save()
  56. self.override_acl({'can_hide_events': 0})
  57. response = self.client.post(
  58. reverse('misago:edit_event', kwargs={'event_id': event.id}),
  59. data={'action': 'toggle'},
  60. **self.ajax_header)
  61. self.assertEqual(response.status_code, 403)
  62. self.override_acl({'can_hide_events': 1})
  63. response = self.client.post(
  64. reverse('misago:edit_event', kwargs={'event_id': event.id}),
  65. data={'action': 'toggle'},
  66. **self.ajax_header)
  67. self.assertEqual(response.status_code, 200)
  68. event = Event.objects.get(id=event.id)
  69. self.assertFalse(event.is_hidden)
  70. def test_delete_event(self):
  71. """its possible to delete event"""
  72. self.override_acl({'can_hide_events': 0})
  73. response = self.client.post(self.thread.get_absolute_url(),
  74. data={'thread_action': 'pin'})
  75. self.assertEqual(response.status_code, 302)
  76. self.override_acl({'can_hide_events': 0})
  77. response = self.client.post(self.thread.get_absolute_url(),
  78. data={'thread_action': 'unpin'})
  79. self.assertEqual(response.status_code, 302)
  80. event = self.thread.event_set.all()[0]
  81. self.override_acl({'can_hide_events': 0})
  82. response = self.client.post(
  83. reverse('misago:edit_event', kwargs={'event_id': event.id}),
  84. data={'action': 'delete'},
  85. **self.ajax_header)
  86. self.assertEqual(response.status_code, 403)
  87. self.override_acl({'can_hide_events': 1})
  88. response = self.client.post(
  89. reverse('misago:edit_event', kwargs={'event_id': event.id}),
  90. data={'action': 'delete'},
  91. **self.ajax_header)
  92. self.assertEqual(response.status_code, 403)
  93. self.override_acl({'can_hide_events': 2})
  94. response = self.client.post(
  95. reverse('misago:edit_event', kwargs={'event_id': event.id}),
  96. data={'action': 'delete'},
  97. **self.ajax_header)
  98. self.assertEqual(response.status_code, 200)
  99. thread = Thread.objects.get(id=self.thread.id)
  100. self.assertTrue(thread.has_events)
  101. self.assertTrue(thread.event_set.exists())
  102. event = self.thread.event_set.all()[0]
  103. self.override_acl({'can_hide_events': 2})
  104. response = self.client.post(
  105. reverse('misago:edit_event', kwargs={'event_id': event.id}),
  106. data={'action': 'delete'},
  107. **self.ajax_header)
  108. self.assertEqual(response.status_code, 200)
  109. thread = Thread.objects.get(id=self.thread.id)
  110. self.assertFalse(thread.has_events)
  111. self.assertFalse(thread.event_set.exists())