Merge pull request #239 from p1c2u/fix/unmarshalling-nullable-objects-fix

Unmarshalling nullable objects
This commit is contained in:
A 2020-04-12 16:19:22 +01:00 committed by GitHub
commit 39688c7252
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 2 deletions

View file

@ -157,9 +157,16 @@ class ObjectUnmarshaller(ComplexUnmarshaller):
def model_factory(self): def model_factory(self):
return ModelFactory() return ModelFactory()
def __call__(self, value=NoValue): def unmarshal(self, value):
value = super(ObjectUnmarshaller, self).__call__(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: if self.schema.one_of:
properties = None properties = None
for one_of_schema in self.schema.one_of: for one_of_schema in self.schema.one_of:

View file

@ -408,6 +408,18 @@ class TestSchemaUnmarshallerCall(object):
assert result == 1.2 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): def test_schema_any_one_of(self, unmarshaller_factory):
schema = Schema(one_of=[ schema = Schema(one_of=[
Schema('string'), Schema('string'),