diff --git a/reactor-core/src/test/java/com/baeldung/mono/MonoUnitTest.java b/reactor-core/src/test/java/com/baeldung/mono/MonoUnitTest.java index f9e67b0a2f..0c6e0c07ef 100644 --- a/reactor-core/src/test/java/com/baeldung/mono/MonoUnitTest.java +++ b/reactor-core/src/test/java/com/baeldung/mono/MonoUnitTest.java @@ -1,10 +1,14 @@ package com.baeldung.mono; import org.junit.Test; +import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; import java.time.Duration; import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; import static org.junit.Assert.assertEquals; @@ -40,4 +44,40 @@ public class MonoUnitTest { // blocking return Mono.just("Hello world!"); } + + @Test + public void whenMonoProducesListOfElements_thenConvertToFluxofElements() { + + Mono> monoList = monoOfList(); + + StepVerifier.create(monoTofluxUsingFlatMapIterable(monoList)) + .expectNext("one", "two", "three", "four") + .verifyComplete(); + + StepVerifier.create(monoTofluxUsingFlatMapMany(monoList)) + .expectNext("one", "two", "three", "four") + .verifyComplete(); + } + + private Flux monoTofluxUsingFlatMapIterable(Mono> monoList) { + return monoList + .flatMapIterable(list -> list) + .log(); + } + + private Flux monoTofluxUsingFlatMapMany(Mono> monoList) { + return monoList + .flatMapMany(Flux::fromIterable) + .log(); + } + + private Mono> monoOfList() { + List list = new ArrayList<>(); + list.add("one"); + list.add("two"); + list.add("three"); + list.add("four"); + + return Mono.just(list); + } }