1313import org .mockito .ArgumentCaptor ;
1414import org .mockito .Captor ;
1515import org .mockito .Mock ;
16+ import org .mockito .MockedConstruction ;
17+ import org .mockito .MockedConstruction .Context ;
1618import org .springframework .core .task .TaskExecutor ;
1719import org .springframework .integration .aws .inbound .SqsMessageDrivenChannelAdapter ;
20+ import org .springframework .integration .junit .ConstructionMock ;
1821import software .amazon .awssdk .services .sqs .SqsAsyncClient ;
1922
2023import java .time .Duration ;
@@ -35,64 +38,67 @@ class SqsMessageDrivenChannelAdapterParserTest extends ParserTestBase {
3538 @ Mock
3639 private TaskExecutor taskExecutor ;
3740
41+ @ ConstructionMock (SqsMessageDrivenChannelAdapter .class )
3842 @ Test
39- void testBeanDefinition () {
43+ void testBeanDefinition (MockedConstruction < SqsMessageDrivenChannelAdapter > mocked ) {
4044 registerBean ("sqs" , SqsAsyncClient .class , sqs );
4145 registerBean ("mc" , MessagingMessageConverter .class , messageConverter );
4246 registerBean ("ex" , TaskExecutor .class , taskExecutor );
4347
44- try (var mocked = mockConstruction (SqsMessageDrivenChannelAdapter .class ,
45- (mock , context ) -> assertThat (context .arguments ()).asInstanceOf (InstanceOfAssertFactories .LIST ).contains (sqs , new String [] {"q" }))) {
46- var adapter = loadBean (SqsMessageDrivenChannelAdapter .class , """
47- <int-aws:sqs-message-driven-channel-adapter queues="q" sqs="sqs"
48- id="i"
49- channel="c"
50- error-channel="ec"
51- send-timeout="#{50}"
52- acknowledgement-interval="#{50}"
53- acknowledgement-ordering="#{'ORDERED_BY_GROUP'}"
54- acknowledgement-mode="#{'ALWAYS'}"
55- acknowledgement-threshold="#{5}"
56- back-pressure-mode="#{'FIXED_HIGH_THROUGHPUT'}"
57- queue-not-found-strategy="#{'FAIL'}"
58- fifo-batch-grouping-strategy="#{'PROCESS_MESSAGE_GROUPS_IN_PARALLEL_BATCHES'}"
59- listener-mode="#{'BATCH'}"
60- message-visibility="#{5}"
61- max-concurrent-messages="#{5}"
62- max-messages-per-poll="#{5}"
63- max-delay-between-polls="#{5}"
64- poll-timeout="#{5}"
65- listener-shutdown-timeout="#{5}"
66- message-converter="mc"
67- components-task-executor="ex"/>
68- """ );
48+ var adapter = loadBean (SqsMessageDrivenChannelAdapter .class , """
49+ <int-aws:sqs-message-driven-channel-adapter queues="q" sqs="sqs"
50+ id="i"
51+ channel="c"
52+ error-channel="ec"
53+ send-timeout="#{50}"
54+ acknowledgement-interval="#{50}"
55+ acknowledgement-ordering="#{'ORDERED_BY_GROUP'}"
56+ acknowledgement-mode="#{'ALWAYS'}"
57+ acknowledgement-threshold="#{5}"
58+ back-pressure-mode="#{'FIXED_HIGH_THROUGHPUT'}"
59+ queue-not-found-strategy="#{'FAIL'}"
60+ fifo-batch-grouping-strategy="#{'PROCESS_MESSAGE_GROUPS_IN_PARALLEL_BATCHES'}"
61+ listener-mode="#{'BATCH'}"
62+ message-visibility="#{5}"
63+ max-concurrent-messages="#{5}"
64+ max-messages-per-poll="#{5}"
65+ max-delay-between-polls="#{5}"
66+ poll-timeout="#{5}"
67+ listener-shutdown-timeout="#{5}"
68+ message-converter="mc"
69+ components-task-executor="ex"/>
70+ """ );
6971
70- assertThat (mocked .constructed ()).size ().isOne ();
72+ verify (adapter ).setBeanName ("i" );
73+ verify (adapter ).setOutputChannelName ("c" );
74+ verify (adapter ).setErrorChannelName ("ec" );
75+ verify (adapter ).setSendTimeout (50 );
76+ verify (adapter ).setSqsContainerOptions (containerOptions .capture ());
7177
72- verify ( adapter ). setBeanName ( "i" );
73- verify ( adapter ). setOutputChannelName ( "c" );
74- verify ( adapter ). setErrorChannelName ( "ec" );
75- verify ( adapter ). setSendTimeout ( 50 );
76- verify ( adapter ). setSqsContainerOptions ( containerOptions . capture ());
77-
78- assertThat ( containerOptions . getValue () )
79- .returns (Duration . ofMillis ( 50 ) , SqsContainerOptions ::getAcknowledgementInterval )
80- .returns (AcknowledgementOrdering . ORDERED_BY_GROUP , SqsContainerOptions ::getAcknowledgementOrdering )
81- .returns (AcknowledgementMode . ALWAYS , SqsContainerOptions ::getAcknowledgementMode )
82- .returns (5 , SqsContainerOptions ::getAcknowledgementThreshold )
83- .returns (BackPressureMode . FIXED_HIGH_THROUGHPUT , SqsContainerOptions ::getBackPressureMode )
84- .returns (QueueNotFoundStrategy . FAIL , SqsContainerOptions ::getQueueNotFoundStrategy )
85- .returns (FifoBatchGroupingStrategy . PROCESS_MESSAGE_GROUPS_IN_PARALLEL_BATCHES , SqsContainerOptions ::getFifoBatchGroupingStrategy )
86- .returns (ListenerMode . BATCH , SqsContainerOptions ::getListenerMode )
87- .returns (Duration . ofSeconds ( 5 ) , SqsContainerOptions ::getMessageVisibility )
88- .returns (5 , SqsContainerOptions ::getMaxConcurrentMessages )
89- . returns ( 5 , SqsContainerOptions :: getMaxMessagesPerPoll )
90- . returns ( Duration . ofSeconds ( 5 ), SqsContainerOptions :: getMaxDelayBetweenPolls )
91- . returns ( Duration . ofSeconds ( 5 ), SqsContainerOptions :: getPollTimeout )
92- . returns ( Duration . ofSeconds ( 5 ), SqsContainerOptions :: getListenerShutdownTimeout )
93- . returns ( messageConverter , SqsContainerOptions :: getMessageConverter )
94- . returns ( taskExecutor , SqsContainerOptions :: getComponentsTaskExecutor )
95- ;
96- }
78+ assertThat ( containerOptions . getValue ())
79+ . returns ( Duration . ofMillis ( 50 ), SqsContainerOptions :: getAcknowledgementInterval )
80+ . returns ( AcknowledgementOrdering . ORDERED_BY_GROUP , SqsContainerOptions :: getAcknowledgementOrdering )
81+ . returns ( AcknowledgementMode . ALWAYS , SqsContainerOptions :: getAcknowledgementMode )
82+ . returns ( 5 , SqsContainerOptions :: getAcknowledgementThreshold )
83+ . returns ( BackPressureMode . FIXED_HIGH_THROUGHPUT , SqsContainerOptions :: getBackPressureMode )
84+ . returns ( QueueNotFoundStrategy . FAIL , SqsContainerOptions :: getQueueNotFoundStrategy )
85+ .returns (FifoBatchGroupingStrategy . PROCESS_MESSAGE_GROUPS_IN_PARALLEL_BATCHES , SqsContainerOptions ::getFifoBatchGroupingStrategy )
86+ .returns (ListenerMode . BATCH , SqsContainerOptions ::getListenerMode )
87+ .returns (Duration . ofSeconds ( 5 ) , SqsContainerOptions ::getMessageVisibility )
88+ .returns (5 , SqsContainerOptions ::getMaxConcurrentMessages )
89+ .returns (5 , SqsContainerOptions ::getMaxMessagesPerPoll )
90+ .returns (Duration . ofSeconds ( 5 ) , SqsContainerOptions ::getMaxDelayBetweenPolls )
91+ .returns (Duration . ofSeconds ( 5 ) , SqsContainerOptions ::getPollTimeout )
92+ .returns (Duration . ofSeconds ( 5 ) , SqsContainerOptions ::getListenerShutdownTimeout )
93+ .returns (messageConverter , SqsContainerOptions ::getMessageConverter )
94+ .returns (taskExecutor , SqsContainerOptions ::getComponentsTaskExecutor )
95+ ;
96+
97+ assertThat ( mocked . constructed ()). size (). isOne ();
98+ }
99+
100+ void testBeanDefinition ( SqsMessageDrivenChannelAdapter mock , Context context ) {
101+ assertThat ( context . arguments ()). asInstanceOf ( InstanceOfAssertFactories . LIST )
102+ . contains ( sqs , new String [] { "q" });
97103 }
98104}
0 commit comments