|
@@ -0,0 +1,138 @@
|
|
|
|
+from django.core.urlresolvers import reverse
|
|
|
|
+
|
|
|
|
+from misago.acl.testutils import override_acl
|
|
|
|
+from misago.forums.models import Forum
|
|
|
|
+from misago.users.testutils import AuthenticatedUserTestCase
|
|
|
|
+
|
|
|
|
+from misago.threads.models import Thread, Event
|
|
|
|
+from misago.threads.testutils import post_thread, reply_thread
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class EventsViewTestCase(AuthenticatedUserTestCase):
|
|
|
|
+ ajax_header = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'}
|
|
|
|
+
|
|
|
|
+ def setUp(self):
|
|
|
|
+ super(EventsViewTestCase, self).setUp()
|
|
|
|
+
|
|
|
|
+ self.forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
|
|
|
|
+ self.forum.labels = []
|
|
|
|
+
|
|
|
|
+ self.thread = post_thread(self.forum)
|
|
|
|
+
|
|
|
|
+ def override_acl(self, new_acl):
|
|
|
|
+ new_acl.update({
|
|
|
|
+ 'can_see': True,
|
|
|
|
+ 'can_browse': True,
|
|
|
|
+ 'can_see_all_threads': True,
|
|
|
|
+ 'can_see_own_threads': False,
|
|
|
|
+ 'can_pin_threads': True
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ forums_acl = self.user.acl
|
|
|
|
+ forums_acl['visible_forums'].append(self.forum.pk)
|
|
|
|
+ forums_acl['forums'][self.forum.pk] = new_acl
|
|
|
|
+ override_acl(self.user, forums_acl)
|
|
|
|
+
|
|
|
|
+ def test_hide_event(self):
|
|
|
|
+ """its possible to hide event"""
|
|
|
|
+ self.override_acl({'can_hide_events': 0})
|
|
|
|
+ response = self.client.post(self.thread.get_absolute_url(),
|
|
|
|
+ data={'thread_action': 'pin'})
|
|
|
|
+ self.assertEqual(response.status_code, 302)
|
|
|
|
+
|
|
|
|
+ event = self.thread.event_set.all()[0]
|
|
|
|
+ self.override_acl({'can_hide_events': 0})
|
|
|
|
+ response = self.client.post(
|
|
|
|
+ reverse('misago:edit_event', kwargs={'event_id': event.id}),
|
|
|
|
+ data={'action': 'toggle'},
|
|
|
|
+ **self.ajax_header)
|
|
|
|
+ self.assertEqual(response.status_code, 403)
|
|
|
|
+
|
|
|
|
+ self.override_acl({'can_hide_events': 1})
|
|
|
|
+ response = self.client.post(
|
|
|
|
+ reverse('misago:edit_event', kwargs={'event_id': event.id}),
|
|
|
|
+ data={'action': 'toggle'},
|
|
|
|
+ **self.ajax_header)
|
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
|
+
|
|
|
|
+ event = Event.objects.get(id=event.id)
|
|
|
|
+ self.assertTrue(event.is_hidden)
|
|
|
|
+
|
|
|
|
+ def test_show_event(self):
|
|
|
|
+ """its possible to unhide event"""
|
|
|
|
+ self.override_acl({'can_hide_events': 0})
|
|
|
|
+ response = self.client.post(self.thread.get_absolute_url(),
|
|
|
|
+ data={'thread_action': 'pin'})
|
|
|
|
+ self.assertEqual(response.status_code, 302)
|
|
|
|
+
|
|
|
|
+ event = self.thread.event_set.all()[0]
|
|
|
|
+ event.is_hidden = True
|
|
|
|
+ event.save()
|
|
|
|
+
|
|
|
|
+ self.override_acl({'can_hide_events': 0})
|
|
|
|
+ response = self.client.post(
|
|
|
|
+ reverse('misago:edit_event', kwargs={'event_id': event.id}),
|
|
|
|
+ data={'action': 'toggle'},
|
|
|
|
+ **self.ajax_header)
|
|
|
|
+ self.assertEqual(response.status_code, 403)
|
|
|
|
+
|
|
|
|
+ self.override_acl({'can_hide_events': 1})
|
|
|
|
+ response = self.client.post(
|
|
|
|
+ reverse('misago:edit_event', kwargs={'event_id': event.id}),
|
|
|
|
+ data={'action': 'toggle'},
|
|
|
|
+ **self.ajax_header)
|
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
|
+
|
|
|
|
+ event = Event.objects.get(id=event.id)
|
|
|
|
+ self.assertFalse(event.is_hidden)
|
|
|
|
+
|
|
|
|
+ def test_delete_event(self):
|
|
|
|
+ """its possible to delete event"""
|
|
|
|
+ self.override_acl({'can_hide_events': 0})
|
|
|
|
+ response = self.client.post(self.thread.get_absolute_url(),
|
|
|
|
+ data={'thread_action': 'pin'})
|
|
|
|
+ self.assertEqual(response.status_code, 302)
|
|
|
|
+
|
|
|
|
+ self.override_acl({'can_hide_events': 0})
|
|
|
|
+ response = self.client.post(self.thread.get_absolute_url(),
|
|
|
|
+ data={'thread_action': 'unpin'})
|
|
|
|
+ self.assertEqual(response.status_code, 302)
|
|
|
|
+
|
|
|
|
+ event = self.thread.event_set.all()[0]
|
|
|
|
+
|
|
|
|
+ self.override_acl({'can_hide_events': 0})
|
|
|
|
+ response = self.client.post(
|
|
|
|
+ reverse('misago:edit_event', kwargs={'event_id': event.id}),
|
|
|
|
+ data={'action': 'delete'},
|
|
|
|
+ **self.ajax_header)
|
|
|
|
+ self.assertEqual(response.status_code, 403)
|
|
|
|
+
|
|
|
|
+ self.override_acl({'can_hide_events': 1})
|
|
|
|
+ response = self.client.post(
|
|
|
|
+ reverse('misago:edit_event', kwargs={'event_id': event.id}),
|
|
|
|
+ data={'action': 'delete'},
|
|
|
|
+ **self.ajax_header)
|
|
|
|
+ self.assertEqual(response.status_code, 403)
|
|
|
|
+
|
|
|
|
+ self.override_acl({'can_hide_events': 2})
|
|
|
|
+ response = self.client.post(
|
|
|
|
+ reverse('misago:edit_event', kwargs={'event_id': event.id}),
|
|
|
|
+ data={'action': 'delete'},
|
|
|
|
+ **self.ajax_header)
|
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
|
+
|
|
|
|
+ thread = Thread.objects.get(id=self.thread.id)
|
|
|
|
+ self.assertTrue(thread.has_events)
|
|
|
|
+ self.assertTrue(thread.event_set.exists())
|
|
|
|
+
|
|
|
|
+ event = self.thread.event_set.all()[0]
|
|
|
|
+ self.override_acl({'can_hide_events': 2})
|
|
|
|
+ response = self.client.post(
|
|
|
|
+ reverse('misago:edit_event', kwargs={'event_id': event.id}),
|
|
|
|
+ data={'action': 'delete'},
|
|
|
|
+ **self.ajax_header)
|
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
|
+
|
|
|
|
+ thread = Thread.objects.get(id=self.thread.id)
|
|
|
|
+ self.assertFalse(thread.has_events)
|
|
|
|
+ self.assertFalse(thread.event_set.exists())
|