diff options
Diffstat (limited to 'src/test/kotlin')
3 files changed, 343 insertions, 8 deletions
diff --git a/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt index 62ece6c..c5cc839 100644 --- a/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt +++ b/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt @@ -56,6 +56,7 @@ class ConnectionCheckServiceTest { "http://localhost/api", "user", "password", + null, ) this.sink = Sinks.many().multicast().onBackpressureBuffer() this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate) diff --git a/src/test/kotlin/dev/dnpm/etl/processor/services/ReportServiceTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/services/ReportServiceTest.kt index e9c3107..c45dd95 100644 --- a/src/test/kotlin/dev/dnpm/etl/processor/services/ReportServiceTest.kt +++ b/src/test/kotlin/dev/dnpm/etl/processor/services/ReportServiceTest.kt @@ -60,13 +60,13 @@ class ReportServiceTest { assertThat(actual).hasSize(4) assertThat(actual[0].severity).isEqualTo(ReportService.Severity.FATAL) - assertThat(actual[0].getMessage()).isEqualTo("Fatal Message") + assertThat(actual[0].getMessageText()).isEqualTo("Fatal Message") assertThat(actual[1].severity).isEqualTo(ReportService.Severity.ERROR) - assertThat(actual[1].getMessage()).isEqualTo("Error Message") + assertThat(actual[1].getMessageText()).isEqualTo("Error Message") assertThat(actual[2].severity).isEqualTo(ReportService.Severity.WARNING) - assertThat(actual[2].getMessage()).isEqualTo("Warning Message") + assertThat(actual[2].getMessageText()).isEqualTo("Warning Message") assertThat(actual[3].severity).isEqualTo(ReportService.Severity.INFO) - assertThat(actual[3].getMessage()).isEqualTo("Info Message") + assertThat(actual[3].getMessageText()).isEqualTo("Info Message") assertThat(actual.asRequestStatus()).isEqualTo(RequestStatus.ERROR) } @@ -87,7 +87,7 @@ class ReportServiceTest { assertThat(actual).hasSize(1) assertThat(actual[0].severity).isEqualTo(ReportService.Severity.ERROR) - assertThat(actual[0].getMessage()).isEqualTo("/specimens(0)/type/code: error.path.missing") + assertThat(actual[0].getMessageText()).isEqualTo("/specimens(0)/type/code: error.path.missing") assertThat(actual.asRequestStatus()).isEqualTo(RequestStatus.ERROR) } @@ -110,7 +110,7 @@ class ReportServiceTest { assertThat(actual).hasSize(1) assertThat(actual[0].severity).isEqualTo(ReportService.Severity.ERROR) - assertThat(actual[0].getMessage()).isEqualTo("Not parsable data quality report '$invalidResponse'") + assertThat(actual[0].getMessageText()).isEqualTo("Not parsable data quality report '$invalidResponse'") } companion object { diff --git a/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt index 3edb480..8433e93 100644 --- a/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt +++ b/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt @@ -29,11 +29,15 @@ import dev.dnpm.etl.processor.monitoring.RequestType import dev.dnpm.etl.processor.monitoring.SubmissionType import dev.dnpm.etl.processor.output.DeleteRequest import dev.dnpm.etl.processor.output.DnpmV2MtbFileRequest +import dev.dnpm.etl.processor.output.MtbFileRequest import dev.dnpm.etl.processor.output.MtbFileSender +import dev.dnpm.etl.processor.output.RoutedMtbFileSender import dev.dnpm.etl.processor.pseudonym.PseudonymizeService +import dev.pcvolkmer.mv64e.model.Coding import dev.pcvolkmer.mv64e.model.ConsentProvisionType import dev.pcvolkmer.mv64e.model.FollowUp import dev.pcvolkmer.mv64e.model.ModelProjectConsentPurpose +import dev.pcvolkmer.mv64e.model.MtbDiagnosis import dev.pcvolkmer.mv64e.model.MtbEpisodeOfCare import dev.pcvolkmer.mv64e.model.MvhMetadata import dev.pcvolkmer.mv64e.model.MvhMetadataModelProjectConsent @@ -66,6 +70,7 @@ class RequestProcessorTest { private lateinit var pseudonymizeService: PseudonymizeService private lateinit var transformationService: TransformationService private lateinit var sender: MtbFileSender + private lateinit var routedMtbFileSender: RoutedMtbFileSender private lateinit var requestService: RequestService private lateinit var applicationEventPublisher: ApplicationEventPublisher private lateinit var appConfigProperties: AppConfigProperties @@ -78,6 +83,7 @@ class RequestProcessorTest { @Mock pseudonymizeService: PseudonymizeService, @Mock transformationService: TransformationService, @Mock sender: MtbFileSender, + @Mock routedMtbFileSender: RoutedMtbFileSender, @Mock requestService: RequestService, @Mock applicationEventPublisher: ApplicationEventPublisher, @Mock consentProcessor: ConsentProcessor, @@ -85,6 +91,7 @@ class RequestProcessorTest { this.pseudonymizeService = pseudonymizeService this.transformationService = transformationService this.sender = sender + this.routedMtbFileSender = routedMtbFileSender this.requestService = requestService this.applicationEventPublisher = applicationEventPublisher this.appConfigProperties = AppConfigProperties() @@ -96,6 +103,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -112,7 +120,7 @@ class RequestProcessorTest { randomRequestId(), PatientPseudonym("TEST_12345678901"), PatientId("P1"), - Fingerprint("syehahte4oyqd5m2rbd5imnth4rx6md32g2msb7sztnayxoc4kaq"), + Fingerprint("tyfimuuc7okhnoholo6jx5o5os3n7haelezphr4477uxbzlotvra"), RequestType.MTB_FILE, SubmissionType.TEST, RequestStatus.SUCCESS, @@ -138,6 +146,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .episodesOfCare( listOf( MtbEpisodeOfCare.builder() @@ -169,7 +183,7 @@ class RequestProcessorTest { randomRequestId(), PatientPseudonym("TEST_12345678901"), PatientId("P1"), - Fingerprint("me6ockoru4boi4ypghfia5myfqtuffwlbszwhtop2rtltb3ycjva"), + Fingerprint("q3qfwecsw3tcmdsg4kg5ki4ob3qw3warnwi4qc54nptjgzft53nq"), RequestType.MTB_FILE, SubmissionType.TEST, RequestStatus.SUCCESS, @@ -195,6 +209,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .episodesOfCare( listOf( MtbEpisodeOfCare.builder() @@ -256,6 +276,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .episodesOfCare( listOf( MtbEpisodeOfCare.builder() @@ -321,6 +347,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata( MvhMetadata.builder() .modelProjectConsent( @@ -423,6 +455,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -433,6 +466,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata()) .episodesOfCare( listOf( @@ -516,6 +555,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata()) .episodesOfCare( listOf( @@ -596,6 +641,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .episodesOfCare( listOf( MtbEpisodeOfCare.builder() @@ -647,6 +698,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -657,6 +709,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2023-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata()) .episodesOfCare( listOf( @@ -717,6 +775,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -789,6 +848,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -799,6 +859,7 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses(listOf(MtbDiagnosis().code(Coding().code("C80.9")).recordedOn(Date()))) .episodesOfCare( listOf( MtbEpisodeOfCare.builder() @@ -894,6 +955,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -904,6 +966,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata.builder().type(MvhSubmissionType.INITIAL).build()) .episodesOfCare( listOf( @@ -1006,6 +1074,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -1016,6 +1085,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata.builder().type(MvhSubmissionType.INITIAL).build()) .episodesOfCare( listOf( @@ -1105,6 +1180,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -1115,6 +1191,7 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses(listOf(MtbDiagnosis().code(Coding().code("C80.9")))) .metadata(MvhMetadata.builder().type(MvhSubmissionType.INITIAL).build()) .episodesOfCare( listOf( @@ -1187,6 +1264,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -1262,6 +1340,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -1273,6 +1352,12 @@ class RequestProcessorTest { PatientRecord.builder() .patient(Patient.builder().id("123").build()) .metadata(MvhMetadata.builder().type(MvhSubmissionType.INITIAL).build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .episodesOfCare( listOf( MtbEpisodeOfCare.builder() @@ -1384,6 +1469,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -1394,6 +1480,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata.builder().type(MvhSubmissionType.INITIAL).build()) .episodesOfCare( listOf( @@ -1492,6 +1584,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -1502,6 +1595,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata.builder().type(MvhSubmissionType.INITIAL).build()) .episodesOfCare( listOf( @@ -1616,6 +1715,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -1626,6 +1726,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata.builder().type(MvhSubmissionType.INITIAL).build()) .episodesOfCare( listOf( @@ -1754,6 +1860,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -1764,6 +1871,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata.builder().type(MvhSubmissionType.INITIAL).build()) .episodesOfCare( listOf( @@ -1883,6 +1996,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -1893,6 +2007,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata.builder().type(MvhSubmissionType.INITIAL).build()) .episodesOfCare( listOf( @@ -1979,6 +2099,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -1989,6 +2110,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata.builder().type(MvhSubmissionType.INITIAL).build()) .episodesOfCare( listOf( @@ -2089,6 +2216,7 @@ class RequestProcessorTest { pseudonymizeService, transformationService, sender, + listOf(routedMtbFileSender), requestService, jsonMapper, applicationEventPublisher, @@ -2099,6 +2227,12 @@ class RequestProcessorTest { val mtbFile = PatientRecord.builder() .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) .metadata(MvhMetadata.builder().type(MvhSubmissionType.INITIAL).build()) .episodesOfCare( listOf( @@ -2135,6 +2269,206 @@ class RequestProcessorTest { } } + @Nested + inner class SwitchedSenders { + + private lateinit var pseudonymizeService: PseudonymizeService + private lateinit var transformationService: TransformationService + private lateinit var sender: MtbFileSender + private lateinit var routedMtbFileSender: RoutedMtbFileSender + private lateinit var requestService: RequestService + private lateinit var applicationEventPublisher: ApplicationEventPublisher + private lateinit var appConfigProperties: AppConfigProperties + private lateinit var consentProcessor: ConsentProcessor + private lateinit var requestProcessor: RequestProcessor + private lateinit var jsonMapper: JsonMapper + + @BeforeEach + fun setup( + @Mock pseudonymizeService: PseudonymizeService, + @Mock transformationService: TransformationService, + @Mock sender: MtbFileSender, + @Mock routedMtbFileSender: RoutedMtbFileSender, + @Mock requestService: RequestService, + @Mock applicationEventPublisher: ApplicationEventPublisher, + @Mock consentProcessor: ConsentProcessor, + ) { + this.pseudonymizeService = pseudonymizeService + this.transformationService = transformationService + this.sender = sender + this.routedMtbFileSender = routedMtbFileSender + this.requestService = requestService + this.applicationEventPublisher = applicationEventPublisher + this.appConfigProperties = AppConfigProperties() + this.consentProcessor = consentProcessor + this.jsonMapper = JsonMapper() + + requestProcessor = + RequestProcessor( + pseudonymizeService, + transformationService, + sender, + listOf(routedMtbFileSender), + requestService, + jsonMapper, + applicationEventPublisher, + appConfigProperties, + consentProcessor, + ) + + doAnswer { + val diagnosis = it.arguments[0] as MtbDiagnosis + diagnosis.code.code.equals("C34.9") + }.whenever(routedMtbFileSender).supportsDiagnosis(any<MtbDiagnosis>()) + } + + @Test + fun testShouldSendMtbFileUsingSwitchedSenderAndSendSuccessEvent() { + doAnswer { + Request( + 1L, + randomRequestId(), + PatientPseudonym("TEST_12345678901"), + PatientId("P1"), + Fingerprint("different"), + RequestType.MTB_FILE, + SubmissionType.TEST, + RequestStatus.SUCCESS, + Tan.empty(), + Instant.parse("2023-08-08T02:00:00Z"), + ) + } + .whenever(requestService) + .lastMtbFileRequestForPatientPseudonym(anyValueClass()) + + doAnswer { false } + .whenever(requestService) + .isLastRequestWithKnownStatusDeletion(anyValueClass()) + + doAnswer { MtbFileSender.Response(status = RequestStatus.SUCCESS) } + .whenever(routedMtbFileSender) + .send(any<DnpmV2MtbFileRequest>()) + + doAnswer { it.arguments[0] as String } + .whenever(pseudonymizeService) + .patientPseudonym(anyValueClass()) + + doAnswer { it.arguments[0] }.whenever(transformationService).transform(any<PatientRecord>()) + + whenever(consentProcessor.consentGatedCheckAndTryEmbedding(any())).thenReturn(true) + + val mtbFile = + PatientRecord.builder() + .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C34.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) + .episodesOfCare( + listOf( + MtbEpisodeOfCare.builder() + .id("1") + .patient(Reference.builder().id("123").build()) + .period( + PeriodDate.builder() + .start(Date.from(Instant.parse("2021-01-01T00:00:00.00Z"))) + .build() + ) + .build() + ) + ) + .build() + + this.requestProcessor.processMtbFile(mtbFile) + + // Do not use DNPM:DIP sender + verify(sender, never()).send(any<MtbFileRequest<PatientRecord>>()) + // Use switched sender instead + verify(routedMtbFileSender, times(1)).send(any<MtbFileRequest<PatientRecord>>()) + + val eventCaptor = argumentCaptor<ResponseEvent>() + verify(applicationEventPublisher, times(1)).publishEvent(eventCaptor.capture()) + assertThat(eventCaptor.firstValue).isNotNull + assertThat(eventCaptor.firstValue.status).isEqualTo(RequestStatus.SUCCESS) + } + + @Test + fun testShouldNotSendMtbFileUsingSwitchedSenderAndSendSuccessEvent() { + doAnswer { + Request( + 1L, + randomRequestId(), + PatientPseudonym("TEST_12345678901"), + PatientId("P1"), + Fingerprint("different"), + RequestType.MTB_FILE, + SubmissionType.TEST, + RequestStatus.SUCCESS, + Tan.empty(), + Instant.parse("2023-08-08T02:00:00Z"), + ) + } + .whenever(requestService) + .lastMtbFileRequestForPatientPseudonym(anyValueClass()) + + doAnswer { false } + .whenever(requestService) + .isLastRequestWithKnownStatusDeletion(anyValueClass()) + + doAnswer { MtbFileSender.Response(status = RequestStatus.SUCCESS) } + .whenever(sender) + .send(any<DnpmV2MtbFileRequest>()) + + doAnswer { it.arguments[0] as String } + .whenever(pseudonymizeService) + .patientPseudonym(anyValueClass()) + + doAnswer { it.arguments[0] }.whenever(transformationService).transform(any<PatientRecord>()) + + whenever(consentProcessor.consentGatedCheckAndTryEmbedding(any())).thenReturn(true) + + val mtbFile = + PatientRecord.builder() + .patient(Patient.builder().id("123").build()) + .diagnoses( + listOf( + MtbDiagnosis().code(Coding().code("C80.9")) + .recordedOn(Date.from(Instant.parse("2020-01-01T02:00:00.00Z"))) + ) + ) + .episodesOfCare( + listOf( + MtbEpisodeOfCare.builder() + .id("1") + .patient(Reference.builder().id("123").build()) + .period( + PeriodDate.builder() + .start(Date.from(Instant.parse("2021-01-01T00:00:00.00Z"))) + .build() + ) + .build() + ) + ) + .build() + + this.requestProcessor.processMtbFile(mtbFile) + + // Use DNPM:DIP sender + verify(sender, times(1)).send(any<MtbFileRequest<PatientRecord>>()) + // Not switched sender + verify(routedMtbFileSender, never()).send(any<MtbFileRequest<PatientRecord>>()) + + val eventCaptor = argumentCaptor<ResponseEvent>() + verify(applicationEventPublisher, times(1)).publishEvent(eventCaptor.capture()) + assertThat(eventCaptor.firstValue).isNotNull + assertThat(eventCaptor.firstValue.status).isEqualTo(RequestStatus.SUCCESS) + } + + } + + @Test fun shouldCatchExceptionsWhenProcessingMtbFileAndSaveError() { val invalidMtbFile = PatientRecord.builder().build() |
