From 5dc99c6113a81a885669c18868a66b04d207bfc2 Mon Sep 17 00:00:00 2001 From: Daniel <d.hornung@indiscale.com> Date: Fri, 3 Nov 2023 10:57:04 +0100 Subject: [PATCH] ENH: json schema export now handles file properties. --- src/caosadvancedtools/json_schema_exporter.py | 4 ++-- unittests/test_json_schema_exporter.py | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/caosadvancedtools/json_schema_exporter.py b/src/caosadvancedtools/json_schema_exporter.py index 75f1a188..f37ca030 100644 --- a/src/caosadvancedtools/json_schema_exporter.py +++ b/src/caosadvancedtools/json_schema_exporter.py @@ -143,8 +143,8 @@ class JsonSchemaExporter: values = self._retrieve_enum_values("RECORD") + self._retrieve_enum_values("FILE") json_prop["enum"] = values elif prop.datatype == db.FILE: - # TODO: different issue - raise NotImplementedError("Files have not been implemented yet.") + json_prop["type"] = "string" + json_prop["format"] = "data-url" else: prop_name = prop.datatype if isinstance(prop.datatype, db.Entity): diff --git a/unittests/test_json_schema_exporter.py b/unittests/test_json_schema_exporter.py index f8d80ad5..18a37536 100644 --- a/unittests/test_json_schema_exporter.py +++ b/unittests/test_json_schema_exporter.py @@ -534,17 +534,21 @@ def test_rt_with_references(): } validate(example, schema) + # Single file and multiple files rt = db.RecordType() rt.add_property(name="FileProp", datatype=db.FILE) - with raises(NotImplementedError): - schema = rtjs(rt) + schema = rtjs(rt) + assert schema["properties"]["FileProp"]["type"] == "string" + assert schema["properties"]["FileProp"]["format"] == "data-url" rt = db.RecordType() rt.add_property(name="FileProp", datatype=db.LIST(db.FILE)) - with raises(NotImplementedError): - schema = rtjs(rt) + schema = rtjs(rt) + assert schema["properties"]["FileProp"]["type"] == "array" + assert schema["properties"]["FileProp"]["items"]["type"] == "string" + assert schema["properties"]["FileProp"]["items"]["format"] == "data-url" def test_broken(): -- GitLab