Skip to content

Commit 5ae8ff4

Browse files
Disable TTP for CIAB sites
1 parent 62cf99c commit 5ae8ff4

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/taptopay/TapToPayAvailabilityStatus.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package com.woocommerce.android.ui.payments.taptopay
33
import com.woocommerce.android.cardreader.config.CardReaderConfigForSupportedCountry
44
import com.woocommerce.android.cardreader.config.CardReaderConfigForUnsupportedCountry
55
import com.woocommerce.android.cardreader.connection.ReaderType
6+
import com.woocommerce.android.ciab.CIABAffectedFeature
7+
import com.woocommerce.android.ciab.CIABSiteGateKeeper
68
import com.woocommerce.android.tools.SelectedSite
79
import com.woocommerce.android.ui.payments.cardreader.CardReaderCountryConfigProvider
810
import com.woocommerce.android.util.DeviceFeatures
@@ -16,9 +18,11 @@ class TapToPayAvailabilityStatus @Inject constructor(
1618
private val systemVersionUtilsWrapper: SystemVersionUtilsWrapper,
1719
private val cardReaderCountryConfigProvider: CardReaderCountryConfigProvider,
1820
private val wooStore: WooCommerceStore,
21+
private val ciabSiteGateKeeper: CIABSiteGateKeeper
1922
) {
2023
operator fun invoke() =
2124
when {
25+
ciabSiteGateKeeper.isFeatureUnsupported(CIABAffectedFeature.WooPayments) -> Result.Hidden
2226
!systemVersionUtilsWrapper.isAtLeastR() -> Result.NotAvailable.SystemVersionNotSupported
2327
!deviceFeatures.isGooglePlayServicesAvailable() -> Result.NotAvailable.GooglePlayServicesNotAvailable
2428
!deviceFeatures.isNFCAvailable() -> Result.NotAvailable.NfcNotAvailable
@@ -38,6 +42,7 @@ class TapToPayAvailabilityStatus @Inject constructor(
3842

3943
sealed class Result {
4044
object Available : Result()
45+
object Hidden : Result()
4146
sealed class NotAvailable : Result() {
4247
object SystemVersionNotSupported : NotAvailable()
4348
object GooglePlayServicesNotAvailable : NotAvailable()

WooCommerce/src/test/kotlin/com/woocommerce/android/ui/payments/taptopay/TapToPayAvailabilityStatusTest.kt

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package com.woocommerce.android.ui.payments.taptopay
33
import com.woocommerce.android.cardreader.config.CardReaderConfigForCanada
44
import com.woocommerce.android.cardreader.config.CardReaderConfigForUSA
55
import com.woocommerce.android.cardreader.config.CardReaderConfigForUnsupportedCountry
6+
import com.woocommerce.android.ciab.CIABAffectedFeature
7+
import com.woocommerce.android.ciab.CIABSiteGateKeeper
68
import com.woocommerce.android.tools.SelectedSite
79
import com.woocommerce.android.ui.payments.cardreader.CardReaderCountryConfigProvider
810
import com.woocommerce.android.util.DeviceFeatures
@@ -30,15 +32,18 @@ class TapToPayAvailabilityStatusTest {
3032
private val wooStore: WooCommerceStore = mock {
3133
on { getStoreCountryCode(siteModel) }.thenReturn("US")
3234
}
33-
3435
private val deviceFeatures = mock<DeviceFeatures>()
36+
private val ciabSiteGateKeeper: CIABSiteGateKeeper = mock {
37+
on { isFeatureUnsupported(CIABAffectedFeature.WooPayments) }.thenReturn(false)
38+
}
3539

3640
private val availabilityStatus = TapToPayAvailabilityStatus(
37-
selectedSite,
38-
deviceFeatures,
39-
systemVersionUtilsWrapper,
40-
cardReaderCountryConfigProvider,
41-
wooStore,
41+
selectedSite = selectedSite,
42+
deviceFeatures = deviceFeatures,
43+
systemVersionUtilsWrapper = systemVersionUtilsWrapper,
44+
cardReaderCountryConfigProvider = cardReaderCountryConfigProvider,
45+
wooStore = wooStore,
46+
ciabSiteGateKeeper = ciabSiteGateKeeper
4247
)
4348

4449
@Test
@@ -96,4 +101,16 @@ class TapToPayAvailabilityStatusTest {
96101

97102
assertThat(result).isEqualTo(TapToPayAvailabilityStatus.Result.Available)
98103
}
104+
105+
@Test
106+
fun `given CIAB blocks WooPayments, when invoking, then tpp hidden returned`() {
107+
whenever(deviceFeatures.isNFCAvailable()).thenReturn(true)
108+
whenever(deviceFeatures.isGooglePlayServicesAvailable()).thenReturn(true)
109+
whenever(systemVersionUtilsWrapper.isAtLeastR()).thenReturn(true)
110+
whenever(ciabSiteGateKeeper.isFeatureUnsupported(CIABAffectedFeature.WooPayments)).thenReturn(true)
111+
112+
val result = availabilityStatus.invoke()
113+
114+
assertThat(result).isEqualTo(TapToPayAvailabilityStatus.Result.Hidden)
115+
}
99116
}

0 commit comments

Comments
 (0)