소스 검색

Added more tests for result paging helpers.

Nuwan Goonasekera 10 년 전
부모
커밋
ad3821f6e5
1개의 변경된 파일49개의 추가작업 그리고 15개의 파일을 삭제
  1. 49 15
      test/test_cloud_helpers.py

+ 49 - 15
test/test_cloud_helpers.py

@@ -1,44 +1,78 @@
 import itertools
 
 from cloudbridge.cloud.base import ClientPagedResultList
+from cloudbridge.cloud.base import ServerPagedResultList
 from test.helpers import ProviderTestBase
 
 
+class DummyResult(object):
+
+    def __init__(self, objid, name):
+        self.id = objid
+        self.name = name
+
+    def __repr__(self):
+        return "%s (%s)" % (self.id, self.name)
+
+
 class CloudHelpersTestCase(ProviderTestBase):
 
     def __init__(self, methodName, provider):
         super(CloudHelpersTestCase, self).__init__(
             methodName=methodName, provider=provider)
 
-    def test_result_list_conversion(self):
-
-        class DummyResult(object):
-
-            def __init__(self, objid, name):
-                self.id = objid
-                self.name = name
+    def setUp(self):
+        super(CloudHelpersTestCase, self).setUp()
+        self.objects = [DummyResult(1, "One"),
+                        DummyResult(2, "Two"),
+                        DummyResult(3, "Three"),
+                        DummyResult(4, "Four"),
+                        ]
 
-            def __repr__(self):
-                return "%s (%s)" % (self.id, self.name)
-
-        objects = [DummyResult(1, "One"),
-                   DummyResult(2, "Two"),
-                   DummyResult(3, "Three"),
-                   DummyResult(4, "Four"),
-                   ]
+    def test_client_paged_result_list(self):
+        objects = self.objects
 
+        # A list with limit=2 and marker=None
         results = ClientPagedResultList(self.provider, objects, 2, None)
         self.assertListEqual(results, list(itertools.islice(objects, 2)))
         self.assertEqual(results.marker, objects[1].id)
+        self.assertTrue(results.is_truncated)
         self.assertTrue(results.supports_total)
         self.assertEqual(results.total_results, 4)
+        self.assertEqual(results.data, objects)
 
+        # A list with limit=2 and marker=2
         results = ClientPagedResultList(self.provider, objects, 2, 2)
         self.assertListEqual(results, list(itertools.islice(objects, 2, 4)))
         self.assertEqual(results.marker, None)
+        self.assertFalse(results.is_truncated)
         self.assertTrue(results.supports_total)
         self.assertEqual(results.total_results, 4)
+        self.assertEqual(results.data, objects)
 
+        # A list with limit=2 and marker=3
         results = ClientPagedResultList(self.provider, objects, 2, 3)
         self.assertListEqual(results, list(itertools.islice(objects, 3, 4)))
+        self.assertFalse(results.is_truncated)
         self.assertEqual(results.marker, None)
+        self.assertEqual(results.data, objects)
+
+        self.assertFalse(results.supports_server_paging, "Client paged result"
+                         " lists should return False for server paging.")
+
+    def test_server_paged_result_list(self):
+
+        objects = list(itertools.islice(self.objects, 2))
+        results = ServerPagedResultList(is_truncated=True,
+                                        marker=objects[-1].id,
+                                        supports_total=True,
+                                        total=2, data=objects)
+        self.assertTrue(results.is_truncated)
+        self.assertListEqual(results, objects)
+        self.assertEqual(results.marker, objects[-1].id)
+        self.assertTrue(results.supports_total)
+        self.assertEqual(results.total_results, 2)
+        self.assertTrue(results.supports_server_paging, "Server paged result"
+                        " lists should return True for server paging.")
+        with self.assertRaises(NotImplementedError):
+            _ = results.data