From bf5397c8d7d818e1171a3af3dc21fe1841d3efb6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com>
Date: Wed, 31 Jan 2024 19:03:36 +0100
Subject: [PATCH] TST: add test

---
 src/caoscrawler/identifiable_adapters.py |  2 ++
 unittests/test_identifiable_adapters.py  | 16 ++++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/src/caoscrawler/identifiable_adapters.py b/src/caoscrawler/identifiable_adapters.py
index d0dfd752..80ab1669 100644
--- a/src/caoscrawler/identifiable_adapters.py
+++ b/src/caoscrawler/identifiable_adapters.py
@@ -221,6 +221,8 @@ identifiabel, identifiable and identified record) for a Record.
                     for givenrt in prop.value:
                         found = False
                         if givenrt == "*":
+                            if id(record) not in referencing_entities:
+                                continue
                             for rt, rec in referencing_entities[id(record)].items():
                                 identifiable_backrefs.extend(rec)
                                 found = True
diff --git a/unittests/test_identifiable_adapters.py b/unittests/test_identifiable_adapters.py
index 268b9800..7759fa55 100644
--- a/unittests/test_identifiable_adapters.py
+++ b/unittests/test_identifiable_adapters.py
@@ -133,6 +133,22 @@ def test_non_default_name():
     assert identifiable.name is None
 
 
+def test_wildcard_ref():
+    ident = CaosDBIdentifiableAdapter()
+    ident.register_identifiable(
+        "Person", db.RecordType()
+        .add_parent(name="Person")
+        .add_property(name="is_referenced_by", value=["*"]))
+    rec = (db.Record(name="don't touch it").add_parent("Person")
+           .add_property(name="last_name", value='Tom'))
+    identifiable = ident.get_identifiable(rec,
+                                          referencing_entities={
+                                              id(rec):
+                                              {'A': [db.Record(id=1).add_parent("A")]}}
+                                          )
+    assert identifiable.backrefs[0].id == 1
+
+
 def test_convert_value():
     # test that string representation of objects stay unchanged. No stripping or so.
     class A():
-- 
GitLab