From fc25bd2e0d4e13d7616ec964209654fab79afa4d Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 17 Jun 2020 08:38:44 +0200 Subject: [PATCH] GH-1944 Add test to validate Supplier with collections of POJOs Resolves #1944 --- .../ImplicitFunctionBindingTests.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/function/ImplicitFunctionBindingTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/function/ImplicitFunctionBindingTests.java index e58353ca1..e85189a76 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/function/ImplicitFunctionBindingTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/function/ImplicitFunctionBindingTests.java @@ -20,6 +20,7 @@ import java.io.Serializable; import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map; @@ -800,6 +801,34 @@ public class ImplicitFunctionBindingTests { } } + @Test + public void testGh1944() { + System.clearProperty("spring.cloud.function.definition"); + try (ConfigurableApplicationContext context = new SpringApplicationBuilder( + TestChannelBinderConfiguration.getCompleteConfiguration(SupplierAndPojoConfiguration.class)) + .web(WebApplicationType.NONE).run("--spring.jmx.enabled=false", + "--spring.cloud.function.definition=supplier")) { + OutputDestination outputDestination = context.getBean(OutputDestination.class); + + Message result = outputDestination.receive(2000); + assertThat(new String(result.getPayload())).isEqualTo("[{\"name\":\"Ricky\",\"id\":1},{\"name\":\"Julien\",\"id\":2}]"); + } + } + + @EnableAutoConfiguration + public static class SupplierAndPojoConfiguration { + @Bean + public Supplier> supplier() { + Person p1 = new Person(); + p1.setId(1); + p1.setName("Ricky"); + Person p2 = new Person(); + p2.setId(2); + p2.setName("Julien"); + return () -> Arrays.asList(p1, p2); + } + } + @EnableAutoConfiguration public static class SupplierAndProcessorConfiguration { EmitterProcessor> processor = EmitterProcessor.create();