From 61e420eb7d50956aa82a0f736653bd282947e409 Mon Sep 17 00:00:00 2001 From: samiuelson Date: Mon, 20 May 2024 13:27:08 +0200 Subject: [PATCH 1/3] Add check if plugin setup is completed --- .../com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt | 7 ++++++- .../woocommerce/android/ui/woopos/IsWooPosEnabledTest.kt | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt index 3bac3fd3135..0f62133afd9 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt @@ -3,6 +3,7 @@ package com.woocommerce.android.ui.woopos import com.woocommerce.android.tools.SelectedSite import com.woocommerce.android.ui.payments.GetActivePaymentsPlugin import com.woocommerce.android.util.IsWindowClassExpandedAndBigger +import org.wordpress.android.fluxc.model.payments.inperson.WCPaymentAccountResult import org.wordpress.android.fluxc.store.WCInPersonPaymentsStore import org.wordpress.android.fluxc.store.WCInPersonPaymentsStore.InPersonPaymentsPluginType.WOOCOMMERCE_PAYMENTS import javax.inject.Inject @@ -33,7 +34,11 @@ class IsWooPosEnabled @Inject constructor( countryCode.lowercase() == "us" && ippPlugin == WOOCOMMERCE_PAYMENTS && paymentAccount.storeCurrencies.default.lowercase() == "usd" && - isWindowSizeExpandedAndBigger() + isWindowSizeExpandedAndBigger() && + isPluginSetupCompleted(paymentAccount) ).also { cachedResult = it } } + + private fun isPluginSetupCompleted(paymentAccount: WCPaymentAccountResult): Boolean = + paymentAccount.status == WCPaymentAccountResult.WCPaymentAccountStatus.COMPLETE } diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabledTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabledTest.kt index 684827174f8..ed75fbd4021 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabledTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabledTest.kt @@ -86,6 +86,13 @@ class IsWooPosEnabledTest : BaseUnitTest() { assertFalse(sut()) } + @Test + fun `given woo payments setup not completed, then return false`() = testBlocking { + val result = buildPaymentAccountResult(status = WCPaymentAccountResult.WCPaymentAccountStatus.NO_ACCOUNT) + whenever(ippStore.loadAccount(any(), any())).thenReturn(result) + assertFalse(sut()) + } + @Test fun `given big enough screen, woo payments enabled, USD currency and store in the US, then return true`() = testBlocking { val result = buildPaymentAccountResult(defaultCurrency = "USD", countryCode = "US", status = COMPLETE) From 9c0dd2bfc9fa52e101359ba884df9ca373e29264 Mon Sep 17 00:00:00 2001 From: samiuelson Date: Wed, 29 May 2024 20:43:45 +0200 Subject: [PATCH 2/3] Update paymentAccount.status requirement --- .../woocommerce/android/ui/woopos/IsWooPosEnabled.kt | 7 ++++--- .../android/ui/woopos/IsWooPosEnabledTest.kt | 10 +++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt index 0f62133afd9..f6dd6b96e0c 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt @@ -35,10 +35,11 @@ class IsWooPosEnabled @Inject constructor( ippPlugin == WOOCOMMERCE_PAYMENTS && paymentAccount.storeCurrencies.default.lowercase() == "usd" && isWindowSizeExpandedAndBigger() && - isPluginSetupCompleted(paymentAccount) + isPluginSetupEnabled(paymentAccount) ).also { cachedResult = it } } - private fun isPluginSetupCompleted(paymentAccount: WCPaymentAccountResult): Boolean = - paymentAccount.status == WCPaymentAccountResult.WCPaymentAccountStatus.COMPLETE + private fun isPluginSetupEnabled(paymentAccount: WCPaymentAccountResult): Boolean = + paymentAccount.status == WCPaymentAccountResult.WCPaymentAccountStatus.COMPLETE || + paymentAccount.status == WCPaymentAccountResult.WCPaymentAccountStatus.ENABLED } diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabledTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabledTest.kt index ed75fbd4021..41be32310be 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabledTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabledTest.kt @@ -12,6 +12,7 @@ import org.mockito.kotlin.whenever import org.wordpress.android.fluxc.model.SiteModel import org.wordpress.android.fluxc.model.payments.inperson.WCPaymentAccountResult import org.wordpress.android.fluxc.model.payments.inperson.WCPaymentAccountResult.WCPaymentAccountStatus.COMPLETE +import org.wordpress.android.fluxc.model.payments.inperson.WCPaymentAccountResult.WCPaymentAccountStatus.ENABLED import org.wordpress.android.fluxc.model.payments.inperson.WCPaymentAccountResult.WCPaymentAccountStatus.StoreCurrencies import org.wordpress.android.fluxc.network.rest.wpcom.wc.WooResult import org.wordpress.android.fluxc.store.WCInPersonPaymentsStore @@ -87,7 +88,7 @@ class IsWooPosEnabledTest : BaseUnitTest() { } @Test - fun `given woo payments setup not completed, then return false`() = testBlocking { + fun `given woo payments setup not completed or enabled, then return false`() = testBlocking { val result = buildPaymentAccountResult(status = WCPaymentAccountResult.WCPaymentAccountStatus.NO_ACCOUNT) whenever(ippStore.loadAccount(any(), any())).thenReturn(result) assertFalse(sut()) @@ -100,6 +101,13 @@ class IsWooPosEnabledTest : BaseUnitTest() { assertTrue(sut()) } + @Test + fun `given big enough screen, woo payments enabled, USD currency, store in the US, and status enabled, then return true`() = testBlocking { + val result = buildPaymentAccountResult(defaultCurrency = "USD", countryCode = "US", status = ENABLED) + whenever(ippStore.loadAccount(any(), any())).thenReturn(result) + assertTrue(sut()) + } + private fun buildPaymentAccountResult( status: WCPaymentAccountResult.WCPaymentAccountStatus = COMPLETE, countryCode: String = "US", From bab839edd74694b532a0e72ea2bbf0b567c1e205 Mon Sep 17 00:00:00 2001 From: samiuelson Date: Wed, 29 May 2024 20:53:08 +0200 Subject: [PATCH 3/3] Fix detekt complaints --- .../kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt index f6dd6b96e0c..30d6b6ef477 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/IsWooPosEnabled.kt @@ -41,5 +41,5 @@ class IsWooPosEnabled @Inject constructor( private fun isPluginSetupEnabled(paymentAccount: WCPaymentAccountResult): Boolean = paymentAccount.status == WCPaymentAccountResult.WCPaymentAccountStatus.COMPLETE || - paymentAccount.status == WCPaymentAccountResult.WCPaymentAccountStatus.ENABLED + paymentAccount.status == WCPaymentAccountResult.WCPaymentAccountStatus.ENABLED }