diff --git a/tests/test_version.py b/tests/test_version.py index 8d45090db0810a1766d92e74d0c2864a13d99e55..7a9bf8b4e71647418c110b05dad7e7a8a9190519 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -747,3 +747,35 @@ def test_overridden_datatype(): rt_old = c.Container().retrieve(query=str(rt.id) + "@HEAD~1", flags={"cache": "false"}, sync=False) assert rt.get_property("TestProperty").datatype == c.LIST(c.TEXT) + + +def test_delete_referenced_entity(): + ref_rt = c.RecordType("TestReferencedRT").insert() + rt = c.RecordType("TestRT").insert() + ref = c.Record("TestRef1").add_parent(ref_rt).insert() + + rec = c.Record("TestRec").add_parent(rt).add_property(ref_rt, ref).insert() + + rec.description = "v2" + rec.remove_property(ref_rt) + rec.update() + + rec_v1 = c.Container().retrieve(query=str(rec.id) + "@HEAD~1", + flags={"cache": "false"}, sync=False)[0] + assert rec_v1.get_property(ref_rt).value == ref.id + + rec_v2 = c.Container().retrieve(query=str(rec.id) + "@HEAD", + flags={"cache": "false"}, sync=False)[0] + assert rec_v2.get_property(ref_rt) is None + + ref.delete() + + rec_v1 = c.Container().retrieve(query=str(rec.id) + "@HEAD~1", + flags={"cache": "false"}, sync=False)[0] + assert rec_v1.get_property(ref_rt).value is None + assert rec_v1.get_property(ref_rt).get_warnings()[ + 0].description == "The referenced entity has been deleted in the mean time and is not longer available." + + rec_v2 = c.Container().retrieve(query=str(rec.id) + "@HEAD", + flags={"cache": "false"}, sync=False)[0] + assert rec_v2.get_property(ref_rt) is None