DATACASS-647 - Add non-nullable variant to ReactiveSelectOperation extensions.
Original pull request: #158.
This commit is contained in:
committed by
Mark Paluch
parent
021503677d
commit
9726b379e1
@@ -53,21 +53,39 @@ inline fun <reified T : Any> ReactiveSelectOperation.SelectWithProjection<*>.asT
|
||||
`as`(T::class.java)
|
||||
|
||||
/**
|
||||
* Coroutines variant of [ReactiveSelectOperation.TerminatingSelect.one].
|
||||
* Non-nullable Coroutines variant of [ReactiveSelectOperation.TerminatingSelect.one].
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend inline fun <reified T : Any> ReactiveSelectOperation.TerminatingSelect<T>.awaitOne(): T? =
|
||||
suspend inline fun <reified T : Any> ReactiveSelectOperation.TerminatingSelect<T>.awaitOne(): T =
|
||||
one().awaitSingle()
|
||||
|
||||
/**
|
||||
* Nullable Coroutines variant of [ReactiveSelectOperation.TerminatingSelect.one].
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend inline fun <reified T : Any> ReactiveSelectOperation.TerminatingSelect<T>.awaitOneOrNull(): T? =
|
||||
one().awaitFirstOrNull()
|
||||
|
||||
/**
|
||||
* Coroutines variant of [ReactiveSelectOperation.TerminatingSelect.first].
|
||||
* Non-nullable Coroutines variant of [ReactiveSelectOperation.TerminatingSelect.first].
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend inline fun <reified T : Any> ReactiveSelectOperation.TerminatingSelect<T>.awaitFirst(): T? =
|
||||
suspend inline fun <reified T : Any> ReactiveSelectOperation.TerminatingSelect<T>.awaitFirst(): T =
|
||||
first().awaitSingle()
|
||||
|
||||
/**
|
||||
* Nullable Coroutines variant of [ReactiveSelectOperation.TerminatingSelect.first].
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @since 2.2
|
||||
*/
|
||||
suspend inline fun <reified T : Any> ReactiveSelectOperation.TerminatingSelect<T>.awaitFirstOrNull(): T? =
|
||||
first().awaitFirstOrNull()
|
||||
|
||||
/**
|
||||
|
||||
@@ -65,7 +65,7 @@ class ReactiveSelectOperationExtensionsUnitTests {
|
||||
}
|
||||
|
||||
@Test // DATACASS-632
|
||||
fun terminatingFindAwaitOne() {
|
||||
fun terminatingFindAwaitOneWithValue() {
|
||||
|
||||
val find = mockk<ReactiveSelectOperation.TerminatingSelect<String>>()
|
||||
every { find.one() } returns Mono.just("foo")
|
||||
@@ -80,7 +80,52 @@ class ReactiveSelectOperationExtensionsUnitTests {
|
||||
}
|
||||
|
||||
@Test // DATACASS-632
|
||||
fun terminatingFindAwaitFirst() {
|
||||
fun terminatingFindAwaitOneWithNull() {
|
||||
|
||||
val find = mockk<ReactiveSelectOperation.TerminatingSelect<String>>()
|
||||
every { find.one() } returns Mono.empty()
|
||||
|
||||
Assertions.assertThatExceptionOfType(NoSuchElementException::class.java).isThrownBy {
|
||||
runBlocking { find.awaitOne() }
|
||||
}
|
||||
|
||||
verify {
|
||||
find.one()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATACASS-632
|
||||
fun terminatingFindAwaitOneOrNullWithValue() {
|
||||
|
||||
val find = mockk<ReactiveSelectOperation.TerminatingSelect<String>>()
|
||||
every { find.one() } returns Mono.just("foo")
|
||||
|
||||
runBlocking {
|
||||
Assertions.assertThat(find.awaitOneOrNull()).isEqualTo("foo")
|
||||
}
|
||||
|
||||
verify {
|
||||
find.one()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATACASS-632
|
||||
fun terminatingFindAwaitOneOrNullWithNull() {
|
||||
|
||||
val find = mockk<ReactiveSelectOperation.TerminatingSelect<String>>()
|
||||
every { find.one() } returns Mono.empty()
|
||||
|
||||
runBlocking {
|
||||
Assertions.assertThat(find.awaitOneOrNull()).isNull()
|
||||
}
|
||||
|
||||
verify {
|
||||
find.one()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATACASS-632
|
||||
fun terminatingFindAwaitFirstWithValue() {
|
||||
|
||||
val find = mockk<ReactiveSelectOperation.TerminatingSelect<String>>()
|
||||
every { find.first() } returns Mono.just("foo")
|
||||
@@ -94,6 +139,51 @@ class ReactiveSelectOperationExtensionsUnitTests {
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATACASS-632
|
||||
fun terminatingFindAwaitFirstWithNull() {
|
||||
|
||||
val find = mockk<ReactiveSelectOperation.TerminatingSelect<String>>()
|
||||
every { find.first() } returns Mono.empty()
|
||||
|
||||
Assertions.assertThatExceptionOfType(NoSuchElementException::class.java).isThrownBy {
|
||||
runBlocking { find.awaitFirst() }
|
||||
}
|
||||
|
||||
verify {
|
||||
find.first()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATACASS-632
|
||||
fun terminatingFindAwaitFirstOrNullWithValue() {
|
||||
|
||||
val find = mockk<ReactiveSelectOperation.TerminatingSelect<String>>()
|
||||
every { find.first() } returns Mono.just("foo")
|
||||
|
||||
runBlocking {
|
||||
Assertions.assertThat(find.awaitFirstOrNull()).isEqualTo("foo")
|
||||
}
|
||||
|
||||
verify {
|
||||
find.first()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATACASS-632
|
||||
fun terminatingFindAwaitFirstOrNullWithNull() {
|
||||
|
||||
val find = mockk<ReactiveSelectOperation.TerminatingSelect<String>>()
|
||||
every { find.first() } returns Mono.empty()
|
||||
|
||||
runBlocking {
|
||||
Assertions.assertThat(find.awaitFirstOrNull()).isNull()
|
||||
}
|
||||
|
||||
verify {
|
||||
find.first()
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATACASS-632
|
||||
fun terminatingFindAwaitCount() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user