@klarna/react-native-klarna-network-payment 0.0.1 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +143 -29
- package/android/build.gradle +95 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaNetworkPaymentButtonViewSpec.kt +22 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaNetworkPaymentModule.kt +46 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaNetworkPaymentModuleImpl.kt +163 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaNetworkPaymentPackage.kt +30 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentButtonPressEvent.kt +19 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentButtonViewManager.kt +276 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentPresentationMapper.kt +132 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentRequestMapper.kt +328 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentResponseMapper.kt +145 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaNetworkPaymentModuleImplTest.kt +361 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentButtonViewManagerTest.kt +155 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentPresentationMapperTest.kt +447 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentRequestMapperTest.kt +489 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentResponseMapperTest.kt +456 -0
- package/ios/Sources/KlarnaNetworkPayment.h +5 -0
- package/ios/Sources/KlarnaNetworkPayment.mm +110 -0
- package/ios/Sources/KlarnaNetworkPaymentModuleImpl.swift +196 -0
- package/ios/Sources/KlarnaPaymentButtonComponentView.mm +147 -0
- package/ios/Sources/KlarnaPaymentButtonViewImpl.swift +77 -0
- package/ios/Sources/KlarnaPaymentPresentationMapping.swift +102 -0
- package/ios/Sources/KlarnaPaymentRequestDataMapping.swift +232 -0
- package/ios/Sources/KlarnaPaymentRequestMapping.swift +103 -0
- package/ios/Tests/KlarnaNetworkPaymentModuleImplTests.swift +143 -0
- package/ios/Tests/KlarnaPaymentButtonViewImplTests.swift +122 -0
- package/ios/Tests/KlarnaPaymentPresentationMappingTests.swift +335 -0
- package/lib/commonjs/KlarnaNetworkPayment.js +6 -0
- package/lib/commonjs/KlarnaNetworkPayment.js.map +1 -0
- package/lib/commonjs/KlarnaNetworkPaymentImpl.js +44 -0
- package/lib/commonjs/KlarnaNetworkPaymentImpl.js.map +1 -0
- package/lib/commonjs/KlarnaNetworkPaymentMapper.js +164 -0
- package/lib/commonjs/KlarnaNetworkPaymentMapper.js.map +1 -0
- package/lib/commonjs/KlarnaPaymentButton.js +43 -0
- package/lib/commonjs/KlarnaPaymentButton.js.map +1 -0
- package/lib/commonjs/Specs/KlarnaPaymentButtonNativeComponent.js +10 -0
- package/lib/commonjs/Specs/KlarnaPaymentButtonNativeComponent.js.map +1 -0
- package/lib/commonjs/Specs/NativeKlarnaNetworkPayment.js +13 -0
- package/lib/commonjs/Specs/NativeKlarnaNetworkPayment.js.map +1 -0
- package/lib/commonjs/index.js +51 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/types/KlarnaPaymentRequest.js +6 -0
- package/lib/commonjs/types/KlarnaPaymentRequest.js.map +1 -0
- package/lib/commonjs/types/KlarnaPaymentRequestState.js +2 -0
- package/lib/commonjs/types/KlarnaPaymentRequestState.js.map +1 -0
- package/lib/commonjs/types/KlarnaPaymentRequestStateContext.js +6 -0
- package/lib/commonjs/types/KlarnaPaymentRequestStateContext.js.map +1 -0
- package/lib/commonjs/types/KlarnaPaymentRequestStateReason.js +2 -0
- package/lib/commonjs/types/KlarnaPaymentRequestStateReason.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaBillingPlan.js +6 -0
- package/lib/commonjs/types/models/KlarnaBillingPlan.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaCollectCustomerProfileType.js +2 -0
- package/lib/commonjs/types/models/KlarnaCollectCustomerProfileType.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaCustomer.js +6 -0
- package/lib/commonjs/types/models/KlarnaCustomer.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaFreeTrial.js +2 -0
- package/lib/commonjs/types/models/KlarnaFreeTrial.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaInterval.js +2 -0
- package/lib/commonjs/types/models/KlarnaInterval.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaLineItem.js +2 -0
- package/lib/commonjs/types/models/KlarnaLineItem.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaOndemandService.js +6 -0
- package/lib/commonjs/types/models/KlarnaOndemandService.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaPartnerCustomer.js +6 -0
- package/lib/commonjs/types/models/KlarnaPartnerCustomer.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaPaymentPresentation.js +6 -0
- package/lib/commonjs/types/models/KlarnaPaymentPresentation.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaPaymentRequestData.js +6 -0
- package/lib/commonjs/types/models/KlarnaPaymentRequestData.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaRequestCustomerToken.js +6 -0
- package/lib/commonjs/types/models/KlarnaRequestCustomerToken.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaRequestCustomerTokenScope.js +2 -0
- package/lib/commonjs/types/models/KlarnaRequestCustomerTokenScope.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShipping.js +6 -0
- package/lib/commonjs/types/models/KlarnaShipping.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingConfig.js +6 -0
- package/lib/commonjs/types/models/KlarnaShippingConfig.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingConfigMode.js +2 -0
- package/lib/commonjs/types/models/KlarnaShippingConfigMode.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingOption.js +6 -0
- package/lib/commonjs/types/models/KlarnaShippingOption.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingRecipient.js +2 -0
- package/lib/commonjs/types/models/KlarnaShippingRecipient.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingType.js +2 -0
- package/lib/commonjs/types/models/KlarnaShippingType.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingTypeAttribute.js +2 -0
- package/lib/commonjs/types/models/KlarnaShippingTypeAttribute.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaSubscription.js +6 -0
- package/lib/commonjs/types/models/KlarnaSubscription.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaSupplementaryPurchaseData.js +6 -0
- package/lib/commonjs/types/models/KlarnaSupplementaryPurchaseData.js.map +1 -0
- package/lib/commonjs/types/models/index.js +2 -0
- package/lib/commonjs/types/models/index.js.map +1 -0
- package/lib/module/KlarnaNetworkPayment.js +2 -0
- package/lib/module/KlarnaNetworkPayment.js.map +1 -0
- package/lib/module/KlarnaNetworkPaymentImpl.js +36 -0
- package/lib/module/KlarnaNetworkPaymentImpl.js.map +1 -0
- package/lib/module/KlarnaNetworkPaymentMapper.js +146 -0
- package/lib/module/KlarnaNetworkPaymentMapper.js.map +1 -0
- package/lib/module/KlarnaPaymentButton.js +37 -0
- package/lib/module/KlarnaPaymentButton.js.map +1 -0
- package/lib/module/Specs/KlarnaPaymentButtonNativeComponent.js +3 -0
- package/lib/module/Specs/KlarnaPaymentButtonNativeComponent.js.map +1 -0
- package/lib/module/Specs/NativeKlarnaNetworkPayment.js +9 -0
- package/lib/module/Specs/NativeKlarnaNetworkPayment.js.map +1 -0
- package/lib/module/index.js +40 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/types/KlarnaPaymentRequest.js +2 -0
- package/lib/module/types/KlarnaPaymentRequest.js.map +1 -0
- package/lib/module/types/KlarnaPaymentRequestState.js +2 -0
- package/lib/module/types/KlarnaPaymentRequestState.js.map +1 -0
- package/lib/module/types/KlarnaPaymentRequestStateContext.js +2 -0
- package/lib/module/types/KlarnaPaymentRequestStateContext.js.map +1 -0
- package/lib/module/types/KlarnaPaymentRequestStateReason.js +2 -0
- package/lib/module/types/KlarnaPaymentRequestStateReason.js.map +1 -0
- package/lib/module/types/models/KlarnaBillingPlan.js +2 -0
- package/lib/module/types/models/KlarnaBillingPlan.js.map +1 -0
- package/lib/module/types/models/KlarnaCollectCustomerProfileType.js +2 -0
- package/lib/module/types/models/KlarnaCollectCustomerProfileType.js.map +1 -0
- package/lib/module/types/models/KlarnaCustomer.js +2 -0
- package/lib/module/types/models/KlarnaCustomer.js.map +1 -0
- package/lib/module/types/models/KlarnaFreeTrial.js +2 -0
- package/lib/module/types/models/KlarnaFreeTrial.js.map +1 -0
- package/lib/module/types/models/KlarnaInterval.js +2 -0
- package/lib/module/types/models/KlarnaInterval.js.map +1 -0
- package/lib/module/types/models/KlarnaLineItem.js +2 -0
- package/lib/module/types/models/KlarnaLineItem.js.map +1 -0
- package/lib/module/types/models/KlarnaOndemandService.js +2 -0
- package/lib/module/types/models/KlarnaOndemandService.js.map +1 -0
- package/lib/module/types/models/KlarnaPartnerCustomer.js +2 -0
- package/lib/module/types/models/KlarnaPartnerCustomer.js.map +1 -0
- package/lib/module/types/models/KlarnaPaymentPresentation.js +2 -0
- package/lib/module/types/models/KlarnaPaymentPresentation.js.map +1 -0
- package/lib/module/types/models/KlarnaPaymentRequestData.js +2 -0
- package/lib/module/types/models/KlarnaPaymentRequestData.js.map +1 -0
- package/lib/module/types/models/KlarnaRequestCustomerToken.js +2 -0
- package/lib/module/types/models/KlarnaRequestCustomerToken.js.map +1 -0
- package/lib/module/types/models/KlarnaRequestCustomerTokenScope.js +2 -0
- package/lib/module/types/models/KlarnaRequestCustomerTokenScope.js.map +1 -0
- package/lib/module/types/models/KlarnaShipping.js +2 -0
- package/lib/module/types/models/KlarnaShipping.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingConfig.js +2 -0
- package/lib/module/types/models/KlarnaShippingConfig.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingConfigMode.js +2 -0
- package/lib/module/types/models/KlarnaShippingConfigMode.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingOption.js +2 -0
- package/lib/module/types/models/KlarnaShippingOption.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingRecipient.js +2 -0
- package/lib/module/types/models/KlarnaShippingRecipient.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingType.js +2 -0
- package/lib/module/types/models/KlarnaShippingType.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingTypeAttribute.js +2 -0
- package/lib/module/types/models/KlarnaShippingTypeAttribute.js.map +1 -0
- package/lib/module/types/models/KlarnaSubscription.js +2 -0
- package/lib/module/types/models/KlarnaSubscription.js.map +1 -0
- package/lib/module/types/models/KlarnaSupplementaryPurchaseData.js +2 -0
- package/lib/module/types/models/KlarnaSupplementaryPurchaseData.js.map +1 -0
- package/lib/module/types/models/index.js +2 -0
- package/lib/module/types/models/index.js.map +1 -0
- package/lib/typescript/KlarnaNetworkPayment.d.ts +22 -0
- package/lib/typescript/KlarnaNetworkPayment.d.ts.map +1 -0
- package/lib/typescript/KlarnaNetworkPaymentImpl.d.ts +12 -0
- package/lib/typescript/KlarnaNetworkPaymentImpl.d.ts.map +1 -0
- package/lib/typescript/KlarnaNetworkPaymentMapper.d.ts +273 -0
- package/lib/typescript/KlarnaNetworkPaymentMapper.d.ts.map +1 -0
- package/lib/typescript/KlarnaPaymentButton.d.ts +51 -0
- package/lib/typescript/KlarnaPaymentButton.d.ts.map +1 -0
- package/lib/typescript/Specs/KlarnaPaymentButtonNativeComponent.d.ts +16 -0
- package/lib/typescript/Specs/KlarnaPaymentButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/Specs/NativeKlarnaNetworkPayment.d.ts +13 -0
- package/lib/typescript/Specs/NativeKlarnaNetworkPayment.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +14 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/types/KlarnaPaymentRequest.d.ts +19 -0
- package/lib/typescript/types/KlarnaPaymentRequest.d.ts.map +1 -0
- package/lib/typescript/types/KlarnaPaymentRequestState.d.ts +15 -0
- package/lib/typescript/types/KlarnaPaymentRequestState.d.ts.map +1 -0
- package/lib/typescript/types/KlarnaPaymentRequestStateContext.d.ts +12 -0
- package/lib/typescript/types/KlarnaPaymentRequestStateContext.d.ts.map +1 -0
- package/lib/typescript/types/KlarnaPaymentRequestStateReason.d.ts +13 -0
- package/lib/typescript/types/KlarnaPaymentRequestStateReason.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaBillingPlan.d.ts +17 -0
- package/lib/typescript/types/models/KlarnaBillingPlan.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaCollectCustomerProfileType.d.ts +19 -0
- package/lib/typescript/types/models/KlarnaCollectCustomerProfileType.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaCustomer.d.ts +11 -0
- package/lib/typescript/types/models/KlarnaCustomer.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaFreeTrial.d.ts +7 -0
- package/lib/typescript/types/models/KlarnaFreeTrial.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaInterval.d.ts +11 -0
- package/lib/typescript/types/models/KlarnaInterval.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaLineItem.d.ts +28 -0
- package/lib/typescript/types/models/KlarnaLineItem.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaOndemandService.d.ts +17 -0
- package/lib/typescript/types/models/KlarnaOndemandService.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaPartnerCustomer.d.ts +15 -0
- package/lib/typescript/types/models/KlarnaPartnerCustomer.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaPaymentPresentation.d.ts +119 -0
- package/lib/typescript/types/models/KlarnaPaymentPresentation.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaPaymentRequestData.d.ts +24 -0
- package/lib/typescript/types/models/KlarnaPaymentRequestData.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaRequestCustomerToken.d.ts +9 -0
- package/lib/typescript/types/models/KlarnaRequestCustomerToken.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaRequestCustomerTokenScope.d.ts +9 -0
- package/lib/typescript/types/models/KlarnaRequestCustomerTokenScope.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShipping.d.ts +15 -0
- package/lib/typescript/types/models/KlarnaShipping.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingConfig.d.ts +9 -0
- package/lib/typescript/types/models/KlarnaShippingConfig.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingConfigMode.d.ts +5 -0
- package/lib/typescript/types/models/KlarnaShippingConfigMode.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingOption.d.ts +12 -0
- package/lib/typescript/types/models/KlarnaShippingOption.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingRecipient.d.ts +14 -0
- package/lib/typescript/types/models/KlarnaShippingRecipient.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingType.d.ts +25 -0
- package/lib/typescript/types/models/KlarnaShippingType.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingTypeAttribute.d.ts +21 -0
- package/lib/typescript/types/models/KlarnaShippingTypeAttribute.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaSubscription.d.ts +14 -0
- package/lib/typescript/types/models/KlarnaSubscription.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaSupplementaryPurchaseData.d.ts +21 -0
- package/lib/typescript/types/models/KlarnaSupplementaryPurchaseData.d.ts.map +1 -0
- package/lib/typescript/types/models/index.d.ts +22 -0
- package/lib/typescript/types/models/index.d.ts.map +1 -0
- package/package.json +120 -6
- package/react-native-klarna-network-payment.podspec +28 -0
- package/src/KlarnaNetworkPayment.ts +30 -0
- package/src/KlarnaNetworkPaymentImpl.ts +79 -0
- package/src/KlarnaNetworkPaymentMapper.ts +204 -0
- package/src/KlarnaPaymentButton.tsx +80 -0
- package/src/Specs/KlarnaPaymentButtonNativeComponent.ts +22 -0
- package/src/Specs/NativeKlarnaNetworkPayment.ts +17 -0
- package/src/index.tsx +63 -0
- package/src/types/KlarnaPaymentRequest.ts +19 -0
- package/src/types/KlarnaPaymentRequestState.ts +14 -0
- package/src/types/KlarnaPaymentRequestStateContext.ts +12 -0
- package/src/types/KlarnaPaymentRequestStateReason.ts +12 -0
- package/src/types/models/KlarnaBillingPlan.ts +17 -0
- package/src/types/models/KlarnaCollectCustomerProfileType.ts +18 -0
- package/src/types/models/KlarnaCustomer.ts +11 -0
- package/src/types/models/KlarnaFreeTrial.ts +6 -0
- package/src/types/models/KlarnaInterval.ts +10 -0
- package/src/types/models/KlarnaLineItem.ts +27 -0
- package/src/types/models/KlarnaOndemandService.ts +17 -0
- package/src/types/models/KlarnaPartnerCustomer.ts +15 -0
- package/src/types/models/KlarnaPaymentPresentation.ts +135 -0
- package/src/types/models/KlarnaPaymentRequestData.ts +24 -0
- package/src/types/models/KlarnaRequestCustomerToken.ts +9 -0
- package/src/types/models/KlarnaRequestCustomerTokenScope.ts +8 -0
- package/src/types/models/KlarnaShipping.ts +15 -0
- package/src/types/models/KlarnaShippingConfig.ts +9 -0
- package/src/types/models/KlarnaShippingConfigMode.ts +4 -0
- package/src/types/models/KlarnaShippingOption.ts +12 -0
- package/src/types/models/KlarnaShippingRecipient.ts +13 -0
- package/src/types/models/KlarnaShippingType.ts +24 -0
- package/src/types/models/KlarnaShippingTypeAttribute.ts +20 -0
- package/src/types/models/KlarnaSubscription.ts +14 -0
- package/src/types/models/KlarnaSupplementaryPurchaseData.ts +21 -0
- package/src/types/models/index.ts +35 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
package com.klarna.mobile.sdk.reactnative.klarnanetwork.payment
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.WritableArray
|
|
5
|
+
import com.facebook.react.bridge.WritableMap
|
|
6
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationContent
|
|
7
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationIcon
|
|
8
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationImageAlignment
|
|
9
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationInstruction
|
|
10
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationPaymentButton
|
|
11
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationPaymentOption
|
|
12
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationText
|
|
13
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationTextPart
|
|
14
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationTextPartLinkContext
|
|
15
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationTextPartStyle
|
|
16
|
+
import io.mockk.every
|
|
17
|
+
import io.mockk.mockk
|
|
18
|
+
import io.mockk.mockkStatic
|
|
19
|
+
import io.mockk.unmockkAll
|
|
20
|
+
import io.mockk.verify
|
|
21
|
+
import org.junit.After
|
|
22
|
+
import org.junit.Before
|
|
23
|
+
import org.junit.Test
|
|
24
|
+
|
|
25
|
+
class KlarnaPaymentPresentationMapperTest {
|
|
26
|
+
|
|
27
|
+
private lateinit var writableMap: WritableMap
|
|
28
|
+
private lateinit var writableArray: WritableArray
|
|
29
|
+
|
|
30
|
+
@Before
|
|
31
|
+
fun setUp() {
|
|
32
|
+
mockkStatic(Arguments::class)
|
|
33
|
+
writableMap = mockk(relaxed = true)
|
|
34
|
+
writableArray = mockk(relaxed = true)
|
|
35
|
+
every { Arguments.createMap() } returns writableMap
|
|
36
|
+
every { Arguments.createArray() } returns writableArray
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@After
|
|
40
|
+
fun tearDown() {
|
|
41
|
+
unmockkAll()
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// region Helpers
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Stubs Arguments.createMap() to return [maps] in order: first call returns maps[0],
|
|
48
|
+
* second returns maps[1], etc. After all maps are consumed the last one is reused.
|
|
49
|
+
* Use this when the SUT calls createMap() multiple times in a single toWritableMap() call.
|
|
50
|
+
*/
|
|
51
|
+
private fun givenCreateMapReturnsInOrder(vararg maps: WritableMap) {
|
|
52
|
+
every { Arguments.createMap() } returnsMany maps.toList()
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// endregion
|
|
56
|
+
|
|
57
|
+
// region KlarnaPaymentPresentationText.toWritableMap tests
|
|
58
|
+
|
|
59
|
+
@Test
|
|
60
|
+
fun `KlarnaPaymentPresentationText PlainText toWritableMap - sets type to plainText and text`() {
|
|
61
|
+
// Given
|
|
62
|
+
val plainText = mockk<KlarnaPaymentPresentationText.PlainText> {
|
|
63
|
+
every { text } returns "Hello World"
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// When
|
|
67
|
+
plainText.toWritableMap()
|
|
68
|
+
|
|
69
|
+
// Then
|
|
70
|
+
verify(exactly = 1) { writableMap.putString("type", "plainText") }
|
|
71
|
+
verify(exactly = 1) { writableMap.putString("text", "Hello World") }
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@Test
|
|
75
|
+
fun `KlarnaPaymentPresentationText AttributedText toWritableMap - sets type to attributedText and parts array`() {
|
|
76
|
+
// Given
|
|
77
|
+
val outerMap = mockk<WritableMap>(relaxed = true)
|
|
78
|
+
val partMap = mockk<WritableMap>(relaxed = true)
|
|
79
|
+
givenCreateMapReturnsInOrder(outerMap, partMap)
|
|
80
|
+
|
|
81
|
+
val part = mockk<KlarnaPaymentPresentationTextPart.PlainText> {
|
|
82
|
+
every { text } returns "part text"
|
|
83
|
+
every { styles } returns null
|
|
84
|
+
}
|
|
85
|
+
val attributedText = mockk<KlarnaPaymentPresentationText.AttributedText> {
|
|
86
|
+
every { parts } returns listOf(part)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// When
|
|
90
|
+
attributedText.toWritableMap()
|
|
91
|
+
|
|
92
|
+
// Then
|
|
93
|
+
verify(exactly = 1) { outerMap.putString("type", "attributedText") }
|
|
94
|
+
verify(exactly = 1) { writableArray.pushMap(partMap) }
|
|
95
|
+
verify(exactly = 1) { outerMap.putArray("parts", writableArray) }
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
@Test
|
|
99
|
+
fun `KlarnaPaymentPresentationText AttributedText toWritableMap - puts null parts when absent`() {
|
|
100
|
+
// Given
|
|
101
|
+
val attributedText = mockk<KlarnaPaymentPresentationText.AttributedText> {
|
|
102
|
+
every { parts } returns null
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// When
|
|
106
|
+
attributedText.toWritableMap()
|
|
107
|
+
|
|
108
|
+
// Then
|
|
109
|
+
verify(exactly = 1) { writableMap.putString("type", "attributedText") }
|
|
110
|
+
verify(exactly = 1) { writableMap.putNull("parts") }
|
|
111
|
+
verify(exactly = 0) { writableMap.putArray(eq("parts"), any()) }
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// endregion
|
|
115
|
+
|
|
116
|
+
// region KlarnaPaymentPresentationTextPart.toWritableMap tests
|
|
117
|
+
|
|
118
|
+
@Test
|
|
119
|
+
fun `KlarnaPaymentPresentationTextPart PlainText toWritableMap - sets type to plain and text`() {
|
|
120
|
+
// Given
|
|
121
|
+
val part = mockk<KlarnaPaymentPresentationTextPart.PlainText> {
|
|
122
|
+
every { text } returns "plain content"
|
|
123
|
+
every { styles } returns null
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// When
|
|
127
|
+
part.toWritableMap()
|
|
128
|
+
|
|
129
|
+
// Then
|
|
130
|
+
verify(exactly = 1) { writableMap.putString("type", "plain") }
|
|
131
|
+
verify(exactly = 1) { writableMap.putString("text", "plain content") }
|
|
132
|
+
verify(exactly = 1) { writableMap.putNull("styles") }
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@Test
|
|
136
|
+
fun `KlarnaPaymentPresentationTextPart Link toWritableMap - sets type to link with url and context`() {
|
|
137
|
+
// Given
|
|
138
|
+
val part = mockk<KlarnaPaymentPresentationTextPart.Link> {
|
|
139
|
+
every { text } returns "Click here"
|
|
140
|
+
every { url } returns "https://klarna.com"
|
|
141
|
+
every { context } returns KlarnaPaymentPresentationTextPartLinkContext.INFO
|
|
142
|
+
every { styles } returns null
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// When
|
|
146
|
+
part.toWritableMap()
|
|
147
|
+
|
|
148
|
+
// Then
|
|
149
|
+
verify(exactly = 1) { writableMap.putString("type", "link") }
|
|
150
|
+
verify(exactly = 1) { writableMap.putString("text", "Click here") }
|
|
151
|
+
verify(exactly = 1) { writableMap.putString("url", "https://klarna.com") }
|
|
152
|
+
verify(exactly = 1) {
|
|
153
|
+
writableMap.putString("context", KlarnaPaymentPresentationTextPartLinkContext.INFO.toString())
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
@Test
|
|
158
|
+
fun `KlarnaPaymentPresentationTextPart PlainText toWritableMap - puts styles array when present`() {
|
|
159
|
+
// Given
|
|
160
|
+
val boldStyle = KlarnaPaymentPresentationTextPartStyle.BOLD
|
|
161
|
+
val part = mockk<KlarnaPaymentPresentationTextPart.PlainText> {
|
|
162
|
+
every { text } returns "bold text"
|
|
163
|
+
every { styles } returns listOf(boldStyle)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// When
|
|
167
|
+
part.toWritableMap()
|
|
168
|
+
|
|
169
|
+
// Then
|
|
170
|
+
verify(exactly = 1) { writableArray.pushString(boldStyle.toString()) }
|
|
171
|
+
verify(exactly = 1) { writableMap.putArray("styles", writableArray) }
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// endregion
|
|
175
|
+
|
|
176
|
+
// region KlarnaPaymentPresentationContent.toWritableMap tests
|
|
177
|
+
|
|
178
|
+
@Test
|
|
179
|
+
fun `KlarnaPaymentPresentationContent toWritableMap - puts paymentOption as map when present`() {
|
|
180
|
+
// Given
|
|
181
|
+
val contentMap = mockk<WritableMap>(relaxed = true)
|
|
182
|
+
val optionMap = mockk<WritableMap>(relaxed = true)
|
|
183
|
+
givenCreateMapReturnsInOrder(contentMap, optionMap)
|
|
184
|
+
|
|
185
|
+
val paymentOption = mockk<KlarnaPaymentPresentationPaymentOption>(relaxed = true) {
|
|
186
|
+
every { paymentOptionId } returns "opt_1"
|
|
187
|
+
}
|
|
188
|
+
val content = mockk<KlarnaPaymentPresentationContent> {
|
|
189
|
+
every { instruction } returns KlarnaPaymentPresentationInstruction.SHOW_KLARNA
|
|
190
|
+
every { paymentStatus } returns null
|
|
191
|
+
every { this@mockk.paymentOption } returns paymentOption
|
|
192
|
+
every { savedPaymentOption } returns null
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// When
|
|
196
|
+
content.toWritableMap()
|
|
197
|
+
|
|
198
|
+
// Then
|
|
199
|
+
verify(exactly = 1) { contentMap.putMap("paymentOption", optionMap) }
|
|
200
|
+
verify(exactly = 0) { contentMap.putNull("paymentOption") }
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
@Test
|
|
204
|
+
fun `KlarnaPaymentPresentationContent toWritableMap - puts null paymentOption when absent`() {
|
|
205
|
+
// Given
|
|
206
|
+
val content = mockk<KlarnaPaymentPresentationContent> {
|
|
207
|
+
every { instruction } returns KlarnaPaymentPresentationInstruction.PRESELECT_KLARNA
|
|
208
|
+
every { paymentStatus } returns null
|
|
209
|
+
every { paymentOption } returns null
|
|
210
|
+
every { savedPaymentOption } returns null
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// When
|
|
214
|
+
content.toWritableMap()
|
|
215
|
+
|
|
216
|
+
// Then
|
|
217
|
+
verify(exactly = 1) { writableMap.putNull("paymentOption") }
|
|
218
|
+
verify(exactly = 0) { writableMap.putMap(eq("paymentOption"), any()) }
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
@Test
|
|
222
|
+
fun `KlarnaPaymentPresentationContent toWritableMap - puts instruction string`() {
|
|
223
|
+
// Given
|
|
224
|
+
val content = mockk<KlarnaPaymentPresentationContent> {
|
|
225
|
+
every { instruction } returns KlarnaPaymentPresentationInstruction.SHOW_ONLY_KLARNA
|
|
226
|
+
every { paymentStatus } returns null
|
|
227
|
+
every { paymentOption } returns null
|
|
228
|
+
every { savedPaymentOption } returns null
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// When
|
|
232
|
+
content.toWritableMap()
|
|
233
|
+
|
|
234
|
+
// Then
|
|
235
|
+
verify(exactly = 1) {
|
|
236
|
+
writableMap.putString("instruction", KlarnaPaymentPresentationInstruction.SHOW_ONLY_KLARNA.toString())
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// endregion
|
|
241
|
+
|
|
242
|
+
// region KlarnaPaymentPresentationPaymentButton.toWritableMap tests
|
|
243
|
+
|
|
244
|
+
@Test
|
|
245
|
+
fun `KlarnaPaymentPresentationPaymentButton toWritableMap - puts all fields when present`() {
|
|
246
|
+
// Given
|
|
247
|
+
val button = mockk<KlarnaPaymentPresentationPaymentButton> {
|
|
248
|
+
every { text } returns "Pay now"
|
|
249
|
+
every { imageUrl } returns "https://example.com/icon.png"
|
|
250
|
+
every { imageAlignment } returns KlarnaPaymentPresentationImageAlignment.RIGHT
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// When
|
|
254
|
+
button.toWritableMap()
|
|
255
|
+
|
|
256
|
+
// Then
|
|
257
|
+
verify(exactly = 1) { writableMap.putString("text", "Pay now") }
|
|
258
|
+
verify(exactly = 1) { writableMap.putString("imageUrl", "https://example.com/icon.png") }
|
|
259
|
+
verify(exactly = 1) {
|
|
260
|
+
writableMap.putString("imageAlignment", KlarnaPaymentPresentationImageAlignment.RIGHT.toString())
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
@Test
|
|
265
|
+
fun `KlarnaPaymentPresentationPaymentButton toWritableMap - puts null imageUrl when absent`() {
|
|
266
|
+
// Given
|
|
267
|
+
val button = mockk<KlarnaPaymentPresentationPaymentButton> {
|
|
268
|
+
every { text } returns "Pay"
|
|
269
|
+
every { imageUrl } returns null
|
|
270
|
+
every { imageAlignment } returns null
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// When
|
|
274
|
+
button.toWritableMap()
|
|
275
|
+
|
|
276
|
+
// Then
|
|
277
|
+
verify(exactly = 1) { writableMap.putString("imageUrl", null) }
|
|
278
|
+
verify(exactly = 1) { writableMap.putString("imageAlignment", null) }
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// endregion
|
|
282
|
+
|
|
283
|
+
// region KlarnaPaymentPresentationIcon.toWritableMap tests
|
|
284
|
+
|
|
285
|
+
@Test
|
|
286
|
+
fun `KlarnaPaymentPresentationIcon toWritableMap - puts all fields when present`() {
|
|
287
|
+
// Given
|
|
288
|
+
val icon = mockk<KlarnaPaymentPresentationIcon> {
|
|
289
|
+
every { alt } returns "Klarna logo"
|
|
290
|
+
every { badgeImageUrl } returns "https://example.com/badge.png"
|
|
291
|
+
every { rectangleImageUrl } returns "https://example.com/rect.png"
|
|
292
|
+
every { squareImageUrl } returns "https://example.com/square.png"
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// When
|
|
296
|
+
icon.toWritableMap()
|
|
297
|
+
|
|
298
|
+
// Then
|
|
299
|
+
verify(exactly = 1) { writableMap.putString("alt", "Klarna logo") }
|
|
300
|
+
verify(exactly = 1) { writableMap.putString("badgeImageUrl", "https://example.com/badge.png") }
|
|
301
|
+
verify(exactly = 1) { writableMap.putString("rectangleImageUrl", "https://example.com/rect.png") }
|
|
302
|
+
verify(exactly = 1) { writableMap.putString("squareImageUrl", "https://example.com/square.png") }
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
@Test
|
|
306
|
+
fun `KlarnaPaymentPresentationIcon toWritableMap - puts null for all absent fields`() {
|
|
307
|
+
// Given
|
|
308
|
+
val icon = mockk<KlarnaPaymentPresentationIcon> {
|
|
309
|
+
every { alt } returns null
|
|
310
|
+
every { badgeImageUrl } returns null
|
|
311
|
+
every { rectangleImageUrl } returns null
|
|
312
|
+
every { squareImageUrl } returns null
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// When
|
|
316
|
+
icon.toWritableMap()
|
|
317
|
+
|
|
318
|
+
// Then
|
|
319
|
+
verify(exactly = 1) { writableMap.putString("alt", null) }
|
|
320
|
+
verify(exactly = 1) { writableMap.putString("badgeImageUrl", null) }
|
|
321
|
+
verify(exactly = 1) { writableMap.putString("rectangleImageUrl", null) }
|
|
322
|
+
verify(exactly = 1) { writableMap.putString("squareImageUrl", null) }
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// endregion
|
|
326
|
+
|
|
327
|
+
// region KlarnaPaymentPresentationPaymentOption.toWritableMap tests
|
|
328
|
+
|
|
329
|
+
@Test
|
|
330
|
+
fun `KlarnaPaymentPresentationPaymentOption toWritableMap - puts paymentOptionId`() {
|
|
331
|
+
// Given
|
|
332
|
+
val option = mockk<KlarnaPaymentPresentationPaymentOption> {
|
|
333
|
+
every { paymentOptionId } returns "opt_klarna"
|
|
334
|
+
every { header } returns null
|
|
335
|
+
every { badge } returns null
|
|
336
|
+
every { subheader } returns null
|
|
337
|
+
every { message } returns null
|
|
338
|
+
every { terms } returns null
|
|
339
|
+
every { paymentButton } returns null
|
|
340
|
+
every { icon } returns null
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// When
|
|
344
|
+
option.toWritableMap()
|
|
345
|
+
|
|
346
|
+
// Then
|
|
347
|
+
verify(exactly = 1) { writableMap.putString("paymentOptionId", "opt_klarna") }
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
@Test
|
|
351
|
+
fun `KlarnaPaymentPresentationPaymentOption toWritableMap - puts null for all absent optional fields`() {
|
|
352
|
+
// Given
|
|
353
|
+
val option = mockk<KlarnaPaymentPresentationPaymentOption> {
|
|
354
|
+
every { paymentOptionId } returns "opt_klarna"
|
|
355
|
+
every { header } returns null
|
|
356
|
+
every { badge } returns null
|
|
357
|
+
every { subheader } returns null
|
|
358
|
+
every { message } returns null
|
|
359
|
+
every { terms } returns null
|
|
360
|
+
every { paymentButton } returns null
|
|
361
|
+
every { icon } returns null
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// When
|
|
365
|
+
option.toWritableMap()
|
|
366
|
+
|
|
367
|
+
// Then
|
|
368
|
+
verify(exactly = 1) { writableMap.putNull("header") }
|
|
369
|
+
verify(exactly = 1) { writableMap.putNull("badge") }
|
|
370
|
+
verify(exactly = 1) { writableMap.putNull("subheader") }
|
|
371
|
+
verify(exactly = 1) { writableMap.putNull("message") }
|
|
372
|
+
verify(exactly = 1) { writableMap.putNull("terms") }
|
|
373
|
+
verify(exactly = 1) { writableMap.putNull("paymentButton") }
|
|
374
|
+
verify(exactly = 1) { writableMap.putNull("icon") }
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
@Test
|
|
378
|
+
fun `KlarnaPaymentPresentationPaymentOption toWritableMap - puts header as map when present`() {
|
|
379
|
+
// Given
|
|
380
|
+
val optionMap = mockk<WritableMap>(relaxed = true)
|
|
381
|
+
val headerMap = mockk<WritableMap>(relaxed = true)
|
|
382
|
+
givenCreateMapReturnsInOrder(optionMap, headerMap)
|
|
383
|
+
|
|
384
|
+
val header = mockk<KlarnaPaymentPresentationText.PlainText> {
|
|
385
|
+
every { text } returns "Pay with Klarna"
|
|
386
|
+
}
|
|
387
|
+
val option = mockk<KlarnaPaymentPresentationPaymentOption> {
|
|
388
|
+
every { paymentOptionId } returns "opt_klarna"
|
|
389
|
+
every { this@mockk.header } returns header
|
|
390
|
+
every { badge } returns null
|
|
391
|
+
every { subheader } returns null
|
|
392
|
+
every { message } returns null
|
|
393
|
+
every { terms } returns null
|
|
394
|
+
every { paymentButton } returns null
|
|
395
|
+
every { icon } returns null
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// When
|
|
399
|
+
option.toWritableMap()
|
|
400
|
+
|
|
401
|
+
// Then
|
|
402
|
+
verify(exactly = 1) { optionMap.putMap("header", headerMap) }
|
|
403
|
+
verify(exactly = 0) { optionMap.putNull("header") }
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
@Test
|
|
407
|
+
fun `KlarnaPaymentPresentationPaymentOption toWritableMap - puts paymentButton and icon as maps when present`() {
|
|
408
|
+
// Given
|
|
409
|
+
val optionMap = mockk<WritableMap>(relaxed = true)
|
|
410
|
+
val buttonMap = mockk<WritableMap>(relaxed = true)
|
|
411
|
+
val iconMap = mockk<WritableMap>(relaxed = true)
|
|
412
|
+
givenCreateMapReturnsInOrder(optionMap, buttonMap, iconMap)
|
|
413
|
+
|
|
414
|
+
val button = mockk<KlarnaPaymentPresentationPaymentButton> {
|
|
415
|
+
every { text } returns "Pay now"
|
|
416
|
+
every { imageUrl } returns null
|
|
417
|
+
every { imageAlignment } returns null
|
|
418
|
+
}
|
|
419
|
+
val icon = mockk<KlarnaPaymentPresentationIcon> {
|
|
420
|
+
every { alt } returns null
|
|
421
|
+
every { badgeImageUrl } returns null
|
|
422
|
+
every { rectangleImageUrl } returns null
|
|
423
|
+
every { squareImageUrl } returns null
|
|
424
|
+
}
|
|
425
|
+
val option = mockk<KlarnaPaymentPresentationPaymentOption> {
|
|
426
|
+
every { paymentOptionId } returns "opt_klarna"
|
|
427
|
+
every { header } returns null
|
|
428
|
+
every { badge } returns null
|
|
429
|
+
every { subheader } returns null
|
|
430
|
+
every { message } returns null
|
|
431
|
+
every { terms } returns null
|
|
432
|
+
every { paymentButton } returns button
|
|
433
|
+
every { this@mockk.icon } returns icon
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
// When
|
|
437
|
+
option.toWritableMap()
|
|
438
|
+
|
|
439
|
+
// Then
|
|
440
|
+
verify(exactly = 1) { optionMap.putMap("paymentButton", buttonMap) }
|
|
441
|
+
verify(exactly = 0) { optionMap.putNull("paymentButton") }
|
|
442
|
+
verify(exactly = 1) { optionMap.putMap("icon", iconMap) }
|
|
443
|
+
verify(exactly = 0) { optionMap.putNull("icon") }
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
// endregion
|
|
447
|
+
}
|