diff --git a/CHANGELOG.md b/CHANGELOG.md index 30a9d5ac03e2ce4123d9f760da65f35c8ad9eeee..1f790368430864301ceae168930a18f63c0a89fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,7 +25,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed ### - Query generation when there are only backrefs or backrefs and a name -- [#41](https://gitlab.com/caosdb/caosdb-crawler/-/issues/41) ### Security ### diff --git a/src/caoscrawler/identifiable_adapters.py b/src/caoscrawler/identifiable_adapters.py index b276f96fa09d554f0f6171ba61ecb8c9c5b4053d..eb9333f73a79d5dd0dedc47b570b2934d4baf339 100644 --- a/src/caoscrawler/identifiable_adapters.py +++ b/src/caoscrawler/identifiable_adapters.py @@ -193,14 +193,12 @@ class IdentifiableAdapter(metaclass=ABCMeta): property_name_list_B = [] identifiable_props = {} identifiable_backrefs = [] - name_is_identifying_property = False if registered_identifiable is not None: # fill the values: for prop in registered_identifiable.properties: if prop.name == "name": # The name can be an identifiable, but it isn't a property - name_is_identifying_property = True continue # problem: what happens with multi properties? # case A: in the registered identifiable @@ -248,7 +246,7 @@ class IdentifiableAdapter(metaclass=ABCMeta): record_id=record.id, record_type=(registered_identifiable.parents[0].name if registered_identifiable else None), - name=record.name if name_is_identifying_property else None, + name=record.name, properties=identifiable_props, path=record.path, backrefs=identifiable_backrefs diff --git a/unittests/test_identifiable_adapters.py b/unittests/test_identifiable_adapters.py index 414e55723dc1f14897e54c47144f115da5bf59a9..894d476d628e9a05fbc6a4f7089404c886e01cbf 100644 --- a/unittests/test_identifiable_adapters.py +++ b/unittests/test_identifiable_adapters.py @@ -111,19 +111,6 @@ def test_load_from_yaml_file(): assert project_i.get_property("title") is not None -def test_non_default_name(): - ident = CaosDBIdentifiableAdapter() - ident.register_identifiable( - "Person", db.RecordType() - .add_parent(name="Person") - .add_property(name="last_name")) - identifiable = ident.get_identifiable(db.Record(name="don't touch it") - .add_parent("Person") - .add_property(name="last_name", value='Tom') - ) - assert identifiable.name is None - - def test_convert_value(): # test that string representation of objects stay unchanged. No stripping or so. class A(): diff --git a/unittests/test_tool.py b/unittests/test_tool.py index db708d203d732e0886589a3fb3b57830ee837bbc..b88720f4da89dfa735e782a4d2e41ccc3b0f4d3c 100755 --- a/unittests/test_tool.py +++ b/unittests/test_tool.py @@ -395,7 +395,6 @@ def crawler_mocked_identifiable_retrieve(crawler): return crawler -@pytest.mark.xfail def test_split_into_inserts_and_updates_single(crawler_mocked_identifiable_retrieve): crawler = crawler_mocked_identifiable_retrieve[0] identlist = [Identifiable(name="A", record_type="C"), Identifiable(name="B", record_type="C")] @@ -421,7 +420,6 @@ def test_split_into_inserts_and_updates_single(crawler_mocked_identifiable_retri crawler.identifiableAdapter.retrieve_identified_record_for_identifiable.assert_called() -@pytest.mark.xfail def test_split_into_inserts_and_updates_with_duplicate(crawler_mocked_identifiable_retrieve): crawler = crawler_mocked_identifiable_retrieve[0] a = db.Record(name="A").add_parent("C") @@ -440,7 +438,6 @@ def test_split_into_inserts_and_updates_with_duplicate(crawler_mocked_identifiab crawler.identifiableAdapter.retrieve_identified_record_for_identifiable.assert_called() -@pytest.mark.xfail def test_split_into_inserts_and_updates_with_ref(crawler_mocked_identifiable_retrieve): crawler = crawler_mocked_identifiable_retrieve[0] # try it with a reference @@ -468,7 +465,6 @@ def test_split_into_inserts_and_updates_with_circ(crawler): # TODO this does not seem to be complete! -@pytest.mark.xfail def test_split_into_inserts_and_updates_with_complex(crawler_mocked_identifiable_retrieve): crawler = crawler_mocked_identifiable_retrieve[0] # A @@ -496,7 +492,6 @@ def test_split_into_inserts_and_updates_with_complex(crawler_mocked_identifiable # TODO write test where the unresoled entity is not part of the identifiable -@pytest.mark.xfail def test_split_into_inserts_and_updates_with_copy_attr(crawler_mocked_identifiable_retrieve): crawler = crawler_mocked_identifiable_retrieve[0] # assume identifiable is only the name @@ -514,7 +509,6 @@ def test_split_into_inserts_and_updates_with_copy_attr(crawler_mocked_identifiab crawler.identifiableAdapter.retrieve_identified_record_for_identifiable.assert_called() -@pytest.mark.xfail def test_has_missing_object_in_references(crawler): # Simulate remote server content by using the names to identify records # There are only two known Records with name A and B @@ -819,7 +813,6 @@ def test_validation_error_print(caplog): caplog.clear() -@pytest.mark.xfail def test_split_into_inserts_and_updates_backref(crawler_mocked_for_backref_test): crawler = crawler_mocked_for_backref_test[0] identlist = [Identifiable(name="A", record_type="BR"), @@ -854,7 +847,6 @@ def test_split_into_inserts_and_updates_backref(crawler_mocked_for_backref_test) assert insert[0].name == "B" -@pytest.mark.xfail def test_split_into_inserts_and_updates_mult_backref(crawler_mocked_for_backref_test): # test whether multiple references of the same record type are correctly used crawler = crawler_mocked_for_backref_test[0] @@ -875,7 +867,6 @@ def test_split_into_inserts_and_updates_mult_backref(crawler_mocked_for_backref_ assert len(insert) == 2 -@pytest.mark.xfail def test_split_into_inserts_and_updates_diff_backref(crawler_mocked_for_backref_test): # test whether multiple references of the different record types are correctly used crawler = crawler_mocked_for_backref_test[0]