diff --git a/src/caoscrawler/identifiable_adapters.py b/src/caoscrawler/identifiable_adapters.py index c410159de4364e9b0299a84a4cbc687f773d35c0..eb9333f73a79d5dd0dedc47b570b2934d4baf339 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 c3b44e1c8e3775fc6e8b7118b82ffa6a20bef484..894d476d628e9a05fbc6a4f7089404c886e01cbf 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()