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)
}