diff --git a/src/caosadvancedtools/json_schema_exporter.py b/src/caosadvancedtools/json_schema_exporter.py index 4e24861fbda90d4d88e033b936d0fc14ed3c7f6a..fa26746ef6331af00c54b1302103e3a02b1b4ce9 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 343075b8f0c766acc45804f773e7ad9248d704fa..898c84e36488aadb88166626ea17708450cfb74c 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():