Browse Source

non-js pagination on threads list

Rafał Pitoń 9 years ago
parent
commit
bacf683528
1 changed files with 36 additions and 0 deletions
  1. 36 0
      misago/threads/tests/test_threadslists.py

+ 36 - 0
misago/threads/tests/test_threadslists.py

@@ -361,6 +361,42 @@ class AllThreadsListTests(ThreadsListTestCase):
         self.assertTrue(positions['l'] > positions['g'])
         self.assertTrue(positions['l'] > positions['s'])
 
+    def test_noscript_pagination(self):
+        """threads list is paginated for users with js disabled"""
+        threads = []
+        for i in xrange(24 * 3):
+            threads.append(testutils.post_thread(category=self.first_category))
+
+        # secondary page renders
+        response = self.client.get('/?page=2')
+        self.assertEqual(response.status_code, 200)
+
+        for thread in threads[:24]:
+            self.assertNotIn(thread.get_absolute_url(), response.content)
+        for thread in threads[24:48]:
+            self.assertIn(thread.get_absolute_url(), response.content)
+        for thread in threads[48:]:
+            self.assertNotIn(thread.get_absolute_url(), response.content)
+
+        self.assertNotIn('/?page=1', response.content)
+        self.assertIn('/?page=3', response.content)
+
+        # third page renders
+        response = self.client.get('/?page=3')
+        self.assertEqual(response.status_code, 200)
+
+        for thread in threads[24:]:
+            self.assertNotIn(thread.get_absolute_url(), response.content)
+        for thread in threads[:24]:
+            self.assertIn(thread.get_absolute_url(), response.content)
+
+        self.assertIn('/?page=2', response.content)
+        self.assertNotIn('/?page=4', response.content)
+
+        # excessive page gives 404
+        response = self.client.get('/?page=4')
+        self.assertEqual(response.status_code, 404)
+
 
 class CategoryThreadsListTests(ThreadsListTestCase):
     def test_access_hidden_category(self):