Merge "fix ListObjectMixin._obj_from_primitive bug"
This commit is contained in:
commit
dd2bb0486e
@ -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', {})
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user