diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index 004e163bd..c20fabfa7 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -83,14 +83,14 @@ - org.mongodb + org.mongodb mongodb-driver-reactivestreams ${mongo.reactivestreams} true - org.mongodb + org.mongodb mongodb-driver-async ${mongo} true @@ -107,7 +107,7 @@ - io.projectreactor + io.projectreactor reactor-core true @@ -119,14 +119,14 @@ - io.reactivex + io.reactivex rxjava ${rxjava} true - io.reactivex + io.reactivex rxjava-reactive-streams ${rxjava-reactive-streams} true @@ -266,11 +266,13 @@ kotlin-stdlib true + org.jetbrains.kotlin kotlin-reflect true + org.jetbrains.kotlinx kotlinx-coroutines-core diff --git a/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveFindOperationExtensions.kt b/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveFindOperationExtensions.kt index 96138a1d4..de6545f15 100644 --- a/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveFindOperationExtensions.kt +++ b/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveFindOperationExtensions.kt @@ -56,7 +56,7 @@ inline fun ReactiveFindOperation.FindWithProjection<*>.asType( `as`(T::class.java) /** - * Extension for [ExecutableFindOperation.DistinctWithProjection. as] providing a [KClass] based variant. + * Extension for [ExecutableFindOperation.DistinctWithProjection.as] providing a [KClass] based variant. * * @author Christoph Strobl * @since 2.1 @@ -65,7 +65,7 @@ fun ReactiveFindOperation.DistinctWithProjection.asType(resultType: KC `as`(resultType.java); /** - * Extension for [ReactiveFindOperation.DistinctWithProjection. as] leveraging reified type parameters. + * Extension for [ReactiveFindOperation.DistinctWithProjection.as] leveraging reified type parameters. * * @author Christoph Strobl * @since 2.1 @@ -79,7 +79,7 @@ inline fun ReactiveFindOperation.DistinctWithProjection.asType * @author Sebastien Deleuze * @since 2.2 */ -suspend inline fun ReactiveFindOperation.TerminatingFind.awaitOne(): T? = +suspend inline fun ReactiveFindOperation.TerminatingFind.awaitOne(): T? = one().awaitFirstOrNull() /** @@ -88,7 +88,7 @@ suspend inline fun ReactiveFindOperation.TerminatingFind.awa * @author Sebastien Deleuze * @since 2.2 */ -suspend inline fun ReactiveFindOperation.TerminatingFind.awaitFirst(): T? = +suspend inline fun ReactiveFindOperation.TerminatingFind.awaitFirst(): T? = first().awaitFirstOrNull() /** diff --git a/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveUpdateOperationExtensions.kt b/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveUpdateOperationExtensions.kt index 393bdf6f7..72e5db8de 100644 --- a/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveUpdateOperationExtensions.kt +++ b/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveUpdateOperationExtensions.kt @@ -89,5 +89,5 @@ suspend fun ReactiveUpdateOperation.TerminatingUpdate.upsertAndAwai * @author Sebastien Deleuze * @since 2.2 */ -inline fun ReactiveUpdateOperation.FindAndReplaceWithProjection.asType(): ReactiveUpdateOperation.FindAndReplaceWithOptions = +inline fun ReactiveUpdateOperation.FindAndReplaceWithProjection<*>.asType(): ReactiveUpdateOperation.FindAndReplaceWithOptions = `as`(T::class.java) diff --git a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveFindOperationExtensionsTests.kt b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveFindOperationExtensionsTests.kt index 53185d6ce..e60746c20 100644 --- a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveFindOperationExtensionsTests.kt +++ b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveFindOperationExtensionsTests.kt @@ -20,6 +20,7 @@ import io.mockk.every import io.mockk.mockk import io.mockk.verify import kotlinx.coroutines.runBlocking +import org.assertj.core.api.Assertions.assertThat import org.junit.Assert.assertEquals import org.junit.Test import reactor.core.publisher.Mono @@ -78,49 +79,61 @@ class ReactiveFindOperationExtensionsTests { verify { distinctWithProjection.`as`(User::class.java) } } - @Test + @Test // DATAMONGO-2209 fun terminatingFindAwaitOne() { + val find = mockk>() every { find.one() } returns Mono.just("foo") + runBlocking { - assertEquals("foo", find.awaitOne()) + assertThat(find.awaitOne()).isEqualTo("foo") } + verify { find.one() } } - @Test + @Test // DATAMONGO-2209 fun terminatingFindAwaitFirst() { + val find = mockk>() every { find.first() } returns Mono.just("foo") + runBlocking { - assertEquals("foo", find.awaitFirst()) + assertThat(find.awaitFirst()).isEqualTo("foo") } + verify { find.first() } } - @Test + @Test // DATAMONGO-2209 fun terminatingFindAwaitCount() { + val find = mockk>() every { find.count() } returns Mono.just(1) + runBlocking { - assertEquals(1, find.awaitCount()) + assertThat(find.awaitCount()).isEqualTo(1) } + verify { find.count() } } - @Test + @Test // DATAMONGO-2209 fun terminatingFindAwaitExists() { + val find = mockk>() every { find.exists() } returns Mono.just(true) + runBlocking { - assertEquals(true, find.awaitExists()) + assertThat(find.awaitExists()).isTrue() } + verify { find.exists() } diff --git a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveInsertOperationExtensionsTests.kt b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveInsertOperationExtensionsTests.kt index 5e2b00507..93c24cbb9 100644 --- a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveInsertOperationExtensionsTests.kt +++ b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveInsertOperationExtensionsTests.kt @@ -20,7 +20,7 @@ import io.mockk.every import io.mockk.mockk import io.mockk.verify import kotlinx.coroutines.runBlocking -import org.junit.Assert.assertEquals +import org.assertj.core.api.Assertions.assertThat import org.junit.Test import reactor.core.publisher.Mono @@ -46,13 +46,16 @@ class ReactiveInsertOperationExtensionsTests { verify { operation.insert(First::class.java) } } - @Test + @Test // DATAMONGO-2209 fun terminatingFindAwaitOne() { + val find = mockk>() every { find.one("foo") } returns Mono.just("foo") + runBlocking { - assertEquals("foo", find.oneAndAwait("foo")) + assertThat(find.oneAndAwait("foo")).isEqualTo("foo") } + verify { find.one("foo") } diff --git a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveRemoveOperationExtensionsTests.kt b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveRemoveOperationExtensionsTests.kt index 3da9615dd..8802d3946 100644 --- a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveRemoveOperationExtensionsTests.kt +++ b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveRemoveOperationExtensionsTests.kt @@ -21,7 +21,7 @@ import io.mockk.every import io.mockk.mockk import io.mockk.verify import kotlinx.coroutines.runBlocking -import org.junit.Assert.assertEquals +import org.assertj.core.api.Assertions.assertThat import org.junit.Test import reactor.core.publisher.Mono @@ -47,14 +47,17 @@ class ReactiveRemoveOperationExtensionsTests { verify { operation.remove(First::class.java) } } - @Test + @Test // DATAMONGO-2209 fun allAndAwait() { + val remove = mockk>() val result = mockk() every { remove.all() } returns Mono.just(result) + runBlocking { - assertEquals(result, remove.allAndAwait()) + assertThat(remove.allAndAwait()).isEqualTo(result) } + verify { remove.all() } diff --git a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveUpdateOperationExtensionsTests.kt b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveUpdateOperationExtensionsTests.kt index 591d1ef4d..3bc5d96a8 100644 --- a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveUpdateOperationExtensionsTests.kt +++ b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveUpdateOperationExtensionsTests.kt @@ -21,7 +21,7 @@ import io.mockk.every import io.mockk.mockk import io.mockk.verify import kotlinx.coroutines.runBlocking -import org.junit.Assert.assertEquals +import org.assertj.core.api.Assertions.assertThat import org.junit.Test import reactor.core.publisher.Mono @@ -49,75 +49,93 @@ class ReactiveUpdateOperationExtensionsTests { verify { operation.update(First::class.java) } } - @Test + @Test // DATAMONGO-2209 fun findModifyAndAwait() { + val find = mockk>() every { find.findAndModify() } returns Mono.just("foo") + runBlocking { - assertEquals("foo", find.findModifyAndAwait()) + assertThat(find.findModifyAndAwait()).isEqualTo("foo") } + verify { find.findAndModify() } } - @Test + @Test // DATAMONGO-2209 fun findReplaceAndAwait() { + val find = mockk>() every { find.findAndReplace() } returns Mono.just("foo") + runBlocking { - assertEquals("foo", find.findReplaceAndAwait()) + assertThat(find.findReplaceAndAwait()).isEqualTo("foo") } + verify { find.findAndReplace() } } - @Test + @Test // DATAMONGO-2209 fun allAndAwait() { + val update = mockk>() val result = mockk() every { update.all() } returns Mono.just(result) + runBlocking { - assertEquals(result, update.allAndAwait()) + assertThat(update.allAndAwait()).isEqualTo(result) } + verify { update.all() } } - @Test + @Test // DATAMONGO-2209 fun firstAndAwait() { + val update = mockk>() val result = mockk() every { update.first() } returns Mono.just(result) + runBlocking { - assertEquals(result, update.firstAndAwait()) + assertThat(update.firstAndAwait()).isEqualTo(result) } + verify { update.first() } } - @Test + @Test // DATAMONGO-2209 fun upsertAndAwait() { + val update = mockk>() val result = mockk() every { update.upsert() } returns Mono.just(result) + runBlocking { - assertEquals(result, update.upsertAndAwait()) + assertThat(update.upsertAndAwait()).isEqualTo(result) } + verify { update.upsert() } } - @Test + @Test // DATAMONGO-2209 fun findAndReplaceWithProjectionAsType() { + val update = mockk>() val result = mockk>() every { update.`as`(String::class.java) } returns result - assertEquals(result, update.asType()) + + assertThat(update.asType()).isEqualTo(result) + verify { update.`as`(String::class.java) }