Add passing test for #2015

This commit is contained in:
jamesagnew 2021-03-16 14:44:11 -04:00
parent c7e8342c29
commit 72026811e6
1 changed files with 51 additions and 0 deletions

View File

@ -10,6 +10,7 @@ import org.hl7.fhir.instance.model.api.IIdType;
import org.hl7.fhir.r4.model.BooleanType; import org.hl7.fhir.r4.model.BooleanType;
import org.hl7.fhir.r4.model.IntegerType; import org.hl7.fhir.r4.model.IntegerType;
import org.hl7.fhir.r4.model.Observation; import org.hl7.fhir.r4.model.Observation;
import org.hl7.fhir.r4.model.Organization;
import org.hl7.fhir.r4.model.Parameters; import org.hl7.fhir.r4.model.Parameters;
import org.hl7.fhir.r4.model.Patient; import org.hl7.fhir.r4.model.Patient;
import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.AfterEach;
@ -32,6 +33,7 @@ public class ResourceProviderExpungeR4Test extends BaseResourceProviderR4Test {
@AfterEach @AfterEach
public void afterDisableExpunge() { public void afterDisableExpunge() {
myDaoConfig.setExpungeEnabled(new DaoConfig().isExpungeEnabled()); myDaoConfig.setExpungeEnabled(new DaoConfig().isExpungeEnabled());
myDaoConfig.setEnforceReferentialIntegrityOnDelete(false);
} }
private void assertExpunged(IIdType theId) { private void assertExpunged(IIdType theId) {
@ -120,6 +122,9 @@ public class ResourceProviderExpungeR4Test extends BaseResourceProviderR4Test {
case "Observation": case "Observation":
dao = myObservationDao; dao = myObservationDao;
break; break;
case "Organization":
dao = myOrganizationDao;
break;
default: default:
fail("Restype: " + theId.getResourceType()); fail("Restype: " + theId.getResourceType());
dao = myPatientDao; dao = myPatientDao;
@ -324,5 +329,51 @@ public class ResourceProviderExpungeR4Test extends BaseResourceProviderR4Test {
} }
/**
* See #2015
*/
@Test
public void testExpungeSucceedsWithIncomingReferences_ReferentialIntegrityDisabled() {
myDaoConfig.setEnforceReferentialIntegrityOnDelete(false);
Organization org = new Organization();
org.setActive(true);
IIdType orgId = myOrganizationDao.create(org).getId();
Patient patient = new Patient();
patient.setActive(true);
patient.getManagingOrganization().setReference(orgId.toUnqualifiedVersionless().getValue());
myPatientDao.create(patient);
runInTransaction(()-> assertEquals(1, myResourceLinkDao.count()));
myOrganizationDao.delete(orgId);
runInTransaction(()-> assertEquals(0, myResourceLinkDao.count()));
Parameters input = new Parameters();
input.addParameter()
.setName(JpaConstants.OPERATION_EXPUNGE_PARAM_LIMIT)
.setValue(new IntegerType(1000));
input.addParameter()
.setName(JpaConstants.OPERATION_EXPUNGE_PARAM_EXPUNGE_DELETED_RESOURCES)
.setValue(new BooleanType(true));
input.addParameter()
.setName(JpaConstants.OPERATION_EXPUNGE_PARAM_EXPUNGE_PREVIOUS_VERSIONS)
.setValue(new BooleanType(true));
myClient
.operation()
.onInstance(orgId.toUnqualifiedVersionless())
.named("expunge")
.withParameters(input)
.execute();
assertExpunged(orgId.toUnqualifiedVersionless());
runInTransaction(()-> assertEquals(0, myResourceLinkDao.count()));
}
} }