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