Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support adding bank account to Link #5458

Merged
merged 33 commits into from Aug 29, 2022
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
f8ff40e
WIP.
carlosmuvi-stripe Aug 19, 2022
e62b66f
Adds tests.
carlosmuvi-stripe Aug 19, 2022
d14e4d2
Moves contract to launcher package.
carlosmuvi-stripe Aug 23, 2022
1665e02
Ktlint fixes.
carlosmuvi-stripe Aug 23, 2022
c030645
Merge remote-tracking branch 'origin/f/BANKCON-4937_Support_AuthFlow_…
brnunes-stripe Aug 24, 2022
11dd135
Use ForLink as contract input.
carlosmuvi-stripe Aug 24, 2022
bbff4c1
Merge remote-tracking branch 'origin/f/BANKCON-4937_Support_AuthFlow_…
brnunes-stripe Aug 24, 2022
830d045
exposes internal objects for link.
carlosmuvi-stripe Aug 24, 2022
2341292
Merge remote-tracking branch 'origin/f/BANKCON-4937_Support_AuthFlow_…
brnunes-stripe Aug 24, 2022
cf0b4f3
Add bank account
brnunes-stripe Aug 24, 2022
e9e17fe
WalletScreenTest
brnunes-stripe Aug 24, 2022
bca8508
createBankAccountPaymentDetails
brnunes-stripe Aug 24, 2022
1dff5af
Merge branch 'master' into brnunes/conn
brnunes-stripe Aug 25, 2022
36a2200
PaymentMethodScreenTest
brnunes-stripe Aug 25, 2022
29658ed
Merge branch 'master' into brnunes/conn
brnunes-stripe Aug 25, 2022
6d45936
Refactoring to support Bank Accounts in Link
brnunes-stripe Aug 25, 2022
ee74d9d
Merge branch 'brnunes/bank' into brnunes/conn
brnunes-stripe Aug 25, 2022
e3da511
createCardPaymentDetails
brnunes-stripe Aug 25, 2022
734a800
Merge branch 'brnunes/bank' into brnunes/conn
brnunes-stripe Aug 25, 2022
8f9d6d1
apidump
brnunes-stripe Aug 25, 2022
67947a9
Merge branch 'brnunes/bank' into brnunes/conn
brnunes-stripe Aug 25, 2022
b8d6bca
comments
brnunes-stripe Aug 25, 2022
9aec78d
Merge branch 'brnunes/bank' into brnunes/conn
brnunes-stripe Aug 25, 2022
03fd6f3
Fix positioning
brnunes-stripe Aug 26, 2022
fac1737
Merge branch 'brnunes/bank' into brnunes/conn
brnunes-stripe Aug 26, 2022
3d5c2cb
Fix errors
brnunes-stripe Aug 26, 2022
694ee8d
Check funding sources
brnunes-stripe Aug 26, 2022
3f24449
lint
brnunes-stripe Aug 26, 2022
2467af0
Merge branch 'master' into brnunes/conn
brnunes-stripe Aug 26, 2022
0de2b98
comments
brnunes-stripe Aug 26, 2022
ce6bff2
LinkShapes
brnunes-stripe Aug 26, 2022
ec0c651
lint
brnunes-stripe Aug 26, 2022
b2479cd
lint
brnunes-stripe Aug 26, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 0 additions & 4 deletions link/api/link.api
Expand Up @@ -178,10 +178,6 @@ public final class com/stripe/android/link/LinkPaymentDetails$Saved$Creator : an
public synthetic fun newArray (I)[Ljava/lang/Object;
}

public final class com/stripe/android/link/LinkPaymentLauncher$Companion {
public final fun getLINK_ENABLED ()Z
}

public final class com/stripe/android/link/LinkPaymentLauncher_Factory {
public fun <init> (Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V
public static fun create (Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/stripe/android/link/LinkPaymentLauncher_Factory;
Expand Down
1 change: 1 addition & 0 deletions link/build.gradle
Expand Up @@ -22,6 +22,7 @@ dependencies {
implementation project(':payments-core')
implementation project(':stripe-core')
implementation project(':payments-ui-core')
implementation project(':financial-connections')

implementation "androidx.appcompat:appcompat:$androidxAppcompatVersion"
implementation "androidx.constraintlayout:constraintlayout:$androidxConstraintlayoutVersion"
Expand Down
Expand Up @@ -24,6 +24,37 @@ internal class PaymentMethodScreenTest {
private val primaryButtonLabel = "Pay $10.99"
private val secondaryButtonLabel = "Cancel"

@Test
fun when_multiple_payment_methods_supported_then_shows_them_in_cells() {
setContent()

onCard().assertExists()
onBank().assertExists()
}

@Test
fun when_single_payment_method_supported_then_shows_no_cells() {
setContent(supportedPaymentMethods = listOf(SupportedPaymentMethod.Card))

onCard().assertDoesNotExist()
onBank().assertDoesNotExist()
}

@Test
fun selecting_payment_method_triggers_callback() {
var selectedPaymentMethod: SupportedPaymentMethod? = null
setContent(
onPaymentMethodSelected = {
selectedPaymentMethod = it
}
)

onBank().performClick()
assertThat(selectedPaymentMethod).isEqualTo(SupportedPaymentMethod.BankAccount)
onCard().performClick()
assertThat(selectedPaymentMethod).isEqualTo(SupportedPaymentMethod.Card)
}

@Test
fun primary_button_shows_progress_indicator_when_processing() {
setContent(primaryButtonState = PrimaryButtonState.Processing)
Expand Down Expand Up @@ -92,17 +123,23 @@ internal class PaymentMethodScreenTest {
}

private fun setContent(
supportedPaymentMethods: List<SupportedPaymentMethod> = SupportedPaymentMethod.allValues,
selectedPaymentMethod: SupportedPaymentMethod = SupportedPaymentMethod.Card,
primaryButtonState: PrimaryButtonState = PrimaryButtonState.Enabled,
errorMessage: ErrorMessage? = null,
onPaymentMethodSelected: (SupportedPaymentMethod) -> Unit = {},
onPayButtonClick: () -> Unit = {},
onSecondaryButtonClick: () -> Unit = {}
) = composeTestRule.setContent {
DefaultLinkTheme {
PaymentMethodBody(
supportedPaymentMethods = supportedPaymentMethods,
selectedPaymentMethod = selectedPaymentMethod,
primaryButtonLabel = primaryButtonLabel,
primaryButtonState = primaryButtonState,
secondaryButtonLabel = secondaryButtonLabel,
errorMessage = errorMessage,
onPaymentMethodSelected = onPaymentMethodSelected,
onPrimaryButtonClick = onPayButtonClick,
onSecondaryButtonClick = onSecondaryButtonClick,
formContent = {}
Expand All @@ -114,4 +151,6 @@ internal class PaymentMethodScreenTest {
private fun onSecondaryButton() = composeTestRule.onNodeWithText(secondaryButtonLabel)
private fun onProgressIndicator() = composeTestRule.onNodeWithTag(progressIndicatorTestTag)
private fun onCompletedIcon() = composeTestRule.onNodeWithTag(completedIconTestTag, true)
private fun onCard() = composeTestRule.onNodeWithText("Card")
private fun onBank() = composeTestRule.onNodeWithText("Bank")
}
Expand Up @@ -97,17 +97,42 @@ internal class WalletScreenTest {
@Test
fun selected_payment_method_is_shown_when_collapsed() {
val initiallySelectedItem = paymentDetails[4]
setContent(selectedItem = initiallySelectedItem)
setContent(
isExpanded = false,
selectedItem = initiallySelectedItem
)

composeTestRule.onNodeWithText("Payment").onParent().onChildren()
.filter(hasText(initiallySelectedItem.label, substring = true))
.assertCountEquals(1)
}

@Test
fun when_no_payment_option_is_selected_then_list_is_expanded() {
setContent(selectedItem = null)
fun expand_list_triggers_callback() {
var expanded: Boolean? = null
setContent(
isExpanded = false,
setExpanded = {
expanded = it
}
)
assertCollapsed()
composeTestRule.onNodeWithText("Payment").performClick()
assertThat(expanded).isTrue()
}

@Test
fun collapse_list_triggers_callback() {
var expanded: Boolean? = null
setContent(
isExpanded = true,
setExpanded = {
expanded = it
}
)
assertExpanded()
composeTestRule.onNodeWithText("Payment methods").performClick()
assertThat(expanded).isFalse()
}

@Test
Expand Down Expand Up @@ -357,8 +382,10 @@ internal class WalletScreenTest {
private fun setContent(
supportedTypes: Set<String> = SupportedPaymentMethod.allTypes,
selectedItem: ConsumerPaymentDetails.PaymentDetails? = paymentDetails.first(),
isExpanded: Boolean = true,
primaryButtonState: PrimaryButtonState = PrimaryButtonState.Enabled,
errorMessage: ErrorMessage? = null,
setExpanded: (Boolean) -> Unit = {},
onItemSelected: (ConsumerPaymentDetails.PaymentDetails) -> Unit = {},
onAddNewPaymentMethodClick: () -> Unit = {},
onEditPaymentMethod: (ConsumerPaymentDetails.PaymentDetails) -> Unit = {},
Expand Down Expand Up @@ -395,9 +422,11 @@ internal class WalletScreenTest {
paymentDetailsList = paymentDetailsList,
supportedTypes = supportedTypes,
selectedItem = selectedItem,
isExpanded = isExpanded,
primaryButtonLabel = primaryButtonLabel,
primaryButtonState = primaryButtonState,
errorMessage = errorMessage,
setExpanded = setExpanded,
onItemSelected = onItemSelected,
onAddNewPaymentMethodClick = onAddNewPaymentMethodClick,
onEditPaymentMethod = onEditPaymentMethod,
Expand Down
Expand Up @@ -237,7 +237,9 @@ class LinkPaymentLauncher @AssistedInject internal constructor(
WeakMapInjectorRegistry.register(injector, injectorKey)
}

@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
companion object {
val LINK_ENABLED = BuildConfig.DEBUG
val supportedFundingSources = SupportedPaymentMethod.allTypes
}
}