From 0e6af72ece9591c95ed11d4f88800dd79e619e3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com>
Date: Wed, 22 Feb 2023 09:09:42 +0100
Subject: [PATCH] FIX: set retrieve false; has_parent now by default retrieves
 parents

---
 unittests/test_json_schema_model_parser.py |  8 ++++----
 unittests/test_yaml_model_parser.py        | 18 +++++-------------
 2 files changed, 9 insertions(+), 17 deletions(-)

diff --git a/unittests/test_json_schema_model_parser.py b/unittests/test_json_schema_model_parser.py
index 7f47890f..a136f9ba 100644
--- a/unittests/test_json_schema_model_parser.py
+++ b/unittests/test_json_schema_model_parser.py
@@ -164,7 +164,7 @@ def test_enum():
         assert isinstance(model[name], db.Record)
         assert model[name].name == name
         assert len(model[name].parents) == 1
-        assert model[name].has_parent(model["license"])
+        assert model[name].has_parent(model["license"], retrieve=False)
 
     # Also allow enums with non-string types
     number_enums = ["1.1", "2.2", "3.3"]
@@ -181,7 +181,7 @@ def test_enum():
         assert isinstance(model[name], db.Record)
         assert model[name].name == name
         assert len(model[name].parents) == 1
-        assert model[name].has_parent(model["number_enum"])
+        assert model[name].has_parent(model["number_enum"], retrieve=False)
 
 
 @pytest.mark.xfail(reason="Don't allow integer enums until https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/224 has been fixed")
@@ -207,7 +207,7 @@ def test_int_enum():
         assert isinstance(model[name], db.Record)
         assert model[name].name == name
         assert len(model[name].parents) == 1
-        assert model[name].has_parent(model["int_enum"])
+        assert model[name].has_parent(model["int_enum"], retrieve=False)
 
 
 def test_references():
@@ -339,7 +339,7 @@ def test_list():
         assert isinstance(model[name], db.Record)
         assert model[name].name == name
         assert len(model[name].parents) == 1
-        assert model[name].has_parent(model["license"])
+        assert model[name].has_parent(model["license"], retrieve=False)
 
 
 def test_name_property():
diff --git a/unittests/test_yaml_model_parser.py b/unittests/test_yaml_model_parser.py
index 6cdea792..17c38228 100644
--- a/unittests/test_yaml_model_parser.py
+++ b/unittests/test_yaml_model_parser.py
@@ -32,14 +32,6 @@ def has_property(el, name):
     return False
 
 
-def has_parent(el, name):
-    for p in el.get_parents():
-        if p.name == name:
-            return True
-
-    return False
-
-
 class TwiceTest(unittest.TestCase):
     def test_defined_once(self):
         string = """
@@ -148,16 +140,16 @@ RT4:
 RT5:
 """
         model = parse_model_from_yaml(to_file(string))
-        assert has_parent(model["RT1"], "RT2")
+        assert model["RT1"].has_parent("RT2", retrieve=False)
         assert (model["RT1"].get_parent(
             "RT2")._flags["inheritance"] == db.SUGGESTED)
-        assert has_parent(model["RT1"], "RT3")
+        assert model["RT1"].has_parent("RT3", retrieve=False)
         assert (model["RT1"].get_parent(
             "RT3")._flags["inheritance"] == db.RECOMMENDED)
-        assert has_parent(model["RT1"], "RT4")
+        assert model["RT1"].has_parent("RT4", retrieve=False)
         assert (model["RT1"].get_parent(
             "RT4")._flags["inheritance"] == db.OBLIGATORY)
-        assert has_parent(model["RT1"], "RT5")
+        assert model["RT1"].has_parent("RT5", retrieve=False)
         assert (model["RT1"].get_parent(
             "RT5")._flags["inheritance"] == db.OBLIGATORY)
 
@@ -509,5 +501,5 @@ R3:
     assert isinstance(r3, db.RecordType)
     for par in ["R1", "R2"]:
         # Until removal, both do the same
-        assert has_parent(r3, par)
+        assert r3.has_parent(par, retrieve=False)
         assert r3.get_parent(par)._flags["inheritance"] == db.OBLIGATORY
-- 
GitLab