瀏覽代碼

Added find method for region service and refactored tests

Nuwan Goonasekera 8 年之前
父節點
當前提交
e3efd225c8
共有 3 個文件被更改,包括 17 次插入22 次删除
  1. 3 0
      cloudbridge/cloud/base/services.py
  2. 10 0
      cloudbridge/cloud/interfaces/services.py
  3. 4 22
      test/test_region_service.py

+ 3 - 0
cloudbridge/cloud/base/services.py

@@ -139,6 +139,9 @@ class BaseRegionService(
     def __init__(self, provider):
         super(BaseRegionService, self).__init__(provider)
 
+    def find(self, name):
+        return [region for region in self if region.name == name]
+
 
 class BaseNetworkService(
         BasePageableObjectMixin, NetworkService, BaseCloudService):

+ 10 - 0
cloudbridge/cloud/interfaces/services.py

@@ -1125,3 +1125,13 @@ class RegionService(PageableObjectMixin, CloudService):
         :return:  list of region objects
         """
         pass
+
+    @abstractmethod
+    def find(self, name):
+        """
+        Searches for a region by a given list of attributes.
+
+        :rtype: ``object`` of :class:`.Region`
+        :return: a Region object
+        """
+        pass

+ 4 - 22
test/test_region_service.py

@@ -1,5 +1,6 @@
 from test import helpers
 from test.helpers import ProviderTestBase
+from test.helpers import standard_interface_tests as sit
 
 from cloudbridge.cloud.interfaces import Region
 
@@ -15,10 +16,8 @@ class CloudRegionServiceTestCase(ProviderTestBase):
         and whether zones are returned appropriately.
         """
         regions = self.provider.compute.regions.list()
-
-        # check iteration
-        iter_regions = list(self.provider.compute.regions)
-        self.assertListEqual(iter_regions, regions)
+        sit.check_standard_behaviour(
+            self, self.provider.compute.regions, regions[0])
 
         for region in regions:
             self.assertIsInstance(
@@ -29,22 +28,6 @@ class CloudRegionServiceTestCase(ProviderTestBase):
                 region.name,
                 "Region name should be a non-empty string")
 
-        region = self.provider.compute.regions.get(regions[0].id)
-        self.assertEqual(
-            region,
-            regions[0],
-            "List and get methods should return the same regions")
-
-        self.assertTrue(
-            region.id in repr(region),
-            "repr(obj) should contain the object id so that the object"
-            " can be reconstructed, but does not.")
-
-        self.assertTrue(
-            region.name in region.to_json(),
-            "Region name {0} not in JSON representation {1}".format(
-                region.name, region.to_json()))
-
     @helpers.skipIfNoService(['compute.regions'])
     def test_regions_unique(self):
         """
@@ -70,8 +53,7 @@ class CloudRegionServiceTestCase(ProviderTestBase):
         """
         zone_find_count = 0
         test_zone = helpers.get_provider_test_data(self.provider, "placement")
-        regions = self.provider.compute.regions.list()
-        for region in regions:
+        for region in self.provider.compute.regions:
             self.assertTrue(region.name)
             for zone in region.zones:
                 self.assertTrue(zone.id)