@klarna/react-native-klarna-network-payment 0.0.1 → 2.8.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 +78 -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 +29 -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,489 @@
|
|
|
1
|
+
package com.klarna.mobile.sdk.reactnative.klarnanetwork.payment
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableArray
|
|
4
|
+
import com.facebook.react.bridge.ReadableMap
|
|
5
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaCollectCustomerProfileType
|
|
6
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaInterval
|
|
7
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaRequestCustomerTokenScope
|
|
8
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShippingConfigMode
|
|
9
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShippingType
|
|
10
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationIntent
|
|
11
|
+
import io.mockk.every
|
|
12
|
+
import io.mockk.mockk
|
|
13
|
+
import io.mockk.unmockkAll
|
|
14
|
+
import org.junit.After
|
|
15
|
+
import org.junit.Test
|
|
16
|
+
import kotlin.test.assertEquals
|
|
17
|
+
import kotlin.test.assertFailsWith
|
|
18
|
+
import kotlin.test.assertNull
|
|
19
|
+
|
|
20
|
+
class KlarnaPaymentRequestMapperTest {
|
|
21
|
+
|
|
22
|
+
@After
|
|
23
|
+
fun tearDown() {
|
|
24
|
+
unmockkAll()
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// region Helpers
|
|
28
|
+
|
|
29
|
+
private fun givenMinimalPaymentRequestMap(
|
|
30
|
+
amount: Double = 1000.0,
|
|
31
|
+
currency: String? = "SEK",
|
|
32
|
+
): ReadableMap = mockk {
|
|
33
|
+
every { hasKey("amount") } returns true
|
|
34
|
+
every { getDouble("amount") } returns amount
|
|
35
|
+
every { getString("currency") } returns currency
|
|
36
|
+
every { getString("paymentOptionId") } returns null
|
|
37
|
+
every { getString("paymentRequestReference") } returns null
|
|
38
|
+
every { getMap("requestCustomerToken") } returns null
|
|
39
|
+
every { getMap("shippingConfig") } returns null
|
|
40
|
+
every { getArray("collectCustomerProfile") } returns null
|
|
41
|
+
every { getMap("supplementaryPurchaseData") } returns null
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
private fun givenPresentationDataMap(
|
|
45
|
+
amount: Double = 500.0,
|
|
46
|
+
currency: String = "USD",
|
|
47
|
+
intent: String? = null,
|
|
48
|
+
paymentProgramEnablementCodes: ReadableArray? = null,
|
|
49
|
+
subscriptionBillingInterval: String? = null,
|
|
50
|
+
hasBillingIntervalFrequency: Boolean = false,
|
|
51
|
+
billingIntervalFrequencyIsNull: Boolean = false,
|
|
52
|
+
billingIntervalFrequency: Int = 0,
|
|
53
|
+
): ReadableMap = mockk {
|
|
54
|
+
every { getDouble("amount") } returns amount
|
|
55
|
+
every { getString("currency") } returns currency
|
|
56
|
+
every { getString("intent") } returns intent
|
|
57
|
+
every { getArray("paymentProgramEnablementCodes") } returns paymentProgramEnablementCodes
|
|
58
|
+
every { getString("subscriptionBillingInterval") } returns subscriptionBillingInterval
|
|
59
|
+
every { hasKey("subscriptionBillingIntervalFrequency") } returns hasBillingIntervalFrequency
|
|
60
|
+
every { isNull("subscriptionBillingIntervalFrequency") } returns billingIntervalFrequencyIsNull
|
|
61
|
+
every { getInt("subscriptionBillingIntervalFrequency") } returns billingIntervalFrequency
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// endregion
|
|
65
|
+
|
|
66
|
+
// region buildPaymentRequestData tests
|
|
67
|
+
|
|
68
|
+
@Test
|
|
69
|
+
fun `buildPaymentRequestData - throws when amount key is missing`() {
|
|
70
|
+
val map = mockk<ReadableMap> {
|
|
71
|
+
every { hasKey("amount") } returns false
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
assertFailsWith<IllegalArgumentException> {
|
|
75
|
+
KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@Test
|
|
80
|
+
fun `buildPaymentRequestData - throws when currency is null`() {
|
|
81
|
+
val map = givenMinimalPaymentRequestMap(currency = null)
|
|
82
|
+
|
|
83
|
+
assertFailsWith<IllegalArgumentException> {
|
|
84
|
+
KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@Test
|
|
89
|
+
fun `buildPaymentRequestData - throws when currency is empty`() {
|
|
90
|
+
val map = givenMinimalPaymentRequestMap(currency = "")
|
|
91
|
+
|
|
92
|
+
assertFailsWith<IllegalArgumentException> {
|
|
93
|
+
KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@Test
|
|
98
|
+
fun `buildPaymentRequestData - maps amount and currency correctly`() {
|
|
99
|
+
val map = givenMinimalPaymentRequestMap(amount = 2500.0, currency = "EUR")
|
|
100
|
+
|
|
101
|
+
val result = KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
102
|
+
|
|
103
|
+
assertEquals(2500L, result.amount)
|
|
104
|
+
assertEquals("EUR", result.currency)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@Test
|
|
108
|
+
fun `buildPaymentRequestData - maps optional top-level string fields`() {
|
|
109
|
+
val map = mockk<ReadableMap> {
|
|
110
|
+
every { hasKey("amount") } returns true
|
|
111
|
+
every { getDouble("amount") } returns 100.0
|
|
112
|
+
every { getString("currency") } returns "SEK"
|
|
113
|
+
every { getString("paymentOptionId") } returns "pay_opt_123"
|
|
114
|
+
every { getString("paymentRequestReference") } returns "ref_abc"
|
|
115
|
+
every { getMap("requestCustomerToken") } returns null
|
|
116
|
+
every { getMap("shippingConfig") } returns null
|
|
117
|
+
every { getArray("collectCustomerProfile") } returns null
|
|
118
|
+
every { getMap("supplementaryPurchaseData") } returns null
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
val result = KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
122
|
+
|
|
123
|
+
assertEquals("pay_opt_123", result.paymentOptionId)
|
|
124
|
+
assertEquals("ref_abc", result.paymentRequestReference)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@Test
|
|
128
|
+
fun `buildPaymentRequestData - passes null for optional maps and arrays when absent`() {
|
|
129
|
+
val map = givenMinimalPaymentRequestMap()
|
|
130
|
+
|
|
131
|
+
val result = KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
132
|
+
|
|
133
|
+
assertNull(result.requestCustomerToken)
|
|
134
|
+
assertNull(result.shippingConfig)
|
|
135
|
+
assertNull(result.collectCustomerProfile)
|
|
136
|
+
assertNull(result.supplementaryPurchaseData)
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
@Test
|
|
140
|
+
fun `buildPaymentRequestData - maps requestCustomerToken scopes correctly`() {
|
|
141
|
+
val scopesArray = mockk<ReadableArray> {
|
|
142
|
+
every { size() } returns 2
|
|
143
|
+
every { getString(0) } returns KlarnaRequestCustomerTokenScope.CUSTOMER_LOGIN.toString()
|
|
144
|
+
every { getString(1) } returns KlarnaRequestCustomerTokenScope.PAYMENT_CUSTOMER_PRESENT.toString()
|
|
145
|
+
}
|
|
146
|
+
val tokenMap = mockk<ReadableMap> {
|
|
147
|
+
every { getArray("scopes") } returns scopesArray
|
|
148
|
+
every { getString("customerTokenReference") } returns "tok_ref_1"
|
|
149
|
+
}
|
|
150
|
+
val map = mockk<ReadableMap> {
|
|
151
|
+
every { hasKey("amount") } returns true
|
|
152
|
+
every { getDouble("amount") } returns 100.0
|
|
153
|
+
every { getString("currency") } returns "SEK"
|
|
154
|
+
every { getString("paymentOptionId") } returns null
|
|
155
|
+
every { getString("paymentRequestReference") } returns null
|
|
156
|
+
every { getMap("requestCustomerToken") } returns tokenMap
|
|
157
|
+
every { getMap("shippingConfig") } returns null
|
|
158
|
+
every { getArray("collectCustomerProfile") } returns null
|
|
159
|
+
every { getMap("supplementaryPurchaseData") } returns null
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
val result = KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
163
|
+
|
|
164
|
+
val token = result.requestCustomerToken
|
|
165
|
+
assertEquals(2, token?.scopes?.size)
|
|
166
|
+
assertEquals(KlarnaRequestCustomerTokenScope.CUSTOMER_LOGIN, token?.scopes?.get(0))
|
|
167
|
+
assertEquals(KlarnaRequestCustomerTokenScope.PAYMENT_CUSTOMER_PRESENT, token?.scopes?.get(1))
|
|
168
|
+
assertEquals("tok_ref_1", token?.customerTokenReference)
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@Test
|
|
172
|
+
fun `buildPaymentRequestData - maps shippingConfig mode correctly`() {
|
|
173
|
+
val shippingConfigMap = mockk<ReadableMap> {
|
|
174
|
+
every { getString("mode") } returns KlarnaShippingConfigMode.EDITABLE.toString()
|
|
175
|
+
every { getArray("supportedCountries") } returns null
|
|
176
|
+
}
|
|
177
|
+
val map = mockk<ReadableMap> {
|
|
178
|
+
every { hasKey("amount") } returns true
|
|
179
|
+
every { getDouble("amount") } returns 100.0
|
|
180
|
+
every { getString("currency") } returns "SEK"
|
|
181
|
+
every { getString("paymentOptionId") } returns null
|
|
182
|
+
every { getString("paymentRequestReference") } returns null
|
|
183
|
+
every { getMap("requestCustomerToken") } returns null
|
|
184
|
+
every { getMap("shippingConfig") } returns shippingConfigMap
|
|
185
|
+
every { getArray("collectCustomerProfile") } returns null
|
|
186
|
+
every { getMap("supplementaryPurchaseData") } returns null
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
val result = KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
190
|
+
|
|
191
|
+
assertEquals(KlarnaShippingConfigMode.EDITABLE, result.shippingConfig?.mode)
|
|
192
|
+
assertNull(result.shippingConfig?.supportedCountries)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
@Test
|
|
196
|
+
fun `buildPaymentRequestData - defaults shippingConfig mode to EDITABLE for unknown string`() {
|
|
197
|
+
val shippingConfigMap = mockk<ReadableMap> {
|
|
198
|
+
every { getString("mode") } returns "UNKNOWN_MODE"
|
|
199
|
+
every { getArray("supportedCountries") } returns null
|
|
200
|
+
}
|
|
201
|
+
val map = mockk<ReadableMap> {
|
|
202
|
+
every { hasKey("amount") } returns true
|
|
203
|
+
every { getDouble("amount") } returns 100.0
|
|
204
|
+
every { getString("currency") } returns "SEK"
|
|
205
|
+
every { getString("paymentOptionId") } returns null
|
|
206
|
+
every { getString("paymentRequestReference") } returns null
|
|
207
|
+
every { getMap("requestCustomerToken") } returns null
|
|
208
|
+
every { getMap("shippingConfig") } returns shippingConfigMap
|
|
209
|
+
every { getArray("collectCustomerProfile") } returns null
|
|
210
|
+
every { getMap("supplementaryPurchaseData") } returns null
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
val result = KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
214
|
+
|
|
215
|
+
assertEquals(KlarnaShippingConfigMode.EDITABLE, result.shippingConfig?.mode)
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
@Test
|
|
219
|
+
fun `buildPaymentRequestData - maps collectCustomerProfile array`() {
|
|
220
|
+
val profileArray = mockk<ReadableArray> {
|
|
221
|
+
every { size() } returns 2
|
|
222
|
+
every { getString(0) } returns KlarnaCollectCustomerProfileType.EMAIL.toString()
|
|
223
|
+
every { getString(1) } returns KlarnaCollectCustomerProfileType.PHONE.toString()
|
|
224
|
+
}
|
|
225
|
+
val map = mockk<ReadableMap> {
|
|
226
|
+
every { hasKey("amount") } returns true
|
|
227
|
+
every { getDouble("amount") } returns 100.0
|
|
228
|
+
every { getString("currency") } returns "SEK"
|
|
229
|
+
every { getString("paymentOptionId") } returns null
|
|
230
|
+
every { getString("paymentRequestReference") } returns null
|
|
231
|
+
every { getMap("requestCustomerToken") } returns null
|
|
232
|
+
every { getMap("shippingConfig") } returns null
|
|
233
|
+
every { getArray("collectCustomerProfile") } returns profileArray
|
|
234
|
+
every { getMap("supplementaryPurchaseData") } returns null
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
val result = KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
238
|
+
|
|
239
|
+
val profiles = result.collectCustomerProfile
|
|
240
|
+
assertEquals(2, profiles?.size)
|
|
241
|
+
assertEquals(KlarnaCollectCustomerProfileType.EMAIL, profiles?.get(0))
|
|
242
|
+
assertEquals(KlarnaCollectCustomerProfileType.PHONE, profiles?.get(1))
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// endregion
|
|
246
|
+
|
|
247
|
+
// region buildPresentationData tests
|
|
248
|
+
|
|
249
|
+
@Test
|
|
250
|
+
fun `buildPresentationData - maps amount and currency`() {
|
|
251
|
+
val map = givenPresentationDataMap(amount = 750.0, currency = "GBP")
|
|
252
|
+
|
|
253
|
+
val result = KlarnaPaymentRequestMapper.buildPresentationData(map)
|
|
254
|
+
|
|
255
|
+
assertEquals(750L, result.amount)
|
|
256
|
+
assertEquals("GBP", result.currency)
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
@Test
|
|
260
|
+
fun `buildPresentationData - maps known intent string to enum`() {
|
|
261
|
+
val map = givenPresentationDataMap(intent = KlarnaPaymentPresentationIntent.PAY.toString())
|
|
262
|
+
|
|
263
|
+
val result = KlarnaPaymentRequestMapper.buildPresentationData(map)
|
|
264
|
+
|
|
265
|
+
assertEquals(KlarnaPaymentPresentationIntent.PAY, result.intent)
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
@Test
|
|
269
|
+
fun `buildPresentationData - maps unknown intent string to null`() {
|
|
270
|
+
val map = givenPresentationDataMap(intent = "COMPLETELY_UNKNOWN")
|
|
271
|
+
|
|
272
|
+
val result = KlarnaPaymentRequestMapper.buildPresentationData(map)
|
|
273
|
+
|
|
274
|
+
assertNull(result.intent)
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
@Test
|
|
278
|
+
fun `buildPresentationData - maps null intent to null`() {
|
|
279
|
+
val map = givenPresentationDataMap(intent = null)
|
|
280
|
+
|
|
281
|
+
val result = KlarnaPaymentRequestMapper.buildPresentationData(map)
|
|
282
|
+
|
|
283
|
+
assertNull(result.intent)
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
@Test
|
|
287
|
+
fun `buildPresentationData - maps paymentProgramEnablementCodes array`() {
|
|
288
|
+
val codesArray = mockk<ReadableArray> {
|
|
289
|
+
every { size() } returns 2
|
|
290
|
+
every { getString(0) } returns "CODE_A"
|
|
291
|
+
every { getString(1) } returns "CODE_B"
|
|
292
|
+
}
|
|
293
|
+
val map = givenPresentationDataMap(paymentProgramEnablementCodes = codesArray)
|
|
294
|
+
|
|
295
|
+
val result = KlarnaPaymentRequestMapper.buildPresentationData(map)
|
|
296
|
+
|
|
297
|
+
assertEquals(listOf("CODE_A", "CODE_B"), result.paymentProgramEnablementCodes)
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
@Test
|
|
301
|
+
fun `buildPresentationData - maps null paymentProgramEnablementCodes to null`() {
|
|
302
|
+
val map = givenPresentationDataMap(paymentProgramEnablementCodes = null)
|
|
303
|
+
|
|
304
|
+
val result = KlarnaPaymentRequestMapper.buildPresentationData(map)
|
|
305
|
+
|
|
306
|
+
assertNull(result.paymentProgramEnablementCodes)
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
@Test
|
|
310
|
+
fun `buildPresentationData - maps known subscriptionBillingInterval string to enum`() {
|
|
311
|
+
val map = givenPresentationDataMap(subscriptionBillingInterval = KlarnaInterval.MONTH.toString())
|
|
312
|
+
|
|
313
|
+
val result = KlarnaPaymentRequestMapper.buildPresentationData(map)
|
|
314
|
+
|
|
315
|
+
assertEquals(KlarnaInterval.MONTH, result.subscriptionBillingInterval)
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
@Test
|
|
319
|
+
fun `buildPresentationData - maps unknown subscriptionBillingInterval string to null`() {
|
|
320
|
+
val map = givenPresentationDataMap(subscriptionBillingInterval = "DECADE")
|
|
321
|
+
|
|
322
|
+
val result = KlarnaPaymentRequestMapper.buildPresentationData(map)
|
|
323
|
+
|
|
324
|
+
assertNull(result.subscriptionBillingInterval)
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
@Test
|
|
328
|
+
fun `buildPresentationData - maps subscriptionBillingIntervalFrequency when present and non-null`() {
|
|
329
|
+
val map = givenPresentationDataMap(
|
|
330
|
+
hasBillingIntervalFrequency = true,
|
|
331
|
+
billingIntervalFrequencyIsNull = false,
|
|
332
|
+
billingIntervalFrequency = 3,
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
val result = KlarnaPaymentRequestMapper.buildPresentationData(map)
|
|
336
|
+
|
|
337
|
+
assertEquals(3, result.subscriptionBillingIntervalFrequency)
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
@Test
|
|
341
|
+
fun `buildPresentationData - maps subscriptionBillingIntervalFrequency to null when key absent`() {
|
|
342
|
+
val map = givenPresentationDataMap(hasBillingIntervalFrequency = false)
|
|
343
|
+
|
|
344
|
+
val result = KlarnaPaymentRequestMapper.buildPresentationData(map)
|
|
345
|
+
|
|
346
|
+
assertNull(result.subscriptionBillingIntervalFrequency)
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
@Test
|
|
350
|
+
fun `buildPresentationData - maps subscriptionBillingIntervalFrequency to null when value is null`() {
|
|
351
|
+
val map = givenPresentationDataMap(
|
|
352
|
+
hasBillingIntervalFrequency = true,
|
|
353
|
+
billingIntervalFrequencyIsNull = true,
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
val result = KlarnaPaymentRequestMapper.buildPresentationData(map)
|
|
357
|
+
|
|
358
|
+
assertNull(result.subscriptionBillingIntervalFrequency)
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// endregion
|
|
362
|
+
|
|
363
|
+
// region buildShippingConfig (via buildPaymentRequestData) tests
|
|
364
|
+
|
|
365
|
+
@Test
|
|
366
|
+
fun `buildPaymentRequestData - maps shippingConfig supportedCountries`() {
|
|
367
|
+
val countriesArray = mockk<ReadableArray> {
|
|
368
|
+
every { size() } returns 2
|
|
369
|
+
every { getString(0) } returns "SE"
|
|
370
|
+
every { getString(1) } returns "NO"
|
|
371
|
+
}
|
|
372
|
+
val shippingConfigMap = mockk<ReadableMap> {
|
|
373
|
+
every { getString("mode") } returns KlarnaShippingConfigMode.EDITABLE.toString()
|
|
374
|
+
every { getArray("supportedCountries") } returns countriesArray
|
|
375
|
+
}
|
|
376
|
+
val map = mockk<ReadableMap> {
|
|
377
|
+
every { hasKey("amount") } returns true
|
|
378
|
+
every { getDouble("amount") } returns 100.0
|
|
379
|
+
every { getString("currency") } returns "SEK"
|
|
380
|
+
every { getString("paymentOptionId") } returns null
|
|
381
|
+
every { getString("paymentRequestReference") } returns null
|
|
382
|
+
every { getMap("requestCustomerToken") } returns null
|
|
383
|
+
every { getMap("shippingConfig") } returns shippingConfigMap
|
|
384
|
+
every { getArray("collectCustomerProfile") } returns null
|
|
385
|
+
every { getMap("supplementaryPurchaseData") } returns null
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
val result = KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
389
|
+
|
|
390
|
+
assertEquals(listOf("SE", "NO"), result.shippingConfig?.supportedCountries)
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// endregion
|
|
394
|
+
|
|
395
|
+
// region buildShippingOption (via buildSupplementaryPurchaseData) tests
|
|
396
|
+
|
|
397
|
+
@Test
|
|
398
|
+
fun `buildPaymentRequestData - maps shippingOption with known type and attributes`() {
|
|
399
|
+
val attrsArray = mockk<ReadableArray> {
|
|
400
|
+
every { size() } returns 1
|
|
401
|
+
every { getString(0) } returns KlarnaShippingType.TO_DOOR.toString()
|
|
402
|
+
}
|
|
403
|
+
val shippingOptionMap = mockk<ReadableMap> {
|
|
404
|
+
every { getString("shippingCarrier") } returns "DHL"
|
|
405
|
+
every { getString("shippingType") } returns KlarnaShippingType.TO_DOOR.toString()
|
|
406
|
+
every { getArray("shippingTypeAttributes") } returns attrsArray
|
|
407
|
+
}
|
|
408
|
+
val shippingMap = mockk<ReadableMap> {
|
|
409
|
+
every { getMap("address") } returns null
|
|
410
|
+
every { getMap("recipient") } returns null
|
|
411
|
+
every { getMap("shippingOption") } returns shippingOptionMap
|
|
412
|
+
every { getString("shippingReference") } returns "ship_ref_1"
|
|
413
|
+
}
|
|
414
|
+
val shippingArray = mockk<ReadableArray> {
|
|
415
|
+
every { size() } returns 1
|
|
416
|
+
every { getMap(0) } returns shippingMap
|
|
417
|
+
}
|
|
418
|
+
val supplementaryMap = mockk<ReadableMap> {
|
|
419
|
+
every { getMap("customer") } returns null
|
|
420
|
+
every { getArray("lineItems") } returns null
|
|
421
|
+
every { getString("purchaseReference") } returns null
|
|
422
|
+
every { getArray("shipping") } returns shippingArray
|
|
423
|
+
every { getMap("ondemandService") } returns null
|
|
424
|
+
every { getArray("subscriptions") } returns null
|
|
425
|
+
}
|
|
426
|
+
val map = mockk<ReadableMap> {
|
|
427
|
+
every { hasKey("amount") } returns true
|
|
428
|
+
every { getDouble("amount") } returns 100.0
|
|
429
|
+
every { getString("currency") } returns "SEK"
|
|
430
|
+
every { getString("paymentOptionId") } returns null
|
|
431
|
+
every { getString("paymentRequestReference") } returns null
|
|
432
|
+
every { getMap("requestCustomerToken") } returns null
|
|
433
|
+
every { getMap("shippingConfig") } returns null
|
|
434
|
+
every { getArray("collectCustomerProfile") } returns null
|
|
435
|
+
every { getMap("supplementaryPurchaseData") } returns supplementaryMap
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
val result = KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
439
|
+
|
|
440
|
+
val shippingOption = result.supplementaryPurchaseData?.shipping?.first()?.shippingOption
|
|
441
|
+
assertEquals("DHL", shippingOption?.shippingCarrier)
|
|
442
|
+
assertEquals(KlarnaShippingType.TO_DOOR, shippingOption?.shippingType)
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
@Test
|
|
446
|
+
fun `buildPaymentRequestData - defaults shippingOption type to TO_DOOR for unknown string`() {
|
|
447
|
+
val shippingOptionMap = mockk<ReadableMap> {
|
|
448
|
+
every { getString("shippingCarrier") } returns null
|
|
449
|
+
every { getString("shippingType") } returns "TELEPORT"
|
|
450
|
+
every { getArray("shippingTypeAttributes") } returns null
|
|
451
|
+
}
|
|
452
|
+
val shippingMap = mockk<ReadableMap> {
|
|
453
|
+
every { getMap("address") } returns null
|
|
454
|
+
every { getMap("recipient") } returns null
|
|
455
|
+
every { getMap("shippingOption") } returns shippingOptionMap
|
|
456
|
+
every { getString("shippingReference") } returns null
|
|
457
|
+
}
|
|
458
|
+
val shippingArray = mockk<ReadableArray> {
|
|
459
|
+
every { size() } returns 1
|
|
460
|
+
every { getMap(0) } returns shippingMap
|
|
461
|
+
}
|
|
462
|
+
val supplementaryMap = mockk<ReadableMap> {
|
|
463
|
+
every { getMap("customer") } returns null
|
|
464
|
+
every { getArray("lineItems") } returns null
|
|
465
|
+
every { getString("purchaseReference") } returns null
|
|
466
|
+
every { getArray("shipping") } returns shippingArray
|
|
467
|
+
every { getMap("ondemandService") } returns null
|
|
468
|
+
every { getArray("subscriptions") } returns null
|
|
469
|
+
}
|
|
470
|
+
val map = mockk<ReadableMap> {
|
|
471
|
+
every { hasKey("amount") } returns true
|
|
472
|
+
every { getDouble("amount") } returns 100.0
|
|
473
|
+
every { getString("currency") } returns "SEK"
|
|
474
|
+
every { getString("paymentOptionId") } returns null
|
|
475
|
+
every { getString("paymentRequestReference") } returns null
|
|
476
|
+
every { getMap("requestCustomerToken") } returns null
|
|
477
|
+
every { getMap("shippingConfig") } returns null
|
|
478
|
+
every { getArray("collectCustomerProfile") } returns null
|
|
479
|
+
every { getMap("supplementaryPurchaseData") } returns supplementaryMap
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
val result = KlarnaPaymentRequestMapper.buildPaymentRequestData(map)
|
|
483
|
+
|
|
484
|
+
val shippingOption = result.supplementaryPurchaseData?.shipping?.first()?.shippingOption
|
|
485
|
+
assertEquals(KlarnaShippingType.TO_DOOR, shippingOption?.shippingType)
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
// endregion
|
|
489
|
+
}
|