From f62e0dff722082f6fb60641844a55cc8e5c5ebd2 Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Fri, 29 Nov 2024 20:25:23 +0700 Subject: [PATCH 01/12] Add logic to remove existing subscription data when converting product type to non-subscription. --- .../ui/products/details/ProductDetailViewModel.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt index daaaef496d41..c7e12e435489 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt @@ -1226,6 +1226,13 @@ class ProductDetailViewModel @Inject constructor( productType: ProductType, isVirtual: Boolean ) { + // Reset subscription data that might have existed to null when changing type to non-subscription product type. + // This avoids any Product Details card conflicts after conversion (e.g: displaying Subscription-related info + // in a non-subscription product) + if (productType != ProductType.SUBSCRIPTION) { + viewState = viewState.copy(subscriptionDraft = null) + } + updateProductDraft(type = productType.value, isVirtual = isVirtual) viewState.productAggregateDraft?.let { productAggregateDraft -> @@ -2731,7 +2738,7 @@ class ProductDetailViewModel @Inject constructor( } ) - fun copy(subscriptionDraft: SubscriptionDetails) = copy( + fun copy(subscriptionDraft: SubscriptionDetails?) = copy( productAggregateDraft = productAggregateDraft?.copy(subscription = subscriptionDraft) ) From ba6e1c63650092b619ac0196221e65fd0d582ca8 Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Mon, 2 Dec 2024 12:00:25 +0700 Subject: [PATCH 02/12] Group logic with existing subscription handling and add comments to clarify. --- .../details/ProductDetailViewModel.kt | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt index c7e12e435489..553c75c000ce 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt @@ -1226,23 +1226,25 @@ class ProductDetailViewModel @Inject constructor( productType: ProductType, isVirtual: Boolean ) { - // Reset subscription data that might have existed to null when changing type to non-subscription product type. - // This avoids any Product Details card conflicts after conversion (e.g: displaying Subscription-related info - // in a non-subscription product) - if (productType != ProductType.SUBSCRIPTION) { - viewState = viewState.copy(subscriptionDraft = null) - } - updateProductDraft(type = productType.value, isVirtual = isVirtual) viewState.productAggregateDraft?.let { productAggregateDraft -> - if (productType == ProductType.SUBSCRIPTION && productAggregateDraft.subscription == null) { - viewState = viewState.copy( - subscriptionDraft = ProductHelper.getDefaultSubscriptionDetails().copy( - price = productAggregateDraft.product.regularPrice - ) - ) - } + viewState = viewState.copy( + subscriptionDraft = when { + // If converting to subscription product, set the default subscription details + productType == ProductType.SUBSCRIPTION && productAggregateDraft.subscription == null -> + ProductHelper.getDefaultSubscriptionDetails().copy( + price = productAggregateDraft.product.regularPrice + ) + + // If converting to non-subscription products, reset subscription data that might have existed + // (e.g: if the original product is of subscription type). + // This avoids any Product Details card conflicts that can happen after conversion. + productType !in setOf(ProductType.SUBSCRIPTION, ProductType.VARIABLE_SUBSCRIPTION) -> null + + else -> viewState.subscriptionDraft + } + ) } } From 6aed151ffbad4968e1c2ee202f15eebe2850b928 Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Mon, 2 Dec 2024 12:09:43 +0700 Subject: [PATCH 03/12] Add unit tests related to subscription product conversions. --- .../android/ui/products/ProductTestUtils.kt | 16 ++++ .../details/ProductDetailViewModelTest.kt | 76 +++++++++++++++++++ 2 files changed, 92 insertions(+) diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt index ad18e4a54fe7..cdd73bc1a453 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt @@ -5,10 +5,13 @@ import com.woocommerce.android.model.ProductAttribute import com.woocommerce.android.model.ProductCategory import com.woocommerce.android.model.ProductTag import com.woocommerce.android.model.ProductVariation +import com.woocommerce.android.model.SubscriptionDetails +import com.woocommerce.android.model.SubscriptionPeriod import com.woocommerce.android.model.toAppModel import com.woocommerce.android.ui.products.ProductStatus.DRAFT import org.wordpress.android.fluxc.model.WCProductModel import org.wordpress.android.fluxc.model.WCProductVariationModel +import java.math.BigDecimal import java.sql.Date import java.time.Instant @@ -196,4 +199,17 @@ object ProductTestUtils { return this } } + + fun generateProductSubscriptionDetails() = SubscriptionDetails( + price = BigDecimal.TEN, + period = SubscriptionPeriod.Month, + periodInterval = 1, + length = null, + signUpFee = null, + trialPeriod = null, + trialLength = null, + oneTimeShipping = true, + paymentsSyncDate = null + ) + } diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt index 1eba481f348e..693995e2bbed 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt @@ -19,6 +19,7 @@ import com.woocommerce.android.ui.media.MediaFileUploadHandler import com.woocommerce.android.ui.products.ParameterRepository import com.woocommerce.android.ui.products.ProductStatus import com.woocommerce.android.ui.products.ProductTestUtils +import com.woocommerce.android.ui.products.ProductType import com.woocommerce.android.ui.products.addons.AddonRepository import com.woocommerce.android.ui.products.categories.ProductCategoriesRepository import com.woocommerce.android.ui.products.models.ProductProperty @@ -1243,6 +1244,81 @@ class ProductDetailViewModelTest : BaseUnitTest() { verify(productRepository, never()).fetchProductPassword(any()) } + @Test + fun `When converting from subscription to simple product, subscription data is cleared`() = testBlocking { + // GIVEN + val subscriptionProduct = productAggregate.copy( + product = productAggregate.product.copy( + type = ProductType.SUBSCRIPTION.value + ), + subscription = ProductTestUtils.generateProductSubscriptionDetails() + ) + doReturn(subscriptionProduct).whenever(productRepository).getProductAggregate(any()) + viewModel.productDetailViewStateData.observeForever { _, _ -> } + viewModel.start() + + // Verify initial state has subscription data + Assertions.assertThat(viewModel.getProduct().subscriptionDraft).isNotNull() + + // WHEN + viewModel.onProductTypeChanged(ProductType.SIMPLE, false) + + // THEN + Assertions.assertThat(viewModel.getProduct().subscriptionDraft).isNull() + } + + @Test + fun `When converting from simple to subscription product, default subscription data is added`() = testBlocking { + // GIVEN + val simpleProduct = productAggregate.copy( + product = productAggregate.product.copy( + type = ProductType.SIMPLE.value, + regularPrice = BigDecimal("10.00") + ), + subscription = null + ) + doReturn(simpleProduct).whenever(productRepository).getProductAggregate(any()) + viewModel.productDetailViewStateData.observeForever { _, _ -> } + viewModel.start() + + // Verify initial state has no subscription data + Assertions.assertThat(viewModel.getProduct().subscriptionDraft).isNull() + + // WHEN + viewModel.onProductTypeChanged(ProductType.SUBSCRIPTION, false) + + // THEN + viewModel.getProduct().subscriptionDraft?.let { + Assertions.assertThat(it.price).isEqualTo(simpleProduct.product.regularPrice) + Assertions.assertThat(it.period) + .isEqualTo(ProductTestUtils.generateProductSubscriptionDetails().period) + Assertions.assertThat(it.periodInterval) + .isEqualTo(ProductTestUtils.generateProductSubscriptionDetails().periodInterval) + } ?: Assertions.fail("Subscription draft should not be null") + } + + @Test + fun `When converting from simple subscription to variable subscription product, subscription data is preserved`() = testBlocking { + // GIVEN + val subscriptionProduct = productAggregate.copy( + product = productAggregate.product.copy( + type = ProductType.SUBSCRIPTION.value + ), + subscription = ProductTestUtils.generateProductSubscriptionDetails() + ) + doReturn(subscriptionProduct).whenever(productRepository).getProductAggregate(any()) + viewModel.productDetailViewStateData.observeForever { _, _ -> } + viewModel.start() + + val originalSubscription = viewModel.getProduct().subscriptionDraft + + // WHEN + viewModel.onProductTypeChanged(ProductType.VARIABLE_SUBSCRIPTION, false) + + // THEN + Assertions.assertThat(viewModel.getProduct().subscriptionDraft).isEqualTo(originalSubscription) + } + private val productsDraft get() = viewModel.productDetailViewStateData.liveData.value?.productDraft } From ae87485a0da8f2144f9d8369bfd38d9c660c3e2e Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Mon, 2 Dec 2024 12:43:12 +0700 Subject: [PATCH 04/12] Revert unneeded change. --- .../android/ui/products/details/ProductDetailViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt index 553c75c000ce..9f3588b33452 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt @@ -2740,7 +2740,7 @@ class ProductDetailViewModel @Inject constructor( } ) - fun copy(subscriptionDraft: SubscriptionDetails?) = copy( + fun copy(subscriptionDraft: SubscriptionDetails) = copy( productAggregateDraft = productAggregateDraft?.copy(subscription = subscriptionDraft) ) From 2461e4bccbaaf0553676d3a379630920fd28de54 Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Mon, 2 Dec 2024 12:47:54 +0700 Subject: [PATCH 05/12] Update release note --- RELEASE-NOTES.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 5372a30bcd7a..0c529ff9a2c2 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -5,6 +5,7 @@ ----- - [*] "One time shipping" label in Product Subscriptions now matches its availability state correctly. [https://github.com/woocommerce/woocommerce-android/pull/13021] - [*] "One time shipping" label should not be shown in Simple product after conversion from Subscriptions product. [https://github.com/woocommerce/woocommerce-android/pull/13032] +- [*] Fixed bug related to missing Shipping card in Product details when converting from Subscriptions to Simple product. [https://github.com/woocommerce/woocommerce-android/pull/13035] - [Internal] Refactored IPP Payment flow to allow customizing payment collection UI in POS [https://github.com/woocommerce/woocommerce-android/pull/13014] - [*] Blaze Campaign Intro screen now offers creating a new product if the site has no products yet [https://github.com/woocommerce/woocommerce-android/pull/13001] From 8f3233dbb26090c1c62579b218b9efadb3a77f91 Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Mon, 2 Dec 2024 12:48:57 +0700 Subject: [PATCH 06/12] Detekt fix --- .../com/woocommerce/android/ui/products/ProductTestUtils.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt index cdd73bc1a453..a38386b1425a 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt @@ -211,5 +211,4 @@ object ProductTestUtils { oneTimeShipping = true, paymentsSyncDate = null ) - } From 0f3e0c1b343366ab122914f993a568862f1973c4 Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Mon, 2 Dec 2024 13:06:54 +0700 Subject: [PATCH 07/12] Revert "Revert unneeded change." This reverts commit ae87485a0da8f2144f9d8369bfd38d9c660c3e2e. --- .../android/ui/products/details/ProductDetailViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt index 9f3588b33452..553c75c000ce 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModel.kt @@ -2740,7 +2740,7 @@ class ProductDetailViewModel @Inject constructor( } ) - fun copy(subscriptionDraft: SubscriptionDetails) = copy( + fun copy(subscriptionDraft: SubscriptionDetails?) = copy( productAggregateDraft = productAggregateDraft?.copy(subscription = subscriptionDraft) ) From 9719ffe075cd916ef9f26ef91e8e02f5100252aa Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Wed, 4 Dec 2024 16:25:51 +0700 Subject: [PATCH 08/12] Update release notes wording --- RELEASE-NOTES.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 0c529ff9a2c2..caf5c800c23f 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -5,7 +5,7 @@ ----- - [*] "One time shipping" label in Product Subscriptions now matches its availability state correctly. [https://github.com/woocommerce/woocommerce-android/pull/13021] - [*] "One time shipping" label should not be shown in Simple product after conversion from Subscriptions product. [https://github.com/woocommerce/woocommerce-android/pull/13032] -- [*] Fixed bug related to missing Shipping card in Product details when converting from Subscriptions to Simple product. [https://github.com/woocommerce/woocommerce-android/pull/13035] +- [*] Fixed a bug related to incorrect Shipping settings in Product details when converting from Subscriptions to Simple product. [https://github.com/woocommerce/woocommerce-android/pull/13035] - [Internal] Refactored IPP Payment flow to allow customizing payment collection UI in POS [https://github.com/woocommerce/woocommerce-android/pull/13014] - [*] Blaze Campaign Intro screen now offers creating a new product if the site has no products yet [https://github.com/woocommerce/woocommerce-android/pull/13001] From 1170a5896ac9a5b5555fd56e417a20cc231a6db7 Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Wed, 4 Dec 2024 16:48:59 +0700 Subject: [PATCH 09/12] Remove unneeded observe forever. --- .../android/ui/products/details/ProductDetailViewModelTest.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt index 693995e2bbed..2126a03c92a6 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt @@ -1254,7 +1254,6 @@ class ProductDetailViewModelTest : BaseUnitTest() { subscription = ProductTestUtils.generateProductSubscriptionDetails() ) doReturn(subscriptionProduct).whenever(productRepository).getProductAggregate(any()) - viewModel.productDetailViewStateData.observeForever { _, _ -> } viewModel.start() // Verify initial state has subscription data @@ -1278,7 +1277,6 @@ class ProductDetailViewModelTest : BaseUnitTest() { subscription = null ) doReturn(simpleProduct).whenever(productRepository).getProductAggregate(any()) - viewModel.productDetailViewStateData.observeForever { _, _ -> } viewModel.start() // Verify initial state has no subscription data @@ -1307,7 +1305,6 @@ class ProductDetailViewModelTest : BaseUnitTest() { subscription = ProductTestUtils.generateProductSubscriptionDetails() ) doReturn(subscriptionProduct).whenever(productRepository).getProductAggregate(any()) - viewModel.productDetailViewStateData.observeForever { _, _ -> } viewModel.start() val originalSubscription = viewModel.getProduct().subscriptionDraft From a5c35e4d34fb7f3356ffb7d81adb2819d4da34cc Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Wed, 4 Dec 2024 16:54:51 +0700 Subject: [PATCH 10/12] Update existing unit tests that also doesn't need observeForever. --- .../ui/products/details/ProductDetailViewModelTest.kt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt index 2126a03c92a6..e7bff197d93d 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt @@ -978,7 +978,6 @@ class ProductDetailViewModelTest : BaseUnitTest() { doReturn( productAggregate.copy(product = productAggregate.product.copy(regularPrice = BigDecimal(99))) ).whenever(productRepository).getProductAggregate(any()) - viewModel.productDetailViewStateData.observeForever { _, _ -> } viewModel.start() viewModel.updateProductDraft(sku = "E9999999") @@ -991,7 +990,6 @@ class ProductDetailViewModelTest : BaseUnitTest() { doReturn( productAggregate.copy(product = productAggregate.product.copy(salePrice = BigDecimal(99))) ).whenever(productRepository).getProductAggregate(any()) - viewModel.productDetailViewStateData.observeForever { _, _ -> } viewModel.start() viewModel.updateProductDraft(sku = "E9999999") @@ -1004,7 +1002,6 @@ class ProductDetailViewModelTest : BaseUnitTest() { doReturn( productAggregate.copy(product = productAggregate.product.copy(regularPrice = BigDecimal(99))) ).whenever(productRepository).getProductAggregate(any()) - viewModel.productDetailViewStateData.observeForever { _, _ -> } viewModel.start() viewModel.updateProductDraft(regularPrice = BigDecimal(0)) @@ -1017,7 +1014,6 @@ class ProductDetailViewModelTest : BaseUnitTest() { doReturn( productAggregate.copy(product = productAggregate.product.copy(regularPrice = BigDecimal(99))) ).whenever(productRepository).getProductAggregate(any()) - viewModel.productDetailViewStateData.observeForever { _, _ -> } viewModel.start() viewModel.updateProductDraft(salePrice = BigDecimal(0)) @@ -1030,7 +1026,6 @@ class ProductDetailViewModelTest : BaseUnitTest() { doReturn( productAggregate.copy(product = productAggregate.product.copy(regularPrice = BigDecimal(99))) ).whenever(productRepository).getProductAggregate(any()) - viewModel.productDetailViewStateData.observeForever { _, _ -> } viewModel.start() viewModel.updateProductDraft(regularPrice = null) @@ -1043,7 +1038,6 @@ class ProductDetailViewModelTest : BaseUnitTest() { doReturn( productAggregate.copy(product = productAggregate.product.copy(regularPrice = BigDecimal(99))) ).whenever(productRepository).getProductAggregate(any()) - viewModel.productDetailViewStateData.observeForever { _, _ -> } viewModel.start() viewModel.updateProductDraft(salePrice = null) From a3f8d357df1664da8e6e63c688ba1929b0823fe5 Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Wed, 4 Dec 2024 17:01:21 +0700 Subject: [PATCH 11/12] Use existing getDefaultSubscriptionDetails() function instead of making a new one. --- .../android/ui/products/ProductTestUtils.kt | 12 ------------ .../products/details/ProductDetailViewModelTest.kt | 9 +++++---- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt index a38386b1425a..9da1d5c76317 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt @@ -199,16 +199,4 @@ object ProductTestUtils { return this } } - - fun generateProductSubscriptionDetails() = SubscriptionDetails( - price = BigDecimal.TEN, - period = SubscriptionPeriod.Month, - periodInterval = 1, - length = null, - signUpFee = null, - trialPeriod = null, - trialLength = null, - oneTimeShipping = true, - paymentsSyncDate = null - ) } diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt index e7bff197d93d..8f0fe0ef672d 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/details/ProductDetailViewModelTest.kt @@ -17,6 +17,7 @@ import com.woocommerce.android.ui.blaze.IsBlazeEnabled import com.woocommerce.android.ui.customfields.CustomFieldsRepository import com.woocommerce.android.ui.media.MediaFileUploadHandler import com.woocommerce.android.ui.products.ParameterRepository +import com.woocommerce.android.ui.products.ProductHelper import com.woocommerce.android.ui.products.ProductStatus import com.woocommerce.android.ui.products.ProductTestUtils import com.woocommerce.android.ui.products.ProductType @@ -1245,7 +1246,7 @@ class ProductDetailViewModelTest : BaseUnitTest() { product = productAggregate.product.copy( type = ProductType.SUBSCRIPTION.value ), - subscription = ProductTestUtils.generateProductSubscriptionDetails() + subscription = ProductHelper.getDefaultSubscriptionDetails() ) doReturn(subscriptionProduct).whenever(productRepository).getProductAggregate(any()) viewModel.start() @@ -1283,9 +1284,9 @@ class ProductDetailViewModelTest : BaseUnitTest() { viewModel.getProduct().subscriptionDraft?.let { Assertions.assertThat(it.price).isEqualTo(simpleProduct.product.regularPrice) Assertions.assertThat(it.period) - .isEqualTo(ProductTestUtils.generateProductSubscriptionDetails().period) + .isEqualTo(ProductHelper.getDefaultSubscriptionDetails().period) Assertions.assertThat(it.periodInterval) - .isEqualTo(ProductTestUtils.generateProductSubscriptionDetails().periodInterval) + .isEqualTo(ProductHelper.getDefaultSubscriptionDetails().periodInterval) } ?: Assertions.fail("Subscription draft should not be null") } @@ -1296,7 +1297,7 @@ class ProductDetailViewModelTest : BaseUnitTest() { product = productAggregate.product.copy( type = ProductType.SUBSCRIPTION.value ), - subscription = ProductTestUtils.generateProductSubscriptionDetails() + subscription = ProductHelper.getDefaultSubscriptionDetails() ) doReturn(subscriptionProduct).whenever(productRepository).getProductAggregate(any()) viewModel.start() From 7f37411d983501485d84bd2dfa222ac8cef9df4d Mon Sep 17 00:00:00 2001 From: Hafiz Rahman Date: Wed, 4 Dec 2024 17:09:47 +0700 Subject: [PATCH 12/12] Detekt fix --- .../com/woocommerce/android/ui/products/ProductTestUtils.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt index 9da1d5c76317..ad18e4a54fe7 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/ProductTestUtils.kt @@ -5,13 +5,10 @@ import com.woocommerce.android.model.ProductAttribute import com.woocommerce.android.model.ProductCategory import com.woocommerce.android.model.ProductTag import com.woocommerce.android.model.ProductVariation -import com.woocommerce.android.model.SubscriptionDetails -import com.woocommerce.android.model.SubscriptionPeriod import com.woocommerce.android.model.toAppModel import com.woocommerce.android.ui.products.ProductStatus.DRAFT import org.wordpress.android.fluxc.model.WCProductModel import org.wordpress.android.fluxc.model.WCProductVariationModel -import java.math.BigDecimal import java.sql.Date import java.time.Instant