Merge "Fix empty selector XML bug"
This commit is contained in:
@@ -81,6 +81,8 @@ class Selector(object):
|
|||||||
if callable(elem):
|
if callable(elem):
|
||||||
obj = elem(obj)
|
obj = elem(obj)
|
||||||
else:
|
else:
|
||||||
|
if obj == '':
|
||||||
|
return ''
|
||||||
# Use indexing
|
# Use indexing
|
||||||
try:
|
try:
|
||||||
obj = obj[elem]
|
obj = obj[elem]
|
||||||
|
@@ -724,6 +724,32 @@ class TemplateTest(test.NoDBTestCase):
|
|||||||
result = master.serialize(obj)
|
result = master.serialize(obj)
|
||||||
self.assertEqual(expected_xml, result)
|
self.assertEqual(expected_xml, result)
|
||||||
|
|
||||||
|
def test__serialize_with_empty_datum_selector(self):
|
||||||
|
# Our test object to serialize
|
||||||
|
obj = {
|
||||||
|
'test': {
|
||||||
|
'name': 'foobar',
|
||||||
|
'image': ''
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
root = xmlutil.TemplateElement('test', selector='test',
|
||||||
|
name='name')
|
||||||
|
master = xmlutil.MasterTemplate(root, 1)
|
||||||
|
root_slave = xmlutil.TemplateElement('test', selector='test')
|
||||||
|
image = xmlutil.SubTemplateElement(root_slave, 'image',
|
||||||
|
selector='image')
|
||||||
|
image.set('id')
|
||||||
|
xmlutil.make_links(image, 'links')
|
||||||
|
slave = xmlutil.SlaveTemplate(root_slave, 1)
|
||||||
|
master.attach(slave)
|
||||||
|
|
||||||
|
siblings = master._siblings()
|
||||||
|
result = master._serialize(None, obj, siblings)
|
||||||
|
self.assertEqual(result.tag, 'test')
|
||||||
|
self.assertEqual(result[0].tag, 'image')
|
||||||
|
self.assertEqual(result[0].get('id'), str(obj['test']['image']))
|
||||||
|
|
||||||
|
|
||||||
class MasterTemplateBuilder(xmlutil.TemplateBuilder):
|
class MasterTemplateBuilder(xmlutil.TemplateBuilder):
|
||||||
def construct(self):
|
def construct(self):
|
||||||
|
Reference in New Issue
Block a user