GH-608 Add test to validate there is no regression

Resolves #608
This commit is contained in:
Oleg Zhurakousky
2020-11-20 11:26:55 +01:00
parent 246e96229c
commit 2e119a3dd6

View File

@@ -24,6 +24,7 @@ import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
@@ -516,6 +517,19 @@ public class BeanFactoryAwareFunctionRegistryTests {
assertThat(result.getHeaders().get("after")).isEqualTo("bar");
}
@Test
public void testGH_608() {
ApplicationContext context = new SpringApplicationBuilder(SampleFunctionConfiguration.class)
.run("--logging.level.org.springframework.cloud.function=DEBUG",
"--spring.main.lazy-initialization=true");
FunctionCatalog catalog = context.getBean(FunctionCatalog.class);
Consumer<Flux<String>> consumer = catalog.lookup("reactivePojoConsumer");
consumer.accept(Flux.just("{\"name\":\"Ricky\"}"));
SampleFunctionConfiguration config = context.getBean(SampleFunctionConfiguration.class);
assertThat(((Person) config.consumerInputRef.get()).getName()).isEqualTo("Ricky");
}
@EnableAutoConfiguration
public static class PojoToMessageFunctionCompositionConfiguration {
@@ -693,6 +707,8 @@ public class BeanFactoryAwareFunctionRegistryTests {
@Configuration
protected static class SampleFunctionConfiguration {
AtomicReference<Object> consumerInputRef = new AtomicReference<>();
@Bean
public Function<Person, Person> uppercasePerson() {
return person -> {
@@ -849,6 +865,12 @@ public class BeanFactoryAwareFunctionRegistryTests {
public Consumer<Flux<String>> reactiveConsumer() {
return null;
}
@Bean
// Perhaps it should not be allowed. Recommend Function<Flux, Mono<Void>>
public Consumer<Flux<Person>> reactivePojoConsumer() {
return flux -> flux.subscribe(v -> consumerInputRef.set(v));
}
}
@EnableAutoConfiguration