From 2f24e63884073aad57ce70855639601b946b8274 Mon Sep 17 00:00:00 2001
From: florian <f.spreckelsen@inidscale.com>
Date: Mon, 15 May 2023 14:48:29 +0200
Subject: [PATCH] TST: Add test for pattern properties without top-level RT

---
 .../datamodel_no_toplevel_entity.schema.json  | 13 +++++++++++
 unittests/test_json_schema_model_parser.py    | 22 +++++++++++++++++++
 2 files changed, 35 insertions(+)

diff --git a/unittests/json-schema-models/datamodel_no_toplevel_entity.schema.json b/unittests/json-schema-models/datamodel_no_toplevel_entity.schema.json
index 104d22c7..35240d76 100644
--- a/unittests/json-schema-models/datamodel_no_toplevel_entity.schema.json
+++ b/unittests/json-schema-models/datamodel_no_toplevel_entity.schema.json
@@ -39,5 +39,18 @@
             },
             "required": ["title", "number_prop"]
         }
+    },
+    "patternProperties": {
+        "^[0-9]{4,4}": {
+            "type": "boolean"
+        },
+        "^[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}": {
+            "type": "object",
+            "properties": {
+                "date_id": {
+                    "$ref": "#/definitions/uuid"
+                }
+            }
+        }
     }
 }
diff --git a/unittests/test_json_schema_model_parser.py b/unittests/test_json_schema_model_parser.py
index 90517ebd..707ff76e 100644
--- a/unittests/test_json_schema_model_parser.py
+++ b/unittests/test_json_schema_model_parser.py
@@ -392,3 +392,25 @@ def test_no_toplevel_entity():
     uid_prop = rt1.get_property("user_id")
     assert uid_prop.datatype == db.TEXT
     assert rt1.get_importance(uid_prop.name) == db.RECOMMENDED
+
+    # pattern properties without top-level entity:
+    assert "__PatternEntry_1" in model
+    assert "__PatternEntry_2" in model
+
+    pattern_boolean_rt = model["__PatternEntry_1"]
+    assert "pattern: " in pattern_boolean_rt.description
+    assert len(pattern_boolean_rt.properties) == 2
+    pp = pattern_boolean_rt.get_property("__matched_pattern")
+    assert pp.datatype == db.TEXT
+    assert pattern_boolean_rt.get_importance(pp.name) == db.OBLIGATORY
+    value_prop = pattern_boolean_rt.get_property("__PatternEntry_1_value")
+    assert value_prop.datatype == db.BOOLEAN
+
+    pattern_object_rt = model["__PatternEntry_2"]
+    assert "pattern: " in pattern_object_rt.description
+    assert len(pattern_object_rt.properties) == 2
+    pp = pattern_object_rt.get_property("__matched_pattern")
+    assert pp.datatype == db.TEXT
+    assert pattern_object_rt.get_importance(pp.name) == db.OBLIGATORY
+    date_id_prop = pattern_object_rt.get_property("date_id")
+    assert date_id_prop.datatype == db.TEXT
-- 
GitLab