Fix RSocketRequester Coroutines extensions
After gh-24073, some Coroutines extensions should be applied on RetrieveSpec instead of RequestSpec. Closes gh-24166
This commit is contained in:
@@ -94,61 +94,61 @@ inline fun <reified T : Any> RSocketRequester.RequestSpec.dataWithType(flow: Flo
|
||||
|
||||
|
||||
/**
|
||||
* Coroutines variant of [RSocketRequester.RequestSpec.send].
|
||||
* Coroutines variant of [RSocketRequester.RetrieveSpec.send].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 5.2
|
||||
*/
|
||||
suspend fun RSocketRequester.RequestSpec.sendAndAwait() {
|
||||
suspend fun RSocketRequester.RetrieveSpec.sendAndAwait() {
|
||||
send().awaitFirstOrNull()
|
||||
}
|
||||
|
||||
/**
|
||||
* Coroutines variant of [RSocketRequester.RequestSpec.retrieveMono].
|
||||
* Coroutines variant of [RSocketRequester.RetrieveSpec.retrieveMono].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 5.2
|
||||
*/
|
||||
suspend inline fun <reified T : Any> RSocketRequester.RequestSpec.retrieveAndAwait(): T =
|
||||
suspend inline fun <reified T : Any> RSocketRequester.RetrieveSpec.retrieveAndAwait(): T =
|
||||
retrieveMono(object : ParameterizedTypeReference<T>() {}).awaitSingle()
|
||||
|
||||
/**
|
||||
* Nullable coroutines variant of [RSocketRequester.RequestSpec.retrieveMono].
|
||||
* Nullable coroutines variant of [RSocketRequester.RetrieveSpec.retrieveMono].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 5.2.1
|
||||
*/
|
||||
suspend inline fun <reified T : Any> RSocketRequester.RequestSpec.retrieveAndAwaitOrNull(): T? =
|
||||
suspend inline fun <reified T : Any> RSocketRequester.RetrieveSpec.retrieveAndAwaitOrNull(): T? =
|
||||
retrieveMono(object : ParameterizedTypeReference<T>() {}).awaitFirstOrNull()
|
||||
|
||||
/**
|
||||
* Coroutines variant of [RSocketRequester.RequestSpec.retrieveFlux].
|
||||
* Coroutines variant of [RSocketRequester.RetrieveSpec.retrieveFlux].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 5.2
|
||||
*/
|
||||
inline fun <reified T : Any> RSocketRequester.RequestSpec.retrieveFlow(): Flow<T> =
|
||||
inline fun <reified T : Any> RSocketRequester.RetrieveSpec.retrieveFlow(): Flow<T> =
|
||||
retrieveFlux(object : ParameterizedTypeReference<T>() {}).asFlow()
|
||||
|
||||
/**
|
||||
* Extension for [RSocketRequester.RequestSpec.retrieveMono] providing a `retrieveMono<Foo>()`
|
||||
* Extension for [RSocketRequester.RetrieveSpec.retrieveMono] providing a `retrieveMono<Foo>()`
|
||||
* variant leveraging Kotlin reified type parameters. This extension is not subject to type
|
||||
* erasure and retains actual generic type arguments.
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 5.2
|
||||
*/
|
||||
inline fun <reified T : Any> RSocketRequester.RequestSpec.retrieveMono(): Mono<T> =
|
||||
inline fun <reified T : Any> RSocketRequester.RetrieveSpec.retrieveMono(): Mono<T> =
|
||||
retrieveMono(object : ParameterizedTypeReference<T>() {})
|
||||
|
||||
|
||||
/**
|
||||
* Extension for [RSocketRequester.RequestSpec.retrieveFlux] providing a `retrieveFlux<Foo>()`
|
||||
* Extension for [RSocketRequester.RetrieveSpec.retrieveFlux] providing a `retrieveFlux<Foo>()`
|
||||
* variant leveraging Kotlin reified type parameters. This extension is not subject to type
|
||||
* erasure and retains actual generic type arguments.
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 5.2
|
||||
*/
|
||||
inline fun <reified T : Any> RSocketRequester.RequestSpec.retrieveFlux(): Flux<T> =
|
||||
inline fun <reified T : Any> RSocketRequester.RetrieveSpec.retrieveFlux(): Flux<T> =
|
||||
retrieveFlux(object : ParameterizedTypeReference<T>() {})
|
||||
|
||||
@@ -103,56 +103,56 @@ class RSocketRequesterExtensionsTests {
|
||||
|
||||
@Test
|
||||
fun sendAndAwait() {
|
||||
val requestSpec = mockk<RSocketRequester.RequestSpec>()
|
||||
every { requestSpec.send() } returns Mono.empty()
|
||||
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
|
||||
every { retrieveSpec.send() } returns Mono.empty()
|
||||
runBlocking {
|
||||
requestSpec.sendAndAwait()
|
||||
retrieveSpec.sendAndAwait()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun retrieveAndAwait() {
|
||||
val response = "foo"
|
||||
val requestSpec = mockk<RSocketRequester.RequestSpec>()
|
||||
every { requestSpec.retrieveMono(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Mono.just("foo")
|
||||
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
|
||||
every { retrieveSpec.retrieveMono(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Mono.just("foo")
|
||||
runBlocking {
|
||||
assertThat(requestSpec.retrieveAndAwait<String>()).isEqualTo(response)
|
||||
assertThat(retrieveSpec.retrieveAndAwait<String>()).isEqualTo(response)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun retrieveAndAwaitOrNull() {
|
||||
val requestSpec = mockk<RSocketRequester.RequestSpec>()
|
||||
every { requestSpec.retrieveMono(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Mono.empty()
|
||||
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
|
||||
every { retrieveSpec.retrieveMono(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Mono.empty()
|
||||
runBlocking {
|
||||
assertThat(requestSpec.retrieveAndAwaitOrNull<String>()).isNull()
|
||||
assertThat(retrieveSpec.retrieveAndAwaitOrNull<String>()).isNull()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun retrieveFlow() {
|
||||
val requestSpec = mockk<RSocketRequester.RequestSpec>()
|
||||
every { requestSpec.retrieveFlux(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Flux.just("foo", "bar")
|
||||
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
|
||||
every { retrieveSpec.retrieveFlux(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Flux.just("foo", "bar")
|
||||
runBlocking {
|
||||
assertThat(requestSpec.retrieveFlow<String>().toList()).contains("foo", "bar")
|
||||
assertThat(retrieveSpec.retrieveFlow<String>().toList()).contains("foo", "bar")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun retrieveMono() {
|
||||
val requestSpec = mockk<RSocketRequester.RequestSpec>()
|
||||
every { requestSpec.retrieveMono(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Mono.just("foo")
|
||||
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
|
||||
every { retrieveSpec.retrieveMono(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Mono.just("foo")
|
||||
runBlocking {
|
||||
assertThat(requestSpec.retrieveMono<String>().block()).isEqualTo("foo")
|
||||
assertThat(retrieveSpec.retrieveMono<String>().block()).isEqualTo("foo")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun retrieveFlux() {
|
||||
val requestSpec = mockk<RSocketRequester.RequestSpec>()
|
||||
every { requestSpec.retrieveFlux(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Flux.just("foo", "bar")
|
||||
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
|
||||
every { retrieveSpec.retrieveFlux(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Flux.just("foo", "bar")
|
||||
runBlocking {
|
||||
assertThat(requestSpec.retrieveFlux<String>().collectList().block()).contains("foo", "bar")
|
||||
assertThat(retrieveSpec.retrieveFlux<String>().collectList().block()).contains("foo", "bar")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user