Skip to content

Commit e0fdd12

Browse files
Hide IPP learn more section for CIAB sites
1 parent 5ae8ff4 commit e0fdd12

File tree

4 files changed

+46
-17
lines changed

4 files changed

+46
-17
lines changed

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/methodselection/SelectPaymentMethodFragment.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ class SelectPaymentMethodFragment : BaseFragment(R.layout.fragment_select_paymen
126126
with(binding.learnMoreIppPaymentMethodsTv) {
127127
learnMore.setOnClickListener { state.learnMoreIpp.onClick.invoke() }
128128
UiHelpers.setTextOrHide(binding.learnMoreIppPaymentMethodsTv.learnMore, state.learnMoreIpp.label)
129+
learnMore.isVisible = state.learnMoreIpp.isVisible
129130
}
130131
}
131132

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/methodselection/SelectPaymentMethodViewModel.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import com.woocommerce.android.analytics.AnalyticsTracker.Companion.VALUE_SIMPLE
1111
import com.woocommerce.android.analytics.AnalyticsTracker.Companion.VALUE_SIMPLE_PAYMENTS_COLLECT_CASH
1212
import com.woocommerce.android.analytics.AnalyticsTracker.Companion.VALUE_SIMPLE_PAYMENTS_COLLECT_LINK
1313
import com.woocommerce.android.cardreader.internal.payments.PaymentUtils
14+
import com.woocommerce.android.ciab.CIABAffectedFeature
15+
import com.woocommerce.android.ciab.CIABSiteGateKeeper
1416
import com.woocommerce.android.extensions.CASH_ON_DELIVERY_PAYMENT_TYPE
1517
import com.woocommerce.android.extensions.isNotNullOrEmpty
1618
import com.woocommerce.android.model.Order
@@ -78,6 +80,7 @@ class SelectPaymentMethodViewModel @Inject constructor(
7880
private val cardReaderTrackingInfoKeeper: CardReaderTrackingInfoKeeper,
7981
private val paymentsUtils: PaymentUtils,
8082
private val logOrderCurrencyMismatchWithSiteSettings: SelectPaymentMethodCurrencyMissMatchLog,
83+
private val ciabSiteGateKeeper: CIABSiteGateKeeper
8184
) : ScopedViewModel(savedState) {
8285
private val navArgs: SelectPaymentMethodFragmentArgs by savedState.navArgs()
8386

@@ -173,7 +176,8 @@ class SelectPaymentMethodViewModel @Inject constructor(
173176
R.string.card_reader_connect_learn_more,
174177
containsHtml = true
175178
),
176-
onClick = ::onLearnMoreIppClicked
179+
onClick = ::onLearnMoreIppClicked,
180+
isVisible = ciabSiteGateKeeper.isFeatureSupported(CIABAffectedFeature.WooPayments)
177181
)
178182
)
179183
}

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/methodselection/SelectPaymentMethodViewState.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ sealed class SelectPaymentMethodViewState {
3030

3131
data class LearnMoreIpp(
3232
val label: UiString,
33+
val isVisible: Boolean,
3334
val onClick: () -> Unit,
3435
)
3536
}

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

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package com.woocommerce.android.ui.payments
33
import com.woocommerce.android.AppUrls
44
import com.woocommerce.android.R
55
import com.woocommerce.android.cardreader.internal.payments.PaymentUtils
6+
import com.woocommerce.android.ciab.CIABAffectedFeature
7+
import com.woocommerce.android.ciab.CIABSiteGateKeeper
68
import com.woocommerce.android.extensions.CASH_ON_DELIVERY_PAYMENT_TYPE
79
import com.woocommerce.android.model.Order
810
import com.woocommerce.android.model.OrderMapper
@@ -45,6 +47,7 @@ import kotlinx.coroutines.test.runTest
4547
import org.assertj.core.api.Assertions.assertThat
4648
import org.junit.Test
4749
import org.mockito.kotlin.any
50+
import org.mockito.kotlin.doReturn
4851
import org.mockito.kotlin.eq
4952
import org.mockito.kotlin.mock
5053
import org.mockito.kotlin.never
@@ -113,6 +116,9 @@ class SelectPaymentMethodViewModelTest : BaseUnitTest() {
113116
private val paymentsUtils: PaymentUtils = mock()
114117
private val cardReaderTrackingInfoKeeper: CardReaderTrackingInfoKeeper = mock()
115118
private val logOrderCurrencyMismatchWithSiteSettings = mock<SelectPaymentMethodCurrencyMissMatchLog>()
119+
private val ciabSiteGateKeeper: CIABSiteGateKeeper = mock {
120+
on { isFeatureSupported(CIABAffectedFeature.WooPayments) } doReturn true
121+
}
116122

117123
@Test
118124
fun `given hub flow, when view model init, then navigate to hub flow emitted`() = testBlocking {
@@ -1190,24 +1196,41 @@ class SelectPaymentMethodViewModelTest : BaseUnitTest() {
11901196
)
11911197
}
11921198

1199+
@Test
1200+
fun `given WooPayments unsupported by CIAB, when view model initialized, then hide IPP learn more link`() =
1201+
testBlocking {
1202+
// GIVEN
1203+
whenever(ciabSiteGateKeeper.isFeatureSupported(CIABAffectedFeature.WooPayments)).thenReturn(false)
1204+
1205+
// WHEN
1206+
val viewModel = initViewModel(Payment(1L, ORDER))
1207+
1208+
// THEN
1209+
val state = (viewModel.viewStateData.value as Success).learnMoreIpp
1210+
assertThat(state.isVisible).isFalse()
1211+
}
1212+
11931213
private fun initViewModel(cardReaderFlowParam: CardReaderFlowParam): SelectPaymentMethodViewModel {
11941214
return SelectPaymentMethodViewModel(
1195-
SelectPaymentMethodFragmentArgs(cardReaderFlowParam = cardReaderFlowParam).toSavedStateHandle(),
1196-
selectedSite,
1197-
orderStore,
1198-
gatewayStore,
1199-
coroutinesTestRule.testDispatchers,
1200-
networkStatus,
1201-
currencyFormatter,
1202-
wooCommerceStore,
1203-
orderMapper,
1204-
cardPaymentCollectibilityChecker,
1205-
learnMoreUrlProvider,
1206-
paymentsFlowTracker,
1207-
tapToPayAvailabilityStatus,
1208-
cardReaderTrackingInfoKeeper,
1209-
paymentsUtils,
1210-
logOrderCurrencyMismatchWithSiteSettings,
1215+
savedState = SelectPaymentMethodFragmentArgs(
1216+
cardReaderFlowParam = cardReaderFlowParam
1217+
).toSavedStateHandle(),
1218+
selectedSite = selectedSite,
1219+
orderStore = orderStore,
1220+
gatewayStore = gatewayStore,
1221+
dispatchers = coroutinesTestRule.testDispatchers,
1222+
networkStatus = networkStatus,
1223+
currencyFormatter = currencyFormatter,
1224+
wooCommerceStore = wooCommerceStore,
1225+
orderMapper = orderMapper,
1226+
cardPaymentCollectibilityChecker = cardPaymentCollectibilityChecker,
1227+
learnMoreUrlProvider = learnMoreUrlProvider,
1228+
paymentsFlowTracker = paymentsFlowTracker,
1229+
tapToPayAvailabilityStatus = tapToPayAvailabilityStatus,
1230+
cardReaderTrackingInfoKeeper = cardReaderTrackingInfoKeeper,
1231+
paymentsUtils = paymentsUtils,
1232+
logOrderCurrencyMismatchWithSiteSettings = logOrderCurrencyMismatchWithSiteSettings,
1233+
ciabSiteGateKeeper = ciabSiteGateKeeper
12111234
)
12121235
}
12131236

0 commit comments

Comments
 (0)