From e6a1389065d75d3fad731fa8edbe434c125a5516 Mon Sep 17 00:00:00 2001 From: Daniel <d.hornung@indiscale.com> Date: Fri, 24 Nov 2023 14:46:52 +0100 Subject: [PATCH] FIX: jsex: Better do_not_create --- src/caosadvancedtools/json_schema_exporter.py | 4 ++-- unittests/test_json_schema_exporter.py | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/caosadvancedtools/json_schema_exporter.py b/src/caosadvancedtools/json_schema_exporter.py index 4e24861f..fa26746e 100644 --- a/src/caosadvancedtools/json_schema_exporter.py +++ b/src/caosadvancedtools/json_schema_exporter.py @@ -245,11 +245,11 @@ class JsonSchemaExporter: prop_name = prop.datatype if isinstance(prop.datatype, db.Entity): prop_name = prop.datatype.name - if prop_name in self._do_not_retrieve: + if prop.name in self._do_not_retrieve: values = [] else: values = self._retrieve_enum_values(f"RECORD '{prop_name}'") - if prop_name in self._do_not_create: + if prop.name in self._do_not_create: # Only a simple list of values json_prop["enum"] = values else: diff --git a/unittests/test_json_schema_exporter.py b/unittests/test_json_schema_exporter.py index 343075b8..898c84e3 100644 --- a/unittests/test_json_schema_exporter.py +++ b/unittests/test_json_schema_exporter.py @@ -635,6 +635,12 @@ RT1: RT2: obligatory_properties: RT1: + +RT3: + obligatory_properties: + RT1_prop: + datatype: RT1 + description: property description """ model = parse_model_from_string(model_str) # First test: without reference @@ -735,6 +741,20 @@ RT2: }, "$schema": "https://json-schema.org/draft/2020-12/schema" }""" + # No effect of do_not_create (real property name should be used) + rt3_dict = rtjs(model.get_deep("RT3"), do_not_create=["RT1"]) + rt1_prop = rt3_dict["properties"]["RT1_prop"] + assert rt1_prop["description"] == "property description" + assert "oneOf" in rt1_prop.keys() + assert "enum" not in rt1_prop.keys() + + # Now we use the real property name + rt3_dict = rtjs(model.get_deep("RT3"), do_not_create=["RT1_prop"]) + rt1_prop = rt3_dict["properties"]["RT1_prop"] + assert rt1_prop["description"] == "property description" + assert "oneOf" not in rt1_prop.keys() + assert "enum" in rt1_prop.keys() + assert rt1_prop["enum"][0] == "103" def test_schema_modification(): -- GitLab