Unmarshalling nullable objects

This commit is contained in:
p1c2u 2020-04-12 14:59:22 +01:00
parent 1270d5a6b9
commit 7307794656
2 changed files with 21 additions and 2 deletions

View file

@ -157,9 +157,16 @@ class ObjectUnmarshaller(ComplexUnmarshaller):
def model_factory(self):
return ModelFactory()
def __call__(self, value=NoValue):
value = super(ObjectUnmarshaller, self).__call__(value)
def unmarshal(self, value):
try:
value = self.formatter.unmarshal(value)
except ValueError as exc:
raise InvalidSchemaFormatValue(
value, self.schema.format, exc)
else:
return self._unmarshal_object(value)
def _unmarshal_object(self, value=NoValue):
if self.schema.one_of:
properties = None
for one_of_schema in self.schema.one_of:

View file

@ -408,6 +408,18 @@ class TestSchemaUnmarshallerCall(object):
assert result == 1.2
def test_object_nullable(self, unmarshaller_factory):
schema = Schema(
'object',
properties={
'foo': Schema('object', nullable=True),
},
)
value = {'foo': None}
result = unmarshaller_factory(schema)(value)
assert result == {'foo': None}
def test_schema_any_one_of(self, unmarshaller_factory):
schema = Schema(one_of=[
Schema('string'),