From 6f420b3bf2384a4a4e96bdbd139d382d64b4e08a Mon Sep 17 00:00:00 2001 From: Daniel <d.hornung@indiscale.com> Date: Thu, 23 Nov 2023 17:32:45 +0100 Subject: [PATCH] ENH: More description in JSX --- src/caosadvancedtools/json_schema_exporter.py | 2 + unittests/test_json_schema_exporter.py | 39 +++++++++++-------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/caosadvancedtools/json_schema_exporter.py b/src/caosadvancedtools/json_schema_exporter.py index 0d9b9bcf..4e24861f 100644 --- a/src/caosadvancedtools/json_schema_exporter.py +++ b/src/caosadvancedtools/json_schema_exporter.py @@ -368,6 +368,8 @@ class JsonSchemaExporter: schema["required"] = self._make_required_list(rt) schema["additionalProperties"] = self._additional_properties + if rt.description: + schema["description"] = rt.description if rt.name: schema["title"] = rt.name diff --git a/unittests/test_json_schema_exporter.py b/unittests/test_json_schema_exporter.py index 5b3cd416..343075b8 100644 --- a/unittests/test_json_schema_exporter.py +++ b/unittests/test_json_schema_exporter.py @@ -36,14 +36,26 @@ from unittest.mock import Mock, patch from caosadvancedtools.json_schema_exporter import recordtype_to_json_schema as rtjs from caosadvancedtools.models.parser import parse_model_from_string -RT1 = parse_model_from_string(""" +GLOBAL_MODEL = parse_model_from_string(""" RT1: description: some description obligatory_properties: some_date: datatype: DATETIME description: Just some date -""").get_deep("RT1") +RT21: + obligatory_properties: + RT1: + datatype: LIST<RT1> +RT31: + obligatory_properties: + RT1: + +""") + +RT1 = GLOBAL_MODEL.get_deep("RT1") +RT21 = GLOBAL_MODEL.get_deep("RT21") +RT31 = GLOBAL_MODEL.get_deep("RT31") def _mock_execute_query(query_string, unique=False, **kwargs): @@ -82,24 +94,15 @@ def _mock_execute_query(query_string, unique=False, **kwargs): elif query_string == "FIND RECORDTYPE WITH name='RT1'" and unique is True: return RT1 elif query_string == "FIND RECORDTYPE WITH name='RT21'" and unique is True: - model_str = """ -RT1: -RT21: - obligatory_properties: - RT1: - datatype: LIST<RT1> -RT3: - obligatory_properties: - RT21: - """ - model = parse_model_from_string(model_str) - return model.get_deep("RT21") + return RT21 + elif query_string == "FIND RECORDTYPE WITH name='RT31'" and unique is True: + return RT31 elif query_string == "SELECT name, id FROM RECORD": return all_records elif query_string == "SELECT name, id FROM FILE": return all_files else: - # print(f"Query string: {query_string}") + print(f"Query string: {query_string}") if unique is True: return db.Entity() return db.Container() @@ -642,6 +645,7 @@ RT2: "some_date" ], "additionalProperties": true, + "description": "some description", "title": "RT1", "properties": { "some_date": { @@ -658,8 +662,7 @@ RT2: ] } }, - "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "some description" + "$schema": "https://json-schema.org/draft/2020-12/schema" }""" # Second test: with reference rt2_deep = model.get_deep("RT2") @@ -688,6 +691,7 @@ RT2: "some_date" ], "additionalProperties": true, + "description": "some description", "title": "Create new", "properties": { "some_date": { @@ -958,6 +962,7 @@ RT3: == "{'RT1': {'ui:widget': 'checkboxes', 'ui:options': {'inline': True}}}") +@patch("linkahead.execute_query", new=Mock(side_effect=_mock_execute_query)) def test_schema_customization_with_dicts(): """Testing the ``additional_json_schema`` and ``additional_ui_schema`` parameters.""" model_str = """ -- GitLab