DATAMONGO-2247 - Add non-nullable variants to Coroutines extensions.
Original pull request: #735.
This commit is contained in:
committed by
Mark Paluch
parent
10128d4d38
commit
84ead72680
@@ -77,21 +77,39 @@ inline fun <reified T : Any> ReactiveFindOperation.DistinctWithProjection.asType
|
||||
`as`(T::class.java)
|
||||
|
||||
/**
|
||||
* Coroutines variant of [ReactiveFindOperation.TerminatingFind.one].
|
||||
* Non-nullable Coroutines variant of [ReactiveFindOperation.TerminatingFind.one].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend inline fun <reified T : Any> ReactiveFindOperation.TerminatingFind<T>.awaitOne(): T? =
|
||||
suspend inline fun <reified T : Any> ReactiveFindOperation.TerminatingFind<T>.awaitOne(): T =
|
||||
one().awaitSingle()
|
||||
|
||||
/**
|
||||
* Nullable Coroutines variant of [ReactiveFindOperation.TerminatingFind.one].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend inline fun <reified T : Any> ReactiveFindOperation.TerminatingFind<T>.awaitOneOrNull(): T? =
|
||||
one().awaitFirstOrNull()
|
||||
|
||||
/**
|
||||
* Coroutines variant of [ReactiveFindOperation.TerminatingFind.first].
|
||||
* Non-nullable Coroutines variant of [ReactiveFindOperation.TerminatingFind.first].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend inline fun <reified T : Any> ReactiveFindOperation.TerminatingFind<T>.awaitFirst(): T? =
|
||||
suspend inline fun <reified T : Any> ReactiveFindOperation.TerminatingFind<T>.awaitFirst(): T =
|
||||
first().awaitSingle()
|
||||
|
||||
/**
|
||||
* Nullable Coroutines variant of [ReactiveFindOperation.TerminatingFind.first].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend inline fun <reified T : Any> ReactiveFindOperation.TerminatingFind<T>.awaitFirstOrNull(): T? =
|
||||
first().awaitFirstOrNull()
|
||||
|
||||
/**
|
||||
|
||||
@@ -40,22 +40,39 @@ inline fun <reified T : Any> ReactiveUpdateOperation.update(): ReactiveUpdateOpe
|
||||
update(T::class.java)
|
||||
|
||||
/**
|
||||
* Coroutines variant of [ReactiveUpdateOperation.TerminatingFindAndModify.findModifyAndAwait].
|
||||
* Non-nullable Coroutines variant of [ReactiveUpdateOperation.TerminatingFindAndModify.findModifyAndAwait].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend fun <T : Any> ReactiveUpdateOperation.TerminatingFindAndModify<T>.findModifyAndAwait(): T? =
|
||||
findAndModify().awaitFirstOrNull()
|
||||
|
||||
suspend fun <T : Any> ReactiveUpdateOperation.TerminatingFindAndModify<T>.findModifyAndAwait(): T =
|
||||
findAndModify().awaitSingle()
|
||||
|
||||
/**
|
||||
* Coroutines variant of [ReactiveUpdateOperation.TerminatingFindAndReplace.findAndReplace].
|
||||
* Nullable Coroutines variant of [ReactiveUpdateOperation.TerminatingFindAndModify.findModifyAndAwait].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend fun <T : Any> ReactiveUpdateOperation.TerminatingFindAndReplace<T>.findReplaceAndAwait(): T? =
|
||||
suspend fun <T : Any> ReactiveUpdateOperation.TerminatingFindAndModify<T>.findModifyAndAwaitOrNull(): T? =
|
||||
findAndModify().awaitFirstOrNull()
|
||||
|
||||
/**
|
||||
* Non-nullable Coroutines variant of [ReactiveUpdateOperation.TerminatingFindAndReplace.findAndReplace].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend fun <T : Any> ReactiveUpdateOperation.TerminatingFindAndReplace<T>.findReplaceAndAwait(): T =
|
||||
findAndReplace().awaitSingle()
|
||||
|
||||
/**
|
||||
* Nullable Coroutines variant of [ReactiveUpdateOperation.TerminatingFindAndReplace.findAndReplace].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend fun <T : Any> ReactiveUpdateOperation.TerminatingFindAndReplace<T>.findReplaceAndAwaitOrNull(): T? =
|
||||
findAndReplace().awaitFirstOrNull()
|
||||
|
||||
/**
|
||||
|
||||
@@ -21,7 +21,7 @@ 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.assertj.core.api.Assertions.assertThatExceptionOfType
|
||||
import org.junit.Test
|
||||
import reactor.core.publisher.Mono
|
||||
|
||||
@@ -80,7 +80,7 @@ class ReactiveFindOperationExtensionsTests {
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun terminatingFindAwaitOne() {
|
||||
fun terminatingFindAwaitOneWithValue() {
|
||||
|
||||
val find = mockk<ReactiveFindOperation.TerminatingFind<String>>()
|
||||
every { find.one() } returns Mono.just("foo")
|
||||
@@ -95,7 +95,52 @@ class ReactiveFindOperationExtensionsTests {
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun terminatingFindAwaitFirst() {
|
||||
fun terminatingFindAwaitOneWithNull() {
|
||||
|
||||
val find = mockk<ReactiveFindOperation.TerminatingFind<String>>()
|
||||
every { find.one() } returns Mono.empty()
|
||||
|
||||
assertThatExceptionOfType(NoSuchElementException::class.java).isThrownBy {
|
||||
runBlocking { find.awaitOne() }
|
||||
}
|
||||
|
||||
verify {
|
||||
find.one()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun terminatingFindAwaitOneOrNullWithValue() {
|
||||
|
||||
val find = mockk<ReactiveFindOperation.TerminatingFind<String>>()
|
||||
every { find.one() } returns Mono.just("foo")
|
||||
|
||||
runBlocking {
|
||||
assertThat(find.awaitOneOrNull()).isEqualTo("foo")
|
||||
}
|
||||
|
||||
verify {
|
||||
find.one()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun terminatingFindAwaitOneOrNullWithNull() {
|
||||
|
||||
val find = mockk<ReactiveFindOperation.TerminatingFind<String>>()
|
||||
every { find.one() } returns Mono.empty()
|
||||
|
||||
runBlocking {
|
||||
assertThat(find.awaitOneOrNull()).isNull()
|
||||
}
|
||||
|
||||
verify {
|
||||
find.one()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun terminatingFindAwaitFirstWithValue() {
|
||||
|
||||
val find = mockk<ReactiveFindOperation.TerminatingFind<String>>()
|
||||
every { find.first() } returns Mono.just("foo")
|
||||
@@ -109,6 +154,51 @@ class ReactiveFindOperationExtensionsTests {
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun terminatingFindAwaitFirstWithNull() {
|
||||
|
||||
val find = mockk<ReactiveFindOperation.TerminatingFind<String>>()
|
||||
every { find.first() } returns Mono.empty()
|
||||
|
||||
assertThatExceptionOfType(NoSuchElementException::class.java).isThrownBy {
|
||||
runBlocking { find.awaitFirst() }
|
||||
}
|
||||
|
||||
verify {
|
||||
find.first()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun terminatingFindAwaitFirstOrNullWithValue() {
|
||||
|
||||
val find = mockk<ReactiveFindOperation.TerminatingFind<String>>()
|
||||
every { find.first() } returns Mono.just("foo")
|
||||
|
||||
runBlocking {
|
||||
assertThat(find.awaitFirstOrNull()).isEqualTo("foo")
|
||||
}
|
||||
|
||||
verify {
|
||||
find.first()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun terminatingFindAwaitFirstOrNullWithNull() {
|
||||
|
||||
val find = mockk<ReactiveFindOperation.TerminatingFind<String>>()
|
||||
every { find.first() } returns Mono.empty()
|
||||
|
||||
runBlocking {
|
||||
assertThat(find.awaitFirstOrNull()).isNull()
|
||||
}
|
||||
|
||||
verify {
|
||||
find.first()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun terminatingFindAwaitCount() {
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.assertj.core.api.Assertions.assertThatExceptionOfType
|
||||
import org.junit.Test
|
||||
import reactor.core.publisher.Mono
|
||||
|
||||
@@ -50,7 +51,7 @@ class ReactiveUpdateOperationExtensionsTests {
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun findModifyAndAwait() {
|
||||
fun findModifyAndAwaitWithValue() {
|
||||
|
||||
val find = mockk<ReactiveUpdateOperation.TerminatingFindAndModify<String>>()
|
||||
every { find.findAndModify() } returns Mono.just("foo")
|
||||
@@ -65,7 +66,52 @@ class ReactiveUpdateOperationExtensionsTests {
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun findReplaceAndAwait() {
|
||||
fun findModifyAndAwaitWithNull() {
|
||||
|
||||
val find = mockk<ReactiveUpdateOperation.TerminatingFindAndModify<String>>()
|
||||
every { find.findAndModify() } returns Mono.empty()
|
||||
|
||||
assertThatExceptionOfType(NoSuchElementException::class.java).isThrownBy {
|
||||
runBlocking { find.findModifyAndAwait() }
|
||||
}
|
||||
|
||||
verify {
|
||||
find.findAndModify()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun findModifyAndAwaitOrNullWithValue() {
|
||||
|
||||
val find = mockk<ReactiveUpdateOperation.TerminatingFindAndModify<String>>()
|
||||
every { find.findAndModify() } returns Mono.just("foo")
|
||||
|
||||
runBlocking {
|
||||
assertThat(find.findModifyAndAwaitOrNull()).isEqualTo("foo")
|
||||
}
|
||||
|
||||
verify {
|
||||
find.findAndModify()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun findModifyAndAwaitOrNullWithNull() {
|
||||
|
||||
val find = mockk<ReactiveUpdateOperation.TerminatingFindAndModify<String>>()
|
||||
every { find.findAndModify() } returns Mono.empty()
|
||||
|
||||
runBlocking {
|
||||
assertThat(find.findModifyAndAwaitOrNull()).isNull()
|
||||
}
|
||||
|
||||
verify {
|
||||
find.findAndModify()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun findReplaceAndAwaitWithValue() {
|
||||
|
||||
val find = mockk<ReactiveUpdateOperation.TerminatingFindAndReplace<String>>()
|
||||
every { find.findAndReplace() } returns Mono.just("foo")
|
||||
@@ -79,6 +125,51 @@ class ReactiveUpdateOperationExtensionsTests {
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun findReplaceAndAwaitWithNull() {
|
||||
|
||||
val find = mockk<ReactiveUpdateOperation.TerminatingFindAndReplace<String>>()
|
||||
every { find.findAndReplace() } returns Mono.empty()
|
||||
|
||||
assertThatExceptionOfType(NoSuchElementException::class.java).isThrownBy {
|
||||
runBlocking { find.findReplaceAndAwait() }
|
||||
}
|
||||
|
||||
verify {
|
||||
find.findAndReplace()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun findReplaceAndAwaitOrNullWithValue() {
|
||||
|
||||
val find = mockk<ReactiveUpdateOperation.TerminatingFindAndReplace<String>>()
|
||||
every { find.findAndReplace() } returns Mono.just("foo")
|
||||
|
||||
runBlocking {
|
||||
assertThat(find.findReplaceAndAwaitOrNull()).isEqualTo("foo")
|
||||
}
|
||||
|
||||
verify {
|
||||
find.findAndReplace()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun findReplaceAndAwaitOrNullWithNull() {
|
||||
|
||||
val find = mockk<ReactiveUpdateOperation.TerminatingFindAndReplace<String>>()
|
||||
every { find.findAndReplace() } returns Mono.empty()
|
||||
|
||||
runBlocking {
|
||||
assertThat(find.findReplaceAndAwaitOrNull()).isNull()
|
||||
}
|
||||
|
||||
verify {
|
||||
find.findAndReplace()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2209
|
||||
fun allAndAwait() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user