diff --git a/CHANGELOG.md b/CHANGELOG.md index e3de69f152ed309a350114060888370d3b860c18..4f2ad090dac378fdbc628ffd20b09255e09d2c4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added (for new features) +* Test for [caosdb-pylib#119](https://gitlab.com/linkahead/linkahead-pylib/-/issues/119) * Test for [caosdb-pylib#89](https://gitlab.com/linkahead/linkahead-pylib/-/issues/89) * Test for [caosdb-pylib#103](https://gitlab.com/linkahead/linkahead-pylib/-/issues/103) * Tests for entity state [caosdb-server!62](https://gitlab.com/caosdb/caosdb-server/-/merge_requests/62) diff --git a/tests/test_issues_pylib.py b/tests/test_issues_pylib.py index 94ffa891748a575bd810fb6ac00be4c09f3effd8..32b2bdb2e1e5a8bf514e27517f7edff6767e219b 100644 --- a/tests/test_issues_pylib.py +++ b/tests/test_issues_pylib.py @@ -36,6 +36,7 @@ import pytest from linkahead import administration as admin from linkahead.exceptions import (TransactionError, HTTPClientError) +from linkahead.apiutils import compare_entities, empty_diff, merge_entities CURATOR_ROLE = "curator" @@ -138,6 +139,34 @@ def test_gitlab_com_108(): print("deleted") +def test_gitlab_com_119(): + """ + Test that merge_entities works on properties with id but no name. + + See https://gitlab.com/linkahead/linkahead-pylib/-/issues/119 and + https://gitlab.indiscale.com/caosdb/customers/f-fit/management/-/issues/94 + """ + prop = db.Property(name="Test", datatype=db.TEXT).insert() + rt = db.RecordType(name="TestRT").insert() + + rec1 = db.Record(name="TestRec").add_parent(rt) + rec2 = db.Record(name="TestRec").add_parent(rt) + rec1.add_property(id=prop.id, value="something") + + # Ensure rec1 has prop, rec2 does not + assert not empty_diff(rec1, rec2) + assert len(rec2.properties) == 0 + diff1, diff2 = compare_entities(rec1, rec2) + assert prop.id in diff1["properties"] + assert None not in diff1["properties"] + assert len(diff2["properties"]) == 0 + + # Merge and check rec2 now has prop + merge_entities(rec2, rec1) + assert rec2.get_property(prop) is not None + assert empty_diff(rec1.get_property(prop), rec2.get_property(prop)) + + def test_gitlab_com_120(): """Test that an update doesn't add unwanted subproperties.