|
| 1 | +package org.springframework.integration.aws.config.xml; |
| 2 | + |
| 3 | +import org.assertj.core.api.Condition; |
| 4 | +import org.assertj.core.api.InstanceOfAssertFactories; |
| 5 | +import org.junit.jupiter.api.Test; |
| 6 | +import org.springframework.beans.PropertyValue; |
| 7 | +import org.springframework.beans.factory.config.BeanDefinition; |
| 8 | +import org.springframework.beans.factory.config.RuntimeBeanReference; |
| 9 | +import org.springframework.beans.factory.config.TypedStringValue; |
| 10 | +import org.springframework.beans.factory.support.BeanDefinitionRegistry; |
| 11 | +import org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry; |
| 12 | +import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; |
| 13 | +import org.springframework.integration.aws.outbound.SqsMessageHandler; |
| 14 | + |
| 15 | +import java.util.stream.Collectors; |
| 16 | +import java.util.stream.Stream; |
| 17 | + |
| 18 | +import static org.assertj.core.api.Assertions.assertThat; |
| 19 | + |
| 20 | +class SqsOutboundChannelAdapterParserTest { |
| 21 | + |
| 22 | + private final BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry(); |
| 23 | + |
| 24 | + private final XmlBeanDefinitionReader xmlBeanDefinitionReader = new XmlBeanDefinitionReader(registry); |
| 25 | + |
| 26 | + @Test |
| 27 | + void testReader() { |
| 28 | + int beansLoaded = xmlBeanDefinitionReader.loadBeanDefinitions("classpath:/sqs-outbound-channel-adapter.xml"); |
| 29 | + var beans = Stream.of(registry.getBeanDefinitionNames()).collect(Collectors.toMap(k -> k, registry::getBeanDefinition)); |
| 30 | + |
| 31 | + assertThat(beans) |
| 32 | + .hasSize(beansLoaded) |
| 33 | + .containsKey("adapter"); |
| 34 | + |
| 35 | + var def = beans.values().stream() |
| 36 | + .filter(bd -> bd.getBeanClassName().equals(SqsMessageHandler.class.getName())) |
| 37 | + .findAny().orElseThrow(); |
| 38 | + |
| 39 | + assertThat(def) |
| 40 | + .matches(bd -> bd.getConstructorArgumentValues().getArgumentValue(0, null).getValue().equals(new RuntimeBeanReference("sqsClient"))) |
| 41 | + .extracting(BeanDefinition::getPropertyValues) |
| 42 | + .matches(properties -> properties.get("async").equals(new TypedStringValue("false")), "async") |
| 43 | + .matches(properties -> properties.get("messageConverter").equals(new RuntimeBeanReference("msgConv")), "message converter") |
| 44 | + ; |
| 45 | + } |
| 46 | +} |
0 commit comments