2424import static com .hubsante .hub .testsupport .HubTestScaffolding .aHub ;
2525import static com .hubsante .hub .testsupport .MessageTestUtils .*;
2626import static com .hubsante .hub .testsupport .MetricsUtils .*;
27+ import static com .hubsante .hub .testsupport .assertions .HubAssertions .assertThatMessageSentTo ;
28+ import static com .hubsante .hub .testsupport .assertions .HubAssertions .assertThatMessagesSentTo ;
29+ import static com .hubsante .hub .testsupport .assertions .HubAssertions .assertThatNoMessageSentTo ;
2730import static org .junit .jupiter .api .Assertions .*;
2831import static org .mockito .ArgumentMatchers .any ;
2932import static org .mockito .ArgumentMatchers .anyString ;
3033import static org .mockito .ArgumentMatchers .eq ;
3134import static org .mockito .Mockito .*;
3235
33- import com .fasterxml .jackson .core .JsonProcessingException ;
3436import com .fasterxml .jackson .databind .ObjectMapper ;
3537import com .fasterxml .jackson .dataformat .xml .XmlMapper ;
3638import com .hubsante .hub .config .HubConfiguration ;
4547import com .hubsante .model .Validator ;
4648import com .hubsante .model .edxl .EdxlMessage ;
4749import com .hubsante .model .exception .ValidationException ;
48- import com .hubsante .model .report .Error ;
4950import com .hubsante .model .report .ErrorCode ;
5051import com .hubsante .model .technical .noreq .TechnicalNoreqWrapper ;
5152import io .micrometer .core .instrument .MeterRegistry ;
@@ -236,9 +237,7 @@ public void cisuTranscodingFromHealthToCisuOnHealthVhost() throws IOException {
236237
237238 String expectedTargetExchangeName = "transfer_15-15_v2.1_to_15-nexsis_vactive" ;
238239
239- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
240- Mockito .verify (rabbitTemplate , times (1 ))
241- .send (eq (expectedTargetExchangeName ), eq (SAMU_A_ROUTING_KEY ), argument .capture ());
240+ assertThatMessageSentTo (rabbitTemplate , expectedTargetExchangeName , SAMU_A_ROUTING_KEY );
242241 }
243242
244243 @ Test
@@ -253,9 +252,7 @@ public void cisuTranscodingFromHealthToCisuOnNexsisVhost() throws IOException {
253252
254253 verifyNoConversion (conversionHandler );
255254
256- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
257- Mockito .verify (rabbitTemplate , times (1 ))
258- .send (eq (DISTRIBUTION_EXCHANGE ), eq (SDIS_C_MESSAGE_QUEUE ), argument .capture ());
255+ assertThatMessageSentTo (rabbitTemplate , DISTRIBUTION_EXCHANGE , SDIS_C_MESSAGE_QUEUE );
259256 }
260257
261258 @ Test
@@ -274,9 +271,7 @@ public void cisuTranscodingFromCisuToHealthOnNexsisVhost() throws IOException {
274271
275272 String expectedTargetExchangeName = "transfer_15-nexsis_vactive_to_15-15_v2.1" ;
276273
277- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
278- Mockito .verify (rabbitTemplate , times (1 ))
279- .send (eq (expectedTargetExchangeName ), eq (FIRE_ROUTING_KEY ), argument .capture ());
274+ assertThatMessageSentTo (rabbitTemplate , expectedTargetExchangeName , FIRE_ROUTING_KEY );
280275 }
281276
282277 @ Test
@@ -293,9 +288,7 @@ public void cisuTranscodingFromCisuToHealthOnHealthVhost() throws IOException {
293288
294289 verifyNoConversion (conversionHandler );
295290
296- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
297- Mockito .verify (rabbitTemplate , times (1 ))
298- .send (eq (DISTRIBUTION_EXCHANGE ), eq (SAMU_V3_MESSAGE_QUEUE ), argument .capture ());
291+ assertThatMessageSentTo (rabbitTemplate , DISTRIBUTION_EXCHANGE , SAMU_V3_MESSAGE_QUEUE );
299292 }
300293
301294 @ Test
@@ -336,12 +329,8 @@ public void shouldCallConversionServiceForCISUVersionConvertedMessagesFromSamu()
336329
337330 String expectedTargetExchangeName = "transfer_15-nexsis_v1.9_to_15-nexsis_vactive" ;
338331
339- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
340- Mockito .verify (rabbitTemplate , times (1 ))
341- .send (
342- eq (expectedTargetExchangeName ),
343- eq (SAMU_V3_DIRECT_CISU_ROUTING_KEY ),
344- argument .capture ());
332+ assertThatMessageSentTo (
333+ rabbitTemplate , expectedTargetExchangeName , SAMU_V3_DIRECT_CISU_ROUTING_KEY );
345334 }
346335
347336 @ Test
@@ -362,9 +351,7 @@ public void shouldCallConversionServiceForCISUVersionConvertedMessagesFromNexsis
362351
363352 String expectedTargetExchangeName = "transfer_15-nexsis_vactive_to_15-nexsis_v1.9" ;
364353
365- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
366- Mockito .verify (rabbitTemplate , times (1 ))
367- .send (eq (expectedTargetExchangeName ), eq (FIRE_ROUTING_KEY ), argument .capture ());
354+ assertThatMessageSentTo (rabbitTemplate , expectedTargetExchangeName , FIRE_ROUTING_KEY );
368355 }
369356
370357 @ ParameterizedTest
@@ -378,9 +365,7 @@ public void shouldSendMessageToCurrentVhost(String vhost) throws IOException {
378365
379366 verifyNoConversion (conversionHandler );
380367
381- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
382- Mockito .verify (rabbitTemplate , times (1 ))
383- .send (eq (DISTRIBUTION_EXCHANGE ), eq (SAMU_V3_MESSAGE_QUEUE ), argument .capture ());
368+ assertThatMessageSentTo (rabbitTemplate , DISTRIBUTION_EXCHANGE , SAMU_V3_MESSAGE_QUEUE );
384369 }
385370
386371 @ Test
@@ -435,9 +420,7 @@ public void shouldThrowExpiredBeforeDispatchMessageException() throws IOExceptio
435420 ex .getCause (),
436421 "Cause should be ExpiredBeforeDispatchMessageException" );
437422
438- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
439- Mockito .verify (rabbitTemplate , times (1 ))
440- .send (eq (DISTRIBUTION_EXCHANGE ), eq (SAMU_A_INFO_QUEUE ), argument .capture ());
423+ assertThatMessageSentTo (rabbitTemplate , DISTRIBUTION_EXCHANGE , SAMU_A_INFO_QUEUE );
441424 }
442425
443426 @ Test
@@ -677,9 +660,7 @@ public void transferToOtherVhost() throws IOException {
677660 verify (dispatcher , times (1 )).sendToTransferExchange (anyString (), any (), any ());
678661
679662 // the message must NOT have been published on the source target queue
680- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
681- Mockito .verify (rabbitTemplate , times (0 ))
682- .send (eq (DISTRIBUTION_EXCHANGE ), eq (SAMU_B_MESSAGE_QUEUE ), argument .capture ());
663+ assertThatNoMessageSentTo (rabbitTemplate , DISTRIBUTION_EXCHANGE , SAMU_B_MESSAGE_QUEUE );
683664 }
684665
685666 @ Test
@@ -871,20 +852,13 @@ private void assertErrorHasBeenSent(
871852 String infoQueueName ,
872853 ErrorCode errorCode ,
873854 String referencedDistributionId ,
874- String ... errorCause )
875- throws JsonProcessingException {
855+ String ... errorCause ) {
876856
877- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
878- Mockito .verify (rabbitTemplate , times (1 ))
879- .send (eq (DISTRIBUTION_EXCHANGE ), eq (infoQueueName ), argument .capture ());
880-
881- Error error = getErrorFromMessage (edxlHandler , argument .getValue ());
882- assertEquals (errorCode , error .getErrorCode ());
883- assertEquals (referencedDistributionId , error .getReferencedDistributionID ());
884- if (errorCause != null ) {
885- Arrays .stream (errorCause )
886- .forEach (cause -> assertTrue (error .getErrorCause ().contains (cause )));
887- }
857+ assertThatMessageSentTo (rabbitTemplate , DISTRIBUTION_EXCHANGE , infoQueueName )
858+ .asError ()
859+ .hasCode (errorCode )
860+ .references (referencedDistributionId )
861+ .hasCauseContaining (errorCause );
888862 }
889863
890864 @ Test
@@ -1017,9 +991,7 @@ public void transferErrorToOtherVhost() throws IOException, ValidationException
1017991
1018992 assertEquals ("Mock schema validation error" , errorThrown .getCause ().getMessage ());
1019993
1020- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
1021- Mockito .verify (rabbitTemplate , times (1 ))
1022- .send (eq (exchangeName ), eq ("fr.health.hub" ), argument .capture ());
994+ assertThatMessageSentTo (rabbitTemplate , exchangeName , "fr.health.hub" );
1023995 }
1024996
1025997 @ Test
@@ -1029,9 +1001,7 @@ public void sendErrorMessageToSameVhost() throws IOException {
10291001
10301002 dispatcher .dispatch (errorMessage );
10311003
1032- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
1033- Mockito .verify (rabbitTemplate , times (1 ))
1034- .send (eq (DISTRIBUTION_EXCHANGE ), eq (SAMU_A_INFO_QUEUE ), argument .capture ());
1004+ assertThatMessageSentTo (rabbitTemplate , DISTRIBUTION_EXCHANGE , SAMU_A_INFO_QUEUE );
10351005 }
10361006
10371007 @ Test
@@ -1084,9 +1054,7 @@ public void sendErrorMessageWhenErrorIsRaised() throws IOException, ValidationEx
10841054
10851055 assertEquals ("Mock schema validation error" , errorThrown .getCause ().getMessage ());
10861056
1087- ArgumentCaptor <Message > argument = ArgumentCaptor .forClass (Message .class );
1088- Mockito .verify (rabbitTemplate , times (1 ))
1089- .send (eq (DISTRIBUTION_EXCHANGE ), eq (SAMU_A_INFO_QUEUE ), argument .capture ());
1057+ assertThatMessageSentTo (rabbitTemplate , DISTRIBUTION_EXCHANGE , SAMU_A_INFO_QUEUE );
10901058 }
10911059
10921060 @ Test
@@ -1252,9 +1220,6 @@ public void shouldTransferEveryMessageReturnedByConverter() throws IOException {
12521220 verifyConversion (
12531221 conversionHandler , ConversionUtils .ConversionType .HEALTH_VERSION_CONVERSION );
12541222
1255- ArgumentCaptor <Message > argCaptor = ArgumentCaptor .forClass (Message .class );
1256-
1257- Mockito .verify (rabbitTemplate , times (2 ))
1258- .send (eq (exchangeName ), eq (SAMU_A_ROUTING_KEY ), argCaptor .capture ());
1223+ assertThatMessagesSentTo (rabbitTemplate , exchangeName , SAMU_A_ROUTING_KEY , 2 );
12591224 }
12601225}
0 commit comments