Add SmallRye Mutiny adapters

Closes gh-26222
This commit is contained in:
hantsy
2021-08-28 11:20:12 +08:00
committed by Rossen Stoyanchev
parent 8f33450df2
commit 1dc128361f
4 changed files with 77 additions and 0 deletions

View File

@@ -21,6 +21,8 @@ import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import io.smallrye.mutiny.Multi;
import io.smallrye.mutiny.Uni;
import kotlinx.coroutines.Deferred;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
@@ -357,6 +359,52 @@ class ReactiveAdapterRegistryTests {
}
}
// SmallRye Mutiny
@Nested
class Mutiny {
@Test
void defaultAdapterRegistrations() {
assertThat(getAdapter(io.smallrye.mutiny.Uni.class)).isNotNull();
assertThat(getAdapter(io.smallrye.mutiny.Multi.class)).isNotNull();
}
@Test
void toUni() {
Publisher<Integer> source = Mono.just(1);
Object target = getAdapter(Uni.class).fromPublisher(source);
assertThat(target).isInstanceOf(Uni.class);
assertThat(((Uni<Integer>) target).await().atMost(Duration.ofMillis(1000))).isEqualTo(Integer.valueOf(1));
}
@Test
void fromUni() {
Uni<Integer> source = Uni.createFrom().item(1);
Object target = getAdapter(Uni.class).toPublisher(source);
assertThat(target).isInstanceOf(Mono.class);
assertThat(((Mono<Integer>) target).block(Duration.ofMillis(1000))).isEqualTo(Integer.valueOf(1));
}
@Test
void toMulti() {
List<Integer> sequence = Arrays.asList(1, 2, 3);
Publisher<Integer> source = Flux.fromIterable(sequence);
Object target = getAdapter(Multi.class).fromPublisher(source);
assertThat(target).isInstanceOf(Multi.class);
assertThat(((Multi<Integer>) target).collect().asList().await().atMost(Duration.ofMillis(1000))).isEqualTo(sequence);
}
@Test
void fromMulti() {
List<Integer> sequence = Arrays.asList(1, 2, 3);
Multi<Integer> source = Multi.createFrom().iterable(sequence);
Object target = getAdapter(Multi.class).toPublisher(source);
assertThat(target).isInstanceOf(Flux.class);
assertThat(((Flux<Integer>) target).blockLast(Duration.ofMillis(1000))).isEqualTo(Integer.valueOf(3));
}
}
private ReactiveAdapter getAdapter(Class<?> reactiveType) {
ReactiveAdapter adapter = this.registry.getAdapter(reactiveType);
assertThat(adapter).isNotNull();