package com.freshworks.freshdesk.reactnative import com.facebook.react.bridge.Promise import com.facebook.react.bridge.WritableMap /** * A [Promise] that just records the single resolve/reject call it received, for * asserting against in JVM unit tests. `com.facebook.react:react-native` is on the * test classpath (it's already an `implementation` dependency of this module), but * its Android-framework-backed classes are not usable outside Robolectric — `Promise` * is a plain interface, so a fake implementation needs neither. */ internal class FakePromise : Promise { var resolvedValue: Any? = null private set var resolved: Boolean = false private set var rejectedCode: String? = null private set var rejectedMessage: String? = null private set var rejected: Boolean = false private set override fun resolve(value: Any?) { resolved = true resolvedValue = value } override fun reject(code: String, message: String) = record(code, message) override fun reject(code: String, throwable: Throwable) = record(code, throwable.message) override fun reject(code: String, message: String, throwable: Throwable) = record(code, message) override fun reject(throwable: Throwable) = record(null, throwable.message) override fun reject(throwable: Throwable, userInfo: WritableMap) = record(null, throwable.message) override fun reject(code: String, userInfo: WritableMap) = record(code, null) override fun reject(code: String, throwable: Throwable, userInfo: WritableMap) = record(code, throwable.message) override fun reject(code: String, message: String, userInfo: WritableMap) = record(code, message) override fun reject(code: String, message: String, throwable: Throwable, userInfo: WritableMap) = record(code, message) override fun reject(message: String) = record(null, message) private fun record(code: String?, message: String?) { rejected = true rejectedCode = code rejectedMessage = message } }