diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index db924c637a7818f90418a467d2c581d1998e3ed4..396a29b7bf0d8d282e37416b1224ec6d592170da 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -103,6 +103,7 @@ test: - echo $CI_REGISTRY_IMAGE - docker login -u gitlab+deploy-token-ci-pull -p $TOKEN_CI_PULL $CI_REGISTRY_INDISCALE + - time docker load < /image-cache/caosdb-${F_BRANCH}.tar || true - if [[ "$CAOSDB_TAG" == "" ]]; then if echo "$F_BRANCH" | grep -c "^f-" ; then CAOSDB_TAG=${DEPLOY_REF}_F_${F_BRANCH}-latest; @@ -132,6 +133,7 @@ test: - rc=`cat .docker/result` - exit $rc dependencies: [cert] + timeout: 3h artifacts: paths: - caosdb_log.txt 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