Skip to content

Commit

Permalink
Update external payment methods playground setting to use enum of opt…
Browse files Browse the repository at this point in the history
…ions (#8464)

* Use enum option for external payment methods playground setting

* Update TestExternalPaymentMethod to use new EPM type
  • Loading branch information
amk-stripe committed May 14, 2024
1 parent 9483e1e commit 861f779
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import com.stripe.android.BasePlaygroundTest
import com.stripe.android.model.PaymentMethod
import com.stripe.android.paymentsheet.example.playground.settings.ExternalPaymentMethodSettingsDefinition
import com.stripe.android.paymentsheet.example.playground.settings.ExternalPaymentMethodType
import com.stripe.android.paymentsheet.example.playground.settings.PaymentMethodOrderSettingsDefinition
import com.stripe.android.paymentsheet.example.playground.settings.SupportedPaymentMethodsSettingsDefinition
import com.stripe.android.test.core.TestParameters
Expand All @@ -18,7 +19,7 @@ internal class TestExternalPaymentMethod : BasePlaygroundTest() {
private val testParameters = TestParameters.create(
paymentMethodCode = externalFawryCode,
) { settings ->
settings[ExternalPaymentMethodSettingsDefinition] = externalFawryCode
settings[ExternalPaymentMethodSettingsDefinition] = ExternalPaymentMethodType.Fawry
settings[PaymentMethodOrderSettingsDefinition] = externalFawryCode
settings[SupportedPaymentMethodsSettingsDefinition] = listOf(
PaymentMethod.Type.Card,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,119 @@ import com.stripe.android.paymentsheet.PaymentSheet
import com.stripe.android.paymentsheet.example.playground.PlaygroundState

internal object ExternalPaymentMethodSettingsDefinition :
PlaygroundSettingDefinition<String>,
PlaygroundSettingDefinition.Saveable<String>,
PlaygroundSettingDefinition.Displayable<String> {
override val key: String = "externalPaymentMethods"
PlaygroundSettingDefinition<ExternalPaymentMethodType>,
PlaygroundSettingDefinition.Saveable<ExternalPaymentMethodType> by EnumSaveable(
key = "externalPaymentMethods",
values = ExternalPaymentMethodType.entries.toTypedArray(),
defaultValue = ExternalPaymentMethodType.Off,
),
PlaygroundSettingDefinition.Displayable<ExternalPaymentMethodType> {
override val displayName: String = "External payment methods"
override val options: List<PlaygroundSettingDefinition.Displayable.Option<String>> = emptyList()
override val defaultValue: String = ""
override val options: List<PlaygroundSettingDefinition.Displayable.Option<ExternalPaymentMethodType>> =
ExternalPaymentMethodType.entries.map {
option(it.displayName, it)
}

override fun convertToValue(value: String): ExternalPaymentMethodType {
val possibleExternalPaymentMethods = value.split(",")

override fun convertToValue(value: String): String = value
return ExternalPaymentMethodType.entries.find { it.externalPaymentMethods == possibleExternalPaymentMethods }
?: ExternalPaymentMethodType.Off
}

override fun convertToString(value: String): String = value
override fun convertToString(value: ExternalPaymentMethodType): String = value.value

override fun configure(
value: String,
value: ExternalPaymentMethodType,
configurationBuilder: PaymentSheet.Configuration.Builder,
playgroundState: PlaygroundState,
configurationData: PlaygroundSettingDefinition.PaymentSheetConfigurationData
) {
if (value.isNotEmpty()) {
configurationBuilder.externalPaymentMethods(value.split(",").map { it.trim() })
when (value) {
ExternalPaymentMethodType.Off -> Unit
ExternalPaymentMethodType.Fawry,
ExternalPaymentMethodType.PayPalAndVenmo,
ExternalPaymentMethodType.All ->
configurationBuilder.externalPaymentMethods(value.externalPaymentMethods)
}
}
}

enum class ExternalPaymentMethodType(val externalPaymentMethods: List<String>, val displayName: String) : ValueEnum {
All(externalPaymentMethods = allExternalPaymentMethods, displayName = "All"),
Fawry(externalPaymentMethods = listOf("external_fawry"), displayName = "Fawry"),
PayPalAndVenmo(
externalPaymentMethods = listOf("external_paypal", "external_venmo"),
displayName = "PayPal and Venmo"
),
Off(externalPaymentMethods = emptyList(), displayName = "Off"),
;

override val value: String
get() = this.externalPaymentMethods.joinToString(",")
}

private val allExternalPaymentMethods = listOf(
"external_aplazame",
"external_atone",
"external_au_easy_payment",
"external_au_pay",
"external_azupay",
"external_bank_pay",
"external_benefit",
"external_billie",
"external_bitcash",
"external_bizum",
"external_catch",
"external_dapp",
"external_dbarai",
"external_divido",
"external_famipay",
"external_fawry",
"external_fonix",
"external_gcash",
"external_grabpay_later",
"external_interac",
"external_iwocapay",
"external_kbc",
"external_knet",
"external_kriya",
"external_laybuy",
"external_line_pay",
"external_merpay",
"external_momo",
"external_mondu",
"external_net_cash",
"external_nexi_pay",
"external_octopus",
"external_oney",
"external_paidy",
"external_pay_easy",
"external_payconiq",
"external_paypal",
"external_paypay",
"external_paypo",
"external_paysafecard",
"external_picpay",
"external_planpay",
"external_pledg",
"external_postepay",
"external_postfinance",
"external_rakuten_pay",
"external_samsung_pay",
"external_satispay",
"external_scalapay",
"external_sequra",
"external_sezzle",
"external_shopback_paylater",
"external_softbank_carrier_payment",
"external_tabby",
"external_tng_ewallet",
"external_toss_pay",
"external_truelayer",
"external_twint",
"external_venmo",
"external_walley",
"external_webmoney",
"external_younited_pay",
)

0 comments on commit 861f779

Please sign in to comment.