From 9669f32463f98a8ed75b1d58b6f133a8de3bf6cd Mon Sep 17 00:00:00 2001 From: Arkadii Ivanov Date: Sun, 9 Aug 2020 16:53:02 +0300 Subject: [PATCH] Add Single.asPromise() extension --- .../com/badoo/reaktive/single/AsPromise.kt | 8 +++++ .../badoo/reaktive/single/AsPromiseTest.kt | 30 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 reaktive/src/jsMain/kotlin/com/badoo/reaktive/single/AsPromise.kt create mode 100644 reaktive/src/jsTest/kotlin/com/badoo/reaktive/single/AsPromiseTest.kt diff --git a/reaktive/src/jsMain/kotlin/com/badoo/reaktive/single/AsPromise.kt b/reaktive/src/jsMain/kotlin/com/badoo/reaktive/single/AsPromise.kt new file mode 100644 index 000000000..b64751aad --- /dev/null +++ b/reaktive/src/jsMain/kotlin/com/badoo/reaktive/single/AsPromise.kt @@ -0,0 +1,8 @@ +package com.badoo.reaktive.single + +import kotlin.js.Promise + +fun Single.asPromise(): Promise = + Promise { resolve, reject -> + subscribe(onSuccess = resolve, onError = reject) + } diff --git a/reaktive/src/jsTest/kotlin/com/badoo/reaktive/single/AsPromiseTest.kt b/reaktive/src/jsTest/kotlin/com/badoo/reaktive/single/AsPromiseTest.kt new file mode 100644 index 000000000..a8ac06a24 --- /dev/null +++ b/reaktive/src/jsTest/kotlin/com/badoo/reaktive/single/AsPromiseTest.kt @@ -0,0 +1,30 @@ +package com.badoo.reaktive.single + +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertSame + +class AsPromiseTest { + + @Test + fun resolves_non_null_value(): dynamic = + singleOf(1) + .asPromise() + .then { assertEquals(1, it) } + + @Test + fun resolves_null_value(): dynamic = + singleOf(null) + .asPromise() + .then { assertEquals(null, it) } + + @Test + fun rejects(): dynamic { + val error = Exception() + + return singleOfError(error) + .asPromise() + .catch { it } + .then { assertSame(error, it) } + } +}