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