From b2d7b7db7d949c33c8e9ce36965262a9aa12b112 Mon Sep 17 00:00:00 2001 From: Chris Wacek Date: Wed, 5 Jun 2019 21:41:41 -0400 Subject: [PATCH] bugfix: Fix #156. This was a silly bug. Didn't explicitly call validate when resolving types in __new__ --- python_jsonschema_objects/classbuilder.py | 1 + test/test_regression_156.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 test/test_regression_156.py diff --git a/python_jsonschema_objects/classbuilder.py b/python_jsonschema_objects/classbuilder.py index 65dbfad..b455580 100644 --- a/python_jsonschema_objects/classbuilder.py +++ b/python_jsonschema_objects/classbuilder.py @@ -142,6 +142,7 @@ def __new__(cls, **props): cls, klass)) try: obj = klass(**props) + obj.validate() except validators.ValidationError as e: validation_errors.append((klass, e)) else: diff --git a/test/test_regression_156.py b/test/test_regression_156.py new file mode 100644 index 0000000..8bb3af4 --- /dev/null +++ b/test/test_regression_156.py @@ -0,0 +1,18 @@ +import pytest # noqa +import python_jsonschema_objects as pjo + + +def test_regression_156(markdown_examples): + builder = pjo.ObjectBuilder(markdown_examples['MultipleObjects'], resolved=markdown_examples) + classes = builder.build_classes(named_only=True) + + er = classes.ErrorResponse(message="Danger!", status=99) + vgr = classes.VersionGetResponse(local=False, version="1.2.3") + + # round-trip serialize-deserialize into named classes + classes.ErrorResponse.from_json(er.serialize()) + classes.VersionGetResponse.from_json(vgr.serialize()) + + # round-trip serialize-deserialize into class defined with `oneOf` + classes.Multipleobjects.from_json(er.serialize()) + classes.Multipleobjects.from_json(vgr.serialize())