diff --git a/src/caosdb/apiutils.py b/src/caosdb/apiutils.py index 70f7db9c86c76098c6f4783e128cd54d065e6d95..81358cd350be4309f8311c99563953fcdbf2401e 100644 --- a/src/caosdb/apiutils.py +++ b/src/caosdb/apiutils.py @@ -239,7 +239,7 @@ def compare_entities(old_entity: Entity, new_entity: Entity, if isinstance(entity, Property): raise NotImplementedError("The function compare_entities does not work for " "comparing abstract properties.") - + olddiff: Dict[str, Any] = {"properties": {}, "parents": []} newdiff: Dict[str, Any] = {"properties": {}, "parents": []} @@ -347,7 +347,6 @@ def compare_entities(old_entity: Entity, new_entity: Entity, newdiff["properties"].pop(prop.name) olddiff["properties"].pop(prop.name) - # Check whether there are missing properties in old_entity, additionally # check for multi-properties that are currently not supported: for prop in new_entity.properties: @@ -355,7 +354,7 @@ def compare_entities(old_entity: Entity, new_entity: Entity, if len(matching) > 1: raise NotImplementedError( "Comparison not implemented for multi-properties.") - + if len([0 for p in old_entity.properties if p.name == prop.name]) == 0: newdiff["properties"][prop.name] = {} diff --git a/unittests/test_apiutils.py b/unittests/test_apiutils.py index df06f4db38aca6a29bc23fdfd7ca26feb7e850ed..c6cee61b63b9b5b7ae1dbe2d00959490b16eff75 100644 --- a/unittests/test_apiutils.py +++ b/unittests/test_apiutils.py @@ -109,7 +109,8 @@ def test_compare_entities(): r1.add_property("tester", value=3) r2.add_property("tester", ) # a property where r2 has no value r1.add_property("tests_234234", value=45) - r2.add_property("tests_TT", value=45) # one additional property that the other one does not have for both + # one additional property that the other one does not have for both + r2.add_property("tests_TT", value=45) diff_r1, diff_r2 = compare_entities(r1, r2) @@ -134,6 +135,7 @@ def test_compare_entities(): assert diff_r1["properties"]["tests"]["value"] == 3 assert diff_r2["properties"]["tests"]["value"] == 45 + def test_compare_equality(): r1 = db.Record() r2 = db.Record() @@ -241,6 +243,7 @@ def test_compare_special_properties(): assert len(diff_r1["properties"]) == 0 assert len(diff_r2["properties"]) == 0 + def test_compare_importances(): r1 = db.Record() r2 = db.Record() @@ -253,7 +256,7 @@ def test_compare_importances(): for diff in (diff_r1, diff_r2): assert len(diff["properties"]["test"]) == 1 assert len(diff["parents"]) == 0 - + def test_compare_properties(): p1 = db.Property() @@ -262,13 +265,14 @@ def test_compare_properties(): with pytest.raises(NotImplementedError, match=".*abstract properties.*"): compare_entities(p1, p2) + def test_multi_properties(): # This test is rather lengthy, because: # - previously the check for multi-properties was only implemented for the # new_entity paramter of the function. # - Because of the API of pylib the behavior depended on the order of adding the # properties to the records. - + r1 = db.Record() r2 = db.Record() r1.add_property("test", value=2) @@ -299,7 +303,7 @@ def test_multi_properties(): # assert empty_diff(r1, r2) with pytest.raises(NotImplementedError, match=".*multi-properties.*"): compare_entities(r1, r2) - + r1 = db.Record() r2 = db.Record() r1.add_property("test", value=4)