Rafał Pitoń 10 years ago
parent
commit
5088f73ca6

+ 27 - 0
misago/threads/tests/test_forumthreads_view.py

@@ -1295,6 +1295,33 @@ class ForumThreadsViewTests(AuthenticatedUserTestCase):
         response = self.client.post(self.link, data={
             'action': 'delete', 'item': [t.pk for t in threads]
         })
+        self.assertEqual(response.status_code, 302)
+        self.assertTrue(response['location'].endswith(self.link))
 
         forum = Forum.objects.get(pk=self.forum.pk)
         self.assertEqual(forum.threads, 0)
+
+        threads = [testutils.post_thread(self.forum) for t in xrange(60)]
+
+        second_page_link = reverse('misago:forum', kwargs={
+            'forum_id': self.forum.id,
+            'forum_slug': self.forum.slug,
+            'page': 2
+        })
+
+        self.override_acl(test_acl)
+        response = self.client.post(second_page_link, data={
+            'action': 'delete', 'item': [t.pk for t in threads[20:40]]
+        })
+        self.assertEqual(response.status_code, 302)
+        self.assertTrue(response['location'].endswith(second_page_link))
+
+        forum = Forum.objects.get(pk=self.forum.pk)
+        self.assertEqual(forum.threads, 40)
+
+        self.override_acl(test_acl)
+        response = self.client.post(second_page_link, data={
+            'action': 'delete', 'item': [t.pk for t in threads[:-20]]
+        })
+        self.assertEqual(response.status_code, 302)
+        self.assertTrue(response['location'].endswith(self.link))

+ 53 - 0
misago/threads/tests/test_thread_view.py

@@ -313,3 +313,56 @@ class ThreadViewModerationTests(ThreadViewTestCase):
         # we made forum empty, assert that board index renders
         response = self.client.get(reverse('misago:index'))
         self.assertEqual(response.status_code, 200)
+
+    def test_delete_posts(self):
+        """moderation allows for deleting posts"""
+        posts = [reply_thread(self.thread) for t in xrange(10)]
+
+        self.thread.synchronize()
+        self.assertEqual(self.thread.replies, 10)
+
+        test_acl = {
+            'can_hide_posts': 2
+        }
+
+        self.override_acl(test_acl)
+        response = self.client.get(self.thread.get_absolute_url())
+        self.assertEqual(response.status_code, 200)
+        self.assertIn("Delete posts", response.content)
+
+        self.override_acl(test_acl)
+        response = self.client.post(self.thread.get_absolute_url(), data={
+            'action': 'delete', 'item': [p.pk for p in posts]
+        })
+        self.assertEqual(response.status_code, 302)
+        self.assertTrue(
+            response['location'].endswith(self.thread.get_absolute_url()))
+
+        thread = Thread.objects.get(pk=self.thread.pk)
+        self.assertEqual(thread.replies, 0)
+
+        posts = [reply_thread(self.thread) for t in xrange(30)]
+
+        second_page_link = reverse('misago:thread', kwargs={
+            'thread_id': self.thread.id,
+            'thread_slug': self.thread.slug,
+            'page': 2
+        })
+
+        self.override_acl(test_acl)
+        response = self.client.post(second_page_link, data={
+            'action': 'delete', 'item': [p.pk for p in posts[10:20]]
+        })
+        self.assertEqual(response.status_code, 302)
+        self.assertTrue(response['location'].endswith(second_page_link))
+
+        thread = Thread.objects.get(pk=self.thread.pk)
+        self.assertEqual(thread.replies, 20)
+
+        self.override_acl(test_acl)
+        response = self.client.post(second_page_link, data={
+            'action': 'delete', 'item': [p.pk for p in posts[:-10]]
+        })
+        self.assertEqual(response.status_code, 302)
+        self.assertTrue(
+            response['location'].endswith(self.thread.get_absolute_url()))