Skip to content

Commit 708931b

Browse files
committed
test: SqsOutboundChannelAdapterParserTest updated with ParserTestBase
1 parent 9e3aac1 commit 708931b

File tree

1 file changed

+52
-31
lines changed

1 file changed

+52
-31
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,65 @@
11
package org.springframework.integration.aws.support.config.xml.parsers;
22

3+
import org.bool.junit.mockito.inline.ConstructionMock;
4+
5+
import org.assertj.core.api.InstanceOfAssertFactories;
36
import org.junit.jupiter.api.Test;
4-
import org.springframework.beans.factory.config.BeanDefinition;
5-
import org.springframework.beans.factory.config.RuntimeBeanReference;
6-
import org.springframework.beans.factory.config.TypedStringValue;
7-
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
8-
import org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry;
9-
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
7+
import org.mockito.Mock;
8+
import org.mockito.MockedConstruction.Context;
109
import org.springframework.integration.aws.outbound.SqsMessageHandler;
11-
12-
import java.util.stream.Collectors;
13-
import java.util.stream.Stream;
10+
import org.springframework.messaging.converter.MessageConverter;
11+
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
1412

1513
import static org.assertj.core.api.Assertions.assertThat;
1614

17-
class SqsOutboundChannelAdapterParserTest {
15+
@ConstructionMock(SqsMessageHandler.class)
16+
class SqsOutboundChannelAdapterParserTest extends ParserTestBase {
1817

19-
private final BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();
18+
@Mock
19+
private SqsAsyncClient sqs;
2020

21-
private final XmlBeanDefinitionReader xmlBeanDefinitionReader = new XmlBeanDefinitionReader(registry);
21+
@Mock
22+
private MessageConverter messageConverter;
2223

2324
@Test
24-
void testReader() {
25-
int beansLoaded = xmlBeanDefinitionReader.loadBeanDefinitions("classpath:/sqs-outbound-channel-adapter.xml");
26-
var beans = Stream.of(registry.getBeanDefinitionNames()).collect(Collectors.toMap(k -> k, registry::getBeanDefinition));
27-
28-
assertThat(beans)
29-
.hasSize(beansLoaded)
30-
.containsKey("adapter");
31-
32-
var def = beans.values().stream()
33-
.filter(bd -> bd.getBeanClassName().equals(SqsMessageHandler.class.getName()))
34-
.findAny().orElseThrow();
35-
36-
assertThat(def)
37-
.matches(bd -> bd.getConstructorArgumentValues().getArgumentValue(0, null).getValue().equals(new RuntimeBeanReference("sqsClient")))
38-
.extracting(BeanDefinition::getPropertyValues)
39-
.matches(properties -> properties.get("async").equals(new TypedStringValue("false")), "async")
40-
.matches(properties -> properties.get("messageConverter").equals(new RuntimeBeanReference("msgConv")), "message converter")
41-
.matches(properties -> properties.get("outputChannelName").equals(new TypedStringValue("okChannel")), "success channel")
42-
;
25+
void testMessageHandler() {
26+
registerBean("sqs", sqs);
27+
registerBean("mc", messageConverter);
28+
29+
parse("""
30+
<int-aws:sqs-outbound-channel-adapter
31+
id="soca"
32+
channel="c"
33+
sqs="sqs"
34+
sync="false"
35+
message-converter="mc"
36+
error-message-strategy="ems"
37+
success-channel="sc"
38+
queue="q"
39+
send-timeout="#{50}"
40+
delay="#{5}"
41+
message-deduplication-id-expression="mdi.exp"
42+
message-group-id-expression="mgi.exp"
43+
failure-channel="unknownChannel"
44+
resource-id-resolver="unknownResolver"
45+
async-handler="unknownHandler"
46+
/>
47+
""");
48+
49+
var handler = beanFactory.getBean(SqsMessageHandler.class);
50+
51+
verify(handler).setQueue("q");
52+
verify(handler).setAsync(true);
53+
verify(handler).setMessageConverter(messageConverter);
54+
verify(handler).setOutputChannelName("sc");
55+
verify(handler).setMessageDeduplicationIdExpressionString("mdi.exp");
56+
verify(handler).setMessageGroupIdExpressionString("mgi.exp");
57+
verify(handler).setDelay(5);
58+
verify(handler).setSendTimeout(50L);
59+
}
60+
61+
void testMessageHandler(SqsMessageHandler mock, Context context) {
62+
assertThat(context.arguments()).asInstanceOf(InstanceOfAssertFactories.LIST)
63+
.contains(sqs);
4364
}
4465
}

0 commit comments

Comments
 (0)