]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Simplify a stack update unit test
authorZane Bitter <zbitter@redhat.com>
Thu, 13 Jun 2013 18:03:27 +0000 (20:03 +0200)
committerZane Bitter <zbitter@redhat.com>
Fri, 21 Jun 2013 16:19:15 +0000 (18:19 +0200)
Separate out the two resources into separate classes that can be mocked (or
not) independently.

Change-Id: I0d8fc73262256330c0f3e7fd50cc655a12332dc4

heat/tests/test_parser.py

index d632292127f5c9d465b64e6335a950bc6421677c..268dc8e9319f45478d803e43a873de23b0c755e0 100644 (file)
@@ -1222,17 +1222,27 @@ class StackTest(HeatTestCase):
         check that rollback still works with dynamic metadata
         this test fails the second instance
         '''
+
+        class ResourceTypeA(generic_rsrc.GenericResource):
+            count = 0
+
+            def handle_create(self):
+                ResourceTypeA.count += 1
+                self.resource_id_set('%s%d' % (self.name, self.count))
+
+        resource._register_class('ResourceTypeA', ResourceTypeA)
+
         # patch in a dummy property schema for GenericResource
         dummy_schema = {'Foo': {'Type': 'String'}}
         generic_rsrc.GenericResource.properties_schema = dummy_schema
         tmpl = {'Resources': {
-                'AResource': {'Type': 'GenericResourceType',
+                'AResource': {'Type': 'ResourceTypeA',
                               'Properties': {'Foo': 'abc'}},
                 'BResource': {'Type': 'GenericResourceType',
                               'Properties': {
                               'Foo': {'Ref': 'AResource'}}}}}
         tmpl2 = {'Resources': {
-                 'AResource': {'Type': 'GenericResourceType',
+                 'AResource': {'Type': 'ResourceTypeA',
                                'Properties': {'Foo': 'smelly'}},
                  'BResource': {'Type': 'GenericResourceType',
                                'Properties': {
@@ -1254,58 +1264,24 @@ class StackTest(HeatTestCase):
                          (parser.Stack.CREATE, parser.Stack.COMPLETE))
         self.assertEqual(self.stack['AResource'].properties['Foo'], 'abc')
         self.assertEqual(self.stack['BResource'].properties['Foo'],
-                         'AResource')
+                         'AResource1')
 
-        self.m.StubOutWithMock(generic_rsrc.GenericResource, 'FnGetRefId')
         self.m.StubOutWithMock(generic_rsrc.GenericResource, 'handle_create')
 
         # Calls to GenericResource.handle_update will raise
         # resource.UpdateReplace because we've not specified the modified
         # key/property in update_allowed_keys/update_allowed_properties
 
-        generic_rsrc.GenericResource.FnGetRefId().AndReturn(
-            'AResource')
-        generic_rsrc.GenericResource.FnGetRefId().AndReturn(
-            'inst-007')
-        # self.state_set(self.UPDATE, self.IN_PROGRESS)
-        generic_rsrc.GenericResource.FnGetRefId().AndReturn(
-            'inst-007')
-        # self.state_set(self.DELETE, self.IN_PROGRESS)
-        generic_rsrc.GenericResource.FnGetRefId().AndReturn(
-            'inst-007')
-        # self.state_set(self.DELETE, self.COMPLETE)
-        generic_rsrc.GenericResource.FnGetRefId().AndReturn(
-            'inst-007')
-        # self.properties.validate()
-        generic_rsrc.GenericResource.FnGetRefId().AndReturn(
-            'inst-007')
-        # self.state_set(self.CREATE, self.IN_PROGRESS)
-        generic_rsrc.GenericResource.FnGetRefId().AndReturn(
-            'inst-007')
-
         # mock to make the replace fail when creating the second
         # replacement resource
-        generic_rsrc.GenericResource.handle_create().AndReturn(None)
         generic_rsrc.GenericResource.handle_create().AndRaise(Exception)
 
         # Calls to GenericResource.handle_update will raise
         # resource.UpdateReplace because we've not specified the modified
         # key/property in update_allowed_keys/update_allowed_properties
 
-        # self.state_set(self.DELETE, self.IN_PROGRESS)
-        generic_rsrc.GenericResource.FnGetRefId().AndReturn(
-            'inst-007')
-        # self.state_set(self.DELETE, self.IN_PROGRESS)
-        generic_rsrc.GenericResource.FnGetRefId().AndReturn(
-            'inst-007')
-
-        generic_rsrc.GenericResource.handle_create().AndReturn(None)
         generic_rsrc.GenericResource.handle_create().AndReturn(None)
 
-        # reverting to AResource
-        generic_rsrc.GenericResource.FnGetRefId().MultipleTimes().AndReturn(
-            'AResource')
-
         self.m.ReplayAll()
 
         updated_stack = parser.Stack(self.ctx, 'updated_stack',
@@ -1315,6 +1291,8 @@ class StackTest(HeatTestCase):
         self.assertEqual(self.stack.state,
                          (parser.Stack.ROLLBACK, parser.Stack.COMPLETE))
         self.assertEqual(self.stack['AResource'].properties['Foo'], 'abc')
+        self.assertEqual(self.stack['BResource'].properties['Foo'],
+                         'AResource3')
 
         self.m.VerifyAll()