From 2511a7229dfa0c1e4e2832853348d68ee0541869 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com>
Date: Thu, 30 Mar 2023 10:58:15 +0200
Subject: [PATCH] FIX: remove superfluous AND and WITH

---
 src/caoscrawler/identifiable_adapters.py |  4 ++++
 unittests/test_identifiable_adapters.py  | 10 ++++++++++
 2 files changed, 14 insertions(+)

diff --git a/src/caoscrawler/identifiable_adapters.py b/src/caoscrawler/identifiable_adapters.py
index c410159d..eb9333f7 100644
--- a/src/caoscrawler/identifiable_adapters.py
+++ b/src/caoscrawler/identifiable_adapters.py
@@ -118,6 +118,10 @@ class IdentifiableAdapter(metaclass=ABCMeta):
                 query_string += " AND "
 
         query_string += IdentifiableAdapter.create_property_query(ident)
+        if query_string.endswith(" AND WITH "):
+            query_string = query_string[:-len(" AND WITH ")]
+        if query_string.endswith(" AND "):
+            query_string = query_string[:-len(" AND ")]
         return query_string
 
     @staticmethod
diff --git a/unittests/test_identifiable_adapters.py b/unittests/test_identifiable_adapters.py
index c3b44e1c..894d476d 100644
--- a/unittests/test_identifiable_adapters.py
+++ b/unittests/test_identifiable_adapters.py
@@ -76,6 +76,16 @@ def test_create_query_for_identifiable():
         Identifiable(record_type="Person", backrefs=[], properties={'last_name': "B'Or"}))
     assert query == ("FIND RECORD Person WITH 'last_name'='B\\'Or' ")
 
+    # With only backref
+    query = IdentifiableAdapter.create_query_for_identifiable(
+        Identifiable(backrefs=[160], properties={}))
+    assert query == ("FIND RECORD  WHICH IS REFERENCED BY 160")
+
+    # With only backref and name
+    query = IdentifiableAdapter.create_query_for_identifiable(
+        Identifiable(backrefs=[160], name='lo', properties={}))
+    assert query == ("FIND RECORD  WHICH IS REFERENCED BY 160 AND WITH name='lo'")
+
 
 def test_load_from_yaml_file():
     ident = CaosDBIdentifiableAdapter()
-- 
GitLab