changeset 41:d2b43423fa4c

Some new test cases with ref-false, when-ref-false, ref-not-existss, when-ref-not-exists
author Franz Glasner <fzglas.hg@dom66.de>
date Thu, 20 Jul 2023 02:04:17 +0200
parents 2376224a9717
children 0e7acd426e3a
files tests/test_schema.py
diffstat 1 files changed, 121 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test_schema.py	Wed Jul 19 15:19:23 2023 +0200
+++ b/tests/test_schema.py	Thu Jul 20 02:04:17 2023 +0200
@@ -807,6 +807,24 @@
         self.assertIsNone(r["new-key"])
         self.assertFalse("cond" in r)
 
+    def test_simple_replace_when_ref_false(self):
+        schema = data_schema._Schema(
+            None, True, {"$type": None,
+                         "require": ["huhu", "haha"],
+                         "cond": [
+                             {"when-ref-false": '#foo2',
+                              "then": {
+                                  "require": ["r1", "r2", "r3"],
+                                  "new-key": None,
+                              }}
+                         ]})
+        r = data_schema.process_schema_conditionals(schema, self._ctx)
+        self.assertIsNot(r, schema)
+        self.assertEqual(["r1", "r2", "r3"], r["require"])
+        self.assertTrue("new-key" in r)
+        self.assertIsNone(r["new-key"])
+        self.assertFalse("cond" in r)
+
     def test_simple_replace_when_ref_true_2(self):
         schema = data_schema._Schema(
             None, True, {"$type": None,
@@ -881,6 +899,28 @@
         self.assertFalse("new-key3" in r)
         self.assertFalse("cond" in r)
 
+    def test_simple_replace_when_ref_not_exists(self):
+        schema = data_schema._Schema(
+            None, True, {"$type": None,
+                         "require": ["huhu", "haha"],
+                         "cond": [
+                             {"when-ref-not-exists": '#foo3-non-existing',
+                              "then": {
+                                  "require": ["r1", "r2", "r3"],
+                                  "new-key": None,
+                              }},
+                             {"when": True,
+                              "then": {
+                                  "new-key3": "val"}}
+                         ]})
+        r = data_schema.process_schema_conditionals(schema, self._ctx)
+        self.assertIsNot(r, schema)
+        self.assertEqual(["r1", "r2", "r3"], r["require"])
+        self.assertTrue("new-key" in r)
+        self.assertIsNone(r["new-key"])
+        self.assertFalse("new-key3" in r)
+        self.assertFalse("cond" in r)
+
     def test_simple_replace_when_ref_exists_2(self):
         schema = data_schema._Schema(
             None, True, {"$type": None,
@@ -903,6 +943,28 @@
         self.assertFalse("new-key3" in r)
         self.assertFalse("cond" in r)
 
+    def test_simple_replace_when_ref_not_exists_2(self):
+        schema = data_schema._Schema(
+            None, True, {"$type": None,
+                         "require": ["huhu", "haha"],
+                         "cond": [
+                             {"when": {"ref-not-exists": '#foo3-non-existing'},
+                              "then": {
+                                  "require": ["r1", "r2", "r3"],
+                                  "new-key": None,
+                              }},
+                             {"when": True,
+                              "then": {
+                                  "new-key3": "val"}}
+                         ]})
+        r = data_schema.process_schema_conditionals(schema, self._ctx)
+        self.assertIsNot(r, schema)
+        self.assertEqual(["r1", "r2", "r3"], r["require"])
+        self.assertTrue("new-key" in r)
+        self.assertIsNone(r["new-key"])
+        self.assertFalse("new-key3" in r)
+        self.assertFalse("cond" in r)
+
     def test_simple_replace_when_ref_exists_is_false(self):
         schema = data_schema._Schema(
             None, True, {"$type": None,
@@ -958,6 +1020,21 @@
         self.assertIsNot(r, schema)
         self.assertEqual("string", r["$type"])
 
+    def test_allOf_true_2(self):
+        schema = data_schema._Schema(
+            None, True, {"cond": [
+                {"when": {"all-of": [
+                    True,
+                    {"ref-not-exists": '#foo3-not-existing'},
+                    {"ref-true": '#foo'}]},
+                 "then": {"$type": "string"}},
+                {"when": True,
+                 "then": {"$type": None}}
+            ]})
+        r = data_schema.process_schema_conditionals(schema, self._ctx)
+        self.assertIsNot(r, schema)
+        self.assertEqual("string", r["$type"])
+
     def test_allOf_false(self):
         schema = data_schema._Schema(
             None, True, {"cond": [
@@ -973,6 +1050,21 @@
         self.assertIsNot(r, schema)
         self.assertIsNone(r["$type"])
 
+    def test_allOf_false_2(self):
+        schema = data_schema._Schema(
+            None, True, {"cond": [
+                {"when": {"all-of": [
+                    True,
+                    {"ref-not-exists": '#foo2'},
+                    {"ref-true": '#foo'}]},
+                 "then": {"$type": "string"}},
+                {"when": True,
+                 "then": {"$type": None}}
+            ]})
+        r = data_schema.process_schema_conditionals(schema, self._ctx)
+        self.assertIsNot(r, schema)
+        self.assertIsNone(r["$type"])
+
     def test_short_allOf_true(self):
         schema = data_schema._Schema(
             None, True, {"cond": [
@@ -1018,6 +1110,21 @@
         self.assertIsNot(r, schema)
         self.assertEqual("string", r["$type"])
 
+    def test_anyOf_true_2(self):
+        schema = data_schema._Schema(
+            None, True, {"cond": [
+                {"when": {"any-of": [
+                    False,
+                    {"ref-not-exists": '#foo3-non'},
+                    {"ref-false": '#foo2'}]},
+                 "then": {"$type": "string"}},
+                {"when": True,
+                 "then": {"$type": None}}
+            ]})
+        r = data_schema.process_schema_conditionals(schema, self._ctx)
+        self.assertIsNot(r, schema)
+        self.assertEqual("string", r["$type"])
+
     def test_anyOf_false(self):
         schema = data_schema._Schema(
             None, True, {"cond": [
@@ -1048,6 +1155,20 @@
         self.assertIsNot(r, schema)
         self.assertEqual("string", r["$type"])
 
+    def test_oneOf_true_2(self):
+        schema = data_schema._Schema(
+            None, True, {"cond": [
+                {"when": {"one-of": [
+                    False,
+                    {"not": {"ref-false": '#foo'}}]},
+                 "then": {"$type": "string"}},
+                {"when": True,
+                 "then": {"$type": None}}
+            ]})
+        r = data_schema.process_schema_conditionals(schema, self._ctx)
+        self.assertIsNot(r, schema)
+        self.assertEqual("string", r["$type"])
+
     def test_oneOf_false(self):
         schema = data_schema._Schema(
             None, True, {"cond": [