3
0
Fork 0

fix: correct "empty option" behavior for ObjectRef schema type

This commit is contained in:
Lance Edgar 2024-12-11 09:48:50 -06:00
parent 16ed125113
commit 74e2a4f0e2
5 changed files with 22 additions and 2 deletions

View file

@ -102,6 +102,11 @@ class TestObjectRef(DataTestCase):
value = typ.serialize(node, person)
self.assertEqual(value, person.uuid.hex)
# null w/ empty option
typ = mod.ObjectRef(self.request, empty_option=('bad', 'BAD'))
value = typ.serialize(node, colander.null)
self.assertEqual(value, 'bad')
def test_deserialize(self):
model = self.app.model
node = colander.SchemaNode(colander.String())

View file

@ -61,6 +61,7 @@ class TestObjectRefWidget(WebTestCase):
self.session.add(person)
self.session.commit()
# standard
node = colander.SchemaNode(PersonRef(self.request, session=self.session))
widget = self.make_widget()
field = self.make_field(node)
@ -68,6 +69,15 @@ class TestObjectRefWidget(WebTestCase):
self.assertIn('cstruct', values)
self.assertNotIn('url', values)
# readonly w/ empty option
node = colander.SchemaNode(PersonRef(self.request, session=self.session,
empty_option=('_empty_', '(empty)')))
widget = self.make_widget(readonly=True, url=lambda obj: '/foo')
field = self.make_field(node)
values = widget.get_template_values(field, '_empty_', {})
self.assertIn('cstruct', values)
self.assertNotIn('url', values)
class TestFileDownloadWidget(WebTestCase):