From 4816ffb140a17f6bcd921d591a18d477a71cd516 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hringer?= Date: Thu, 5 Sep 2024 15:55:33 +0200 Subject: [PATCH 1/3] Added integration test for posting a Questionnaire and a corresponding QuestionnaireResponse resource at the same time in one transaction Bundle --- ...sQuestionnaireResponseIntegrationTest.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java index bde13972b..f74384e9b 100644 --- a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java +++ b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java @@ -3,12 +3,16 @@ import static org.junit.Assert.assertNotNull; import java.util.Optional; +import java.util.UUID; +import org.hl7.fhir.r4.model.Bundle; import org.hl7.fhir.r4.model.Questionnaire; import org.hl7.fhir.r4.model.QuestionnaireResponse; +import org.hl7.fhir.r4.model.ResourceType; import org.hl7.fhir.r4.model.StringType; import org.junit.Test; +import dev.dsf.fhir.dao.BundleDao; import dev.dsf.fhir.dao.QuestionnaireDao; public class QuestionnaireVsQuestionnaireResponseIntegrationTest extends AbstractQuestionnaireIntegrationTest @@ -146,4 +150,50 @@ public void testQuestionnaireResponseValidatesAgainstQuestionnaireProfileVersion assertNotNull(updatedQr.getIdElement().getIdPart()); assertNotNull(updatedQr.getIdElement().getVersionIdPart()); } + + @Test + public void testPostQuestionnaireAndCorrespondingQuestionnaireResponseInTransactionBundleOrderQuestionnaireBeforeQuestionnaireResponse() + throws Exception + { + Questionnaire questionnaire = createQuestionnaireProfileVersion150("1.5.3"); + QuestionnaireResponse questionnaireResponse = createQuestionnaireResponse("1.5.3"); + + Bundle bundle = new Bundle(); + bundle.setId("urn:uuid:" + UUID.randomUUID()); + bundle.setType(Bundle.BundleType.TRANSACTION); + questionnaire.setId("urn:uuid:" + UUID.randomUUID()); + bundle.addEntry().setResource(questionnaire).setFullUrl("urn:uuid:" + questionnaire.getId()).getRequest() + .setMethod(Bundle.HTTPVerb.POST).setUrl(ResourceType.Questionnaire.name()); + questionnaireResponse.setId("urn:uuid:" + UUID.randomUUID()); + bundle.addEntry().setResource(questionnaireResponse).setFullUrl("urn:uuid:" + questionnaireResponse.getId()) + .getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl(ResourceType.QuestionnaireResponse.name()); + + BundleDao bundleDao = getSpringWebApplicationContext().getBean(BundleDao.class); + bundleDao.create(bundle); + + assertNotNull(getWebserviceClient().postBundle(bundle)); + } + + @Test + public void testPostQuestionnaireAndCorrespondingQuestionnaireResponseInTransactionBundleOrderQuestionnaireResponseBeforeQuestionnaire() + throws Exception + { + Questionnaire questionnaire = createQuestionnaireProfileVersion150("1.5.3"); + QuestionnaireResponse questionnaireResponse = createQuestionnaireResponse("1.5.3"); + + Bundle bundle = new Bundle(); + bundle.setId("urn:uuid:" + UUID.randomUUID()); + bundle.setType(Bundle.BundleType.TRANSACTION); + questionnaire.setId("urn:uuid:" + UUID.randomUUID()); + questionnaireResponse.setId("urn:uuid:" + UUID.randomUUID()); + bundle.addEntry().setResource(questionnaireResponse).setFullUrl("urn:uuid:" + questionnaireResponse.getId()) + .getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl(ResourceType.QuestionnaireResponse.name()); + bundle.addEntry().setResource(questionnaire).setFullUrl("urn:uuid:" + questionnaire.getId()).getRequest() + .setMethod(Bundle.HTTPVerb.POST).setUrl(ResourceType.Questionnaire.name()); + + BundleDao bundleDao = getSpringWebApplicationContext().getBean(BundleDao.class); + bundleDao.create(bundle); + + assertNotNull(getWebserviceClient().postBundle(bundle)); + } } \ No newline at end of file From 8d34c68b6f320d53d349194d7576374dddd45d7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hringer?= Date: Thu, 5 Sep 2024 16:37:32 +0200 Subject: [PATCH 2/3] No idea why I needed those in the first place --- ...QuestionnaireVsQuestionnaireResponseIntegrationTest.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java index f74384e9b..7c35a11ec 100644 --- a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java +++ b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java @@ -168,9 +168,6 @@ public void testPostQuestionnaireAndCorrespondingQuestionnaireResponseInTransact bundle.addEntry().setResource(questionnaireResponse).setFullUrl("urn:uuid:" + questionnaireResponse.getId()) .getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl(ResourceType.QuestionnaireResponse.name()); - BundleDao bundleDao = getSpringWebApplicationContext().getBean(BundleDao.class); - bundleDao.create(bundle); - assertNotNull(getWebserviceClient().postBundle(bundle)); } @@ -191,9 +188,6 @@ public void testPostQuestionnaireAndCorrespondingQuestionnaireResponseInTransact bundle.addEntry().setResource(questionnaire).setFullUrl("urn:uuid:" + questionnaire.getId()).getRequest() .setMethod(Bundle.HTTPVerb.POST).setUrl(ResourceType.Questionnaire.name()); - BundleDao bundleDao = getSpringWebApplicationContext().getBean(BundleDao.class); - bundleDao.create(bundle); - assertNotNull(getWebserviceClient().postBundle(bundle)); } } \ No newline at end of file From 9b26efcb421ab2bd4d2a6991cd337f87a33bde07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hringer?= Date: Thu, 5 Sep 2024 17:22:38 +0200 Subject: [PATCH 3/3] Asserts all resource have been created --- ...estionnaireVsQuestionnaireResponseIntegrationTest.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java index 7c35a11ec..b2d88268b 100644 --- a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java +++ b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/integration/QuestionnaireVsQuestionnaireResponseIntegrationTest.java @@ -1,7 +1,9 @@ package dev.dsf.fhir.integration; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import java.util.Objects; import java.util.Optional; import java.util.UUID; @@ -168,7 +170,8 @@ public void testPostQuestionnaireAndCorrespondingQuestionnaireResponseInTransact bundle.addEntry().setResource(questionnaireResponse).setFullUrl("urn:uuid:" + questionnaireResponse.getId()) .getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl(ResourceType.QuestionnaireResponse.name()); - assertNotNull(getWebserviceClient().postBundle(bundle)); + assertTrue(getWebserviceClient().postBundle(bundle).getEntry().stream() + .allMatch(entry -> entry.getResponse().getStatus().equals("201 Created"))); } @Test @@ -188,6 +191,7 @@ public void testPostQuestionnaireAndCorrespondingQuestionnaireResponseInTransact bundle.addEntry().setResource(questionnaire).setFullUrl("urn:uuid:" + questionnaire.getId()).getRequest() .setMethod(Bundle.HTTPVerb.POST).setUrl(ResourceType.Questionnaire.name()); - assertNotNull(getWebserviceClient().postBundle(bundle)); + assertTrue(getWebserviceClient().postBundle(bundle).getEntry().stream() + .allMatch(entry -> entry.getResponse().getStatus().equals("201 Created"))); } } \ No newline at end of file