From 254d0061123db7e471a39283b3441b7f214a1110 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Wed, 13 May 2020 14:08:22 +0200
Subject: [PATCH] BUG: get_parent, when self.id is not None but key.id is

---
 src/caosdb/common/models.py |  5 +++--
 unittests/test_record.py    | 32 ++++++++++++++++++++++----------
 2 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/src/caosdb/common/models.py b/src/caosdb/common/models.py
index e229333c..ecd74551 100644
--- a/src/caosdb/common/models.py
+++ b/src/caosdb/common/models.py
@@ -518,13 +518,14 @@ class Entity(object):
                 if p.id is not None and int(p.id) == int(key):
                     return p
         elif isinstance(key, Entity):
-            if self.id is not None:
+            if key.id is not None:
                 return self.get_parent(int(key.id))
             else:
                 return self.get_parent(key.name)
         else:
             for p in self.parents:
-                if p.name is not None and str(p.name) == str(key):
+                if (p.name is not None
+                    and str(p.name).lower() == str(key).lower()):
                     return p
 
         return None
diff --git a/unittests/test_record.py b/unittests/test_record.py
index 3b4eb4bb..d0acb235 100644
--- a/unittests/test_record.py
+++ b/unittests/test_record.py
@@ -24,8 +24,6 @@
 #
 """Tests for the Record class."""
 # pylint: disable=missing-docstring
-import unittest
-
 from caosdb import Entity, Record
 
 
@@ -39,11 +37,25 @@ def test_role():
     assert record.role == "Record"
 
 
-class TestRecord(unittest.TestCase):
-    def test_property_access(self):
-        rec = Record()
-        rec.add_property("Prop")
-        assert rec.get_property("Pop") is None
-        assert rec.get_property("Prop") is not None
-        assert rec.get_property("prop") is not None
-        assert rec.get_property("prOp") is not None
+def test_property_access():
+    rec = Record(id=123)
+    rec.add_property("Prop")
+    assert rec.get_property("Pop") is None
+    assert rec.get_property("Prop") is not None
+    assert rec.get_property("prop") is not None
+    assert rec.get_property("prOp") is not None
+
+def test_get_parent_by_name():
+    rec = Record(id="123")
+    rec.add_parent(name="Test")
+    assert rec.get_parent(None) is None
+    assert rec.get_parent("Not existing") is None
+    assert rec.get_parent("Test") is not None
+    assert rec.get_parent("test") is not None
+    assert rec.get_parent("tEsT") is not None
+
+def test_get_parent_by_id():
+    rec = Record(id="123")
+    rec.add_parent(234)
+    assert rec.get_parent(None) is None
+    assert rec.get_parent(234) is not None
-- 
GitLab