Leverage JUnit 6 suspending function support

Closes gh-36215
This commit is contained in:
Sébastien Deleuze
2026-01-27 08:45:04 +01:00
parent 77c24b28b6
commit bc01eeb433
23 changed files with 287 additions and 539 deletions
@@ -20,7 +20,6 @@ import io.mockk.every
import io.mockk.mockk
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.runBlocking
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.reactivestreams.Publisher
@@ -40,36 +39,30 @@ class RSocketRequesterExtensionsTests {
@Test
@Suppress("DEPRECATION")
fun connectAndAwait() {
suspend fun connectAndAwait() {
val requester = mockk<RSocketRequester>()
val builder = mockk<RSocketRequester.Builder>()
every { builder.connect(any()) } returns Mono.just(requester)
runBlocking {
assertThat(builder.connectAndAwait(mockk())).isEqualTo(requester)
}
assertThat(builder.connectAndAwait(mockk())).isEqualTo(requester)
}
@Test
@Suppress("DEPRECATION")
fun connectTcpAndAwait() {
suspend fun connectTcpAndAwait() {
val host = "127.0.0.1"
val requester = mockk<RSocketRequester>()
val builder = mockk<RSocketRequester.Builder>()
every { builder.connectTcp(host, any()) } returns Mono.just(requester)
runBlocking {
assertThat(builder.connectTcpAndAwait(host, 0)).isEqualTo(requester)
}
assertThat(builder.connectTcpAndAwait(host, 0)).isEqualTo(requester)
}
@Test
@Suppress("DEPRECATION")
fun connectWebSocketAndAwait() {
suspend fun connectWebSocketAndAwait() {
val requester = mockk<RSocketRequester>()
val builder = mockk<RSocketRequester.Builder>()
every { builder.connectWebSocket(any()) } returns Mono.just(requester)
runBlocking {
assertThat(builder.connectWebSocketAndAwait(mockk())).isEqualTo(requester)
}
assertThat(builder.connectWebSocketAndAwait(mockk())).isEqualTo(requester)
}
@Test
@@ -104,57 +97,45 @@ class RSocketRequesterExtensionsTests {
}
@Test
fun sendAndAwait() {
suspend fun sendAndAwait() {
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
every { retrieveSpec.send() } returns Mono.empty()
runBlocking {
retrieveSpec.sendAndAwait()
}
retrieveSpec.sendAndAwait()
}
@Test
fun retrieveAndAwait() {
suspend fun retrieveAndAwait() {
val response = "foo"
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
every { retrieveSpec.retrieveMono(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Mono.just("foo")
runBlocking {
assertThat(retrieveSpec.retrieveAndAwait<String>()).isEqualTo(response)
}
assertThat(retrieveSpec.retrieveAndAwait<String>()).isEqualTo(response)
}
@Test
fun retrieveAndAwaitOrNull() {
suspend fun retrieveAndAwaitOrNull() {
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
every { retrieveSpec.retrieveMono(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Mono.empty()
runBlocking {
assertThat(retrieveSpec.retrieveAndAwaitOrNull<String>()).isNull()
}
assertThat(retrieveSpec.retrieveAndAwaitOrNull<String>()).isNull()
}
@Test
fun retrieveFlow() {
suspend fun retrieveFlow() {
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
every { retrieveSpec.retrieveFlux(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Flux.just("foo", "bar")
runBlocking {
assertThat(retrieveSpec.retrieveFlow<String>().toList()).contains("foo", "bar")
}
assertThat(retrieveSpec.retrieveFlow<String>().toList()).contains("foo", "bar")
}
@Test
fun retrieveMono() {
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
every { retrieveSpec.retrieveMono(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Mono.just("foo")
runBlocking {
assertThat(retrieveSpec.retrieveMono<String>().block()).isEqualTo("foo")
}
assertThat(retrieveSpec.retrieveMono<String>().block()).isEqualTo("foo")
}
@Test
fun retrieveFlux() {
val retrieveSpec = mockk<RSocketRequester.RetrieveSpec>()
every { retrieveSpec.retrieveFlux(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Flux.just("foo", "bar")
runBlocking {
assertThat(retrieveSpec.retrieveFlux<String>().collectList().block()).contains("foo", "bar")
}
assertThat(retrieveSpec.retrieveFlux<String>().collectList().block()).contains("foo", "bar")
}
}
@@ -22,7 +22,6 @@ import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.reactive.asFlow
import kotlinx.coroutines.runBlocking
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
@@ -53,7 +52,7 @@ class RSocketServiceMethodKotlinTests {
}
@Test
fun fireAndForget(): Unit = runBlocking {
suspend fun fireAndForget() {
val service = proxyFactory.createClient(SuspendingFunctionsService::class.java)
val requestPayload = "request"
@@ -65,7 +64,7 @@ class RSocketServiceMethodKotlinTests {
}
@Test
fun requestResponse(): Unit = runBlocking {
suspend fun requestResponse() {
val service = proxyFactory.createClient(SuspendingFunctionsService::class.java)
val requestPayload = "request"
@@ -80,7 +79,7 @@ class RSocketServiceMethodKotlinTests {
}
@Test
fun requestStream(): Unit = runBlocking {
suspend fun requestStream() {
val service = proxyFactory.createClient(SuspendingFunctionsService::class.java)
val requestPayload = "request"
@@ -97,7 +96,7 @@ class RSocketServiceMethodKotlinTests {
}
@Test
fun nonSuspendingRequestStream(): Unit = runBlocking {
suspend fun nonSuspendingRequestStream() {
val service = proxyFactory.createClient(NonSuspendingFunctionsService::class.java)
val requestPayload = "request"
@@ -114,7 +113,7 @@ class RSocketServiceMethodKotlinTests {
}
@Test
fun requestChannel(): Unit = runBlocking {
suspend fun requestChannel() {
val service = proxyFactory.createClient(SuspendingFunctionsService::class.java)
val requestPayload1 = "request1"