Skip to content

Commit b3870fb

Browse files
committed
Contract tests
1 parent 5b71cec commit b3870fb

File tree

2 files changed

+72
-2
lines changed

2 files changed

+72
-2
lines changed

paymentsheet/src/main/java/com/stripe/android/shoppay/ShopPayActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,10 @@ internal class ShopPayActivity : ComponentActivity() {
9494

9595
Button(
9696
onClick = {
97-
dismissWithResult(ShopPayActivityResult.Canceled)
97+
dismissWithResult(ShopPayActivityResult.Failed(Throwable("Failed")))
9898
}
9999
) {
100-
Text("Cancel")
100+
Text("Fail")
101101
}
102102
}
103103
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.stripe.android.shoppay
2+
3+
import android.content.Intent
4+
import androidx.core.os.BundleCompat
5+
import androidx.core.os.bundleOf
6+
import androidx.test.core.app.ApplicationProvider
7+
import com.google.common.truth.Truth.assertThat
8+
import org.junit.Test
9+
import org.junit.runner.RunWith
10+
import org.robolectric.RobolectricTestRunner
11+
12+
@RunWith(RobolectricTestRunner::class)
13+
internal class ShopPayActivityContractTest {
14+
15+
@Test
16+
fun `intent is created correctly`() {
17+
val contract = ShopPayActivityContract()
18+
19+
val intent = contract.createIntent(
20+
context = ApplicationProvider.getApplicationContext(),
21+
input = ShopPayActivityContract.Args("https://example.com")
22+
)
23+
24+
assertThat(intent.component?.className).isEqualTo(ShopPayActivity::class.java.name)
25+
26+
val actualArg = intent.extras?.let {
27+
BundleCompat.getParcelable(it, ShopPayActivity.EXTRA_ARGS, ShopPayArgs::class.java)
28+
}
29+
assertThat(actualArg).isEqualTo(
30+
ShopPayArgs("https://example.com")
31+
)
32+
}
33+
34+
@Test
35+
fun `canceled result is parsed correctly`() = testActivityResult(
36+
expectedResult = ShopPayActivityResult.Canceled
37+
)
38+
39+
@Test
40+
fun `failed result is parsed correctly`() = testActivityResult(
41+
expectedResult = ShopPayActivityResult.Failed(
42+
error = Throwable("Something went wrong")
43+
)
44+
)
45+
46+
@Test
47+
fun `completed result is parsed correctly`() = testActivityResult(
48+
expectedResult = ShopPayActivityResult.Completed("spm_1234")
49+
)
50+
51+
private fun testActivityResult(expectedResult: ShopPayActivityResult) {
52+
val contract = ShopPayActivityContract()
53+
54+
val result = contract.parseResult(
55+
resultCode = ShopPayActivity.RESULT_COMPLETE,
56+
intent = intent(expectedResult)
57+
)
58+
59+
assertThat(result).isEqualTo(expectedResult)
60+
}
61+
62+
private fun intent(result: ShopPayActivityResult): Intent {
63+
val bundle = bundleOf(
64+
ShopPayActivityContract.EXTRA_RESULT to result
65+
)
66+
return Intent().apply {
67+
putExtras(bundle)
68+
}
69+
}
70+
}

0 commit comments

Comments
 (0)