Skip to content

Commit dc6c954

Browse files
noguieragedd
andauthored
Convert PayPalCreditFinancingUnitTest from Java to Kotlin (#1391)
* Rename .java to .kt * convert `PayPalCreditFinancingUnitTest` from Java to Kotlin * Update PayPal/src/test/java/com/braintreepayments/api/paypal/PayPalCreditFinancingUnitTest.kt Co-authored-by: agedd <105314544+agedd@users.noreply.github.com> --------- Co-authored-by: agedd <105314544+agedd@users.noreply.github.com>
1 parent 17b328b commit dc6c954

File tree

2 files changed

+104
-103
lines changed

2 files changed

+104
-103
lines changed

PayPal/src/test/java/com/braintreepayments/api/paypal/PayPalCreditFinancingUnitTest.java

Lines changed: 0 additions & 103 deletions
This file was deleted.
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package com.braintreepayments.api.paypal
2+
3+
import android.os.Parcel
4+
import com.braintreepayments.api.testutils.Fixtures
5+
import kotlinx.parcelize.parcelableCreator
6+
import org.json.JSONException
7+
import org.json.JSONObject
8+
import org.junit.Assert.assertEquals
9+
import org.junit.Assert.assertTrue
10+
import org.junit.Assert.assertFalse
11+
import org.junit.Assert.assertNotNull
12+
import org.junit.Assert.assertNull
13+
14+
import org.junit.Test
15+
import org.junit.runner.RunWith
16+
import org.robolectric.RobolectricTestRunner
17+
18+
@RunWith(RobolectricTestRunner::class)
19+
class PayPalCreditFinancingUnitTest {
20+
21+
@Test
22+
@Throws(JSONException::class)
23+
fun `creates PayPalCreditFinancing from JSON and returns null when empty`() {
24+
val payPalCreditFinancing = PayPalCreditFinancing.fromJson(null)
25+
26+
assertNotNull(payPalCreditFinancing)
27+
assertFalse(payPalCreditFinancing.isCardAmountImmutable)
28+
assertEquals(0, payPalCreditFinancing.term)
29+
assertFalse(payPalCreditFinancing.hasPayerAcceptance)
30+
assertNull(payPalCreditFinancing.monthlyPayment)
31+
assertNull(payPalCreditFinancing.totalCost)
32+
assertNull(payPalCreditFinancing.totalInterest)
33+
}
34+
35+
@Test
36+
@Throws(JSONException::class)
37+
fun `successfully creates PayPalCreditFinancing from standard JSON`() {
38+
val payPalAccountResponse = Fixtures.PAYMENT_METHODS_PAYPAL_ACCOUNT_RESPONSE
39+
val creditFinancingJsonObject = JSONObject(payPalAccountResponse).getJSONArray("paypalAccounts")
40+
.getJSONObject(0).getJSONObject("details")
41+
.getJSONObject("creditFinancingOffered")
42+
43+
val payPalCreditFinancing = PayPalCreditFinancing.fromJson(creditFinancingJsonObject)
44+
45+
assertFalse(payPalCreditFinancing.isCardAmountImmutable)
46+
assertEquals(18, payPalCreditFinancing.term)
47+
assertTrue(payPalCreditFinancing.hasPayerAcceptance)
48+
assertEquals("USD", payPalCreditFinancing.monthlyPayment?.currency)
49+
assertEquals("USD", payPalCreditFinancing.totalCost?.currency)
50+
assertEquals("USD", payPalCreditFinancing.totalInterest?.currency)
51+
assertEquals("13.88", payPalCreditFinancing.monthlyPayment?.value)
52+
assertEquals("250.00", payPalCreditFinancing.totalCost?.value)
53+
assertEquals("0.00", payPalCreditFinancing.totalInterest?.value)
54+
}
55+
56+
@Test
57+
@Throws(JSONException::class)
58+
fun `creates PayPalCreditFinancing from JSON without credit financing data`() {
59+
val payPalAccountResponse = Fixtures.PAYMENT_METHODS_PAYPAL_ACCOUNT_RESPONSE_WITHOUT_CREDIT_FINANCING_DATA
60+
val creditFinancingJsonObject = JSONObject(payPalAccountResponse).getJSONArray("paypalAccounts")
61+
.getJSONObject(0).getJSONObject("details")
62+
.getJSONObject("creditFinancingOffered")
63+
64+
val payPalCreditFinancing = PayPalCreditFinancing.fromJson(creditFinancingJsonObject)
65+
66+
assertFalse(payPalCreditFinancing.isCardAmountImmutable)
67+
assertEquals(18, payPalCreditFinancing.term)
68+
assertFalse(payPalCreditFinancing.hasPayerAcceptance)
69+
assertNull(payPalCreditFinancing.monthlyPayment?.currency)
70+
assertNull(payPalCreditFinancing.totalCost?.currency)
71+
assertNull(payPalCreditFinancing.totalInterest?.currency)
72+
assertNull(payPalCreditFinancing.monthlyPayment?.value)
73+
assertNull(payPalCreditFinancing.totalCost?.value)
74+
assertNull(payPalCreditFinancing.totalInterest?.value)
75+
}
76+
77+
@Test
78+
@Throws(JSONException::class)
79+
fun `writes to Parcel and serializes correctly`() {
80+
val payPalAccountResponse = Fixtures.PAYMENT_METHODS_PAYPAL_ACCOUNT_RESPONSE
81+
val creditFinancingJsonObject = JSONObject(payPalAccountResponse).getJSONArray("paypalAccounts")
82+
.getJSONObject(0).getJSONObject("details")
83+
.getJSONObject("creditFinancingOffered")
84+
85+
val preSerialized = PayPalCreditFinancing.fromJson(creditFinancingJsonObject)
86+
val parcel = Parcel.obtain().apply {
87+
preSerialized.writeToParcel(this, 0)
88+
setDataPosition(0)
89+
}
90+
91+
val payPalCreditFinancing = parcelableCreator<PayPalCreditFinancing>().createFromParcel(parcel)
92+
93+
assertNotNull(payPalCreditFinancing)
94+
assertFalse(payPalCreditFinancing.isCardAmountImmutable)
95+
assertEquals(18, payPalCreditFinancing.term)
96+
assertTrue(payPalCreditFinancing.hasPayerAcceptance)
97+
assertEquals("USD", payPalCreditFinancing.monthlyPayment?.currency)
98+
assertEquals("USD", payPalCreditFinancing.totalCost?.currency)
99+
assertEquals("USD", payPalCreditFinancing.totalInterest?.currency)
100+
assertEquals("13.88", payPalCreditFinancing.monthlyPayment?.value)
101+
assertEquals("250.00", payPalCreditFinancing.totalCost?.value)
102+
assertEquals("0.00", payPalCreditFinancing.totalInterest?.value)
103+
}
104+
}

0 commit comments

Comments
 (0)