Merge "fix ListObjectMixin._obj_from_primitive bug"

This commit is contained in:
Zuul 2019-10-11 22:51:50 +00:00 committed by Gerrit Code Review
commit dd2bb0486e
2 changed files with 71 additions and 1 deletions

View File

@ -331,7 +331,7 @@ class ListObjectMixin(base.ObjectListBase):
else:
setattr(instance, field, value)
instance._obj_changes = set(
instance._changed_fields = set(
primitive.get('designate_object.changes', []))
instance._obj_original_values = \
primitive.get('designate_object.original_values', {})

View File

@ -608,6 +608,76 @@ class ListObjectMixinTest(oslotest.base.BaseTestCase):
self.assertEqual('One', obj[0].id)
self.assertEqual('Two', obj[1].id)
def test_from_primitive_with_changes(self):
primitive = {
'designate_object.name': 'TestObjectList',
'designate_object.data': {
'objects': [
{'designate_object.changes': ['id'],
'designate_object.data': {'id': 'One'},
'designate_object.name': 'TestObject',
'designate_object.namespace': 'designate',
'designate_object.version': '1.0'},
{'designate_object.changes': ['id'],
'designate_object.data': {'id': 'Two'},
'designate_object.name': 'TestObject',
'designate_object.namespace': 'designate',
'designate_object.version': '1.0'},
],
},
'designate_object.changes': ['objects'],
'designate_object.namespace': 'designate',
'designate_object.version': '1.0',
}
obj = objects.DesignateObject.from_primitive(primitive)
self.assertEqual(2, len(obj))
self.assertEqual(2, len(obj.objects))
self.assertIsInstance(obj[0], TestObject)
self.assertIsInstance(obj[1], TestObject)
self.assertEqual('One', obj[0].id)
self.assertEqual('Two', obj[1].id)
self.assertEqual(1, len(obj.obj_what_changed()))
def test_from_primitive_no_changes(self):
primitive = {
'designate_object.name': 'TestObjectList',
'designate_object.data': {
'objects': [
{'designate_object.changes': [],
'designate_object.data': {'id': 'One'},
'designate_object.name': 'TestObject',
'designate_object.namespace': 'designate',
'designate_object.version': '1.0'},
{'designate_object.changes': [],
'designate_object.data': {'id': 'Two'},
'designate_object.name': 'TestObject',
'designate_object.namespace': 'designate',
'designate_object.version': '1.0'},
],
},
'designate_object.changes': [],
'designate_object.namespace': 'designate',
'designate_object.version': '1.0',
}
obj = objects.DesignateObject.from_primitive(primitive)
self.assertEqual(2, len(obj))
self.assertEqual(2, len(obj.objects))
self.assertIsInstance(obj[0], TestObject)
self.assertIsInstance(obj[1], TestObject)
self.assertEqual('One', obj[0].id)
self.assertEqual('Two', obj[1].id)
self.assertEqual(0, len(obj.obj_what_changed()))
def test_cast_to_list(self):
# Create a few objects
obj_one = TestObject()