From 00401b541a39d9b609954c47b7179baaf6b4d460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81sar=20Vargas=20Casaseca?= Date: Fri, 13 Sep 2024 14:42:38 +0200 Subject: [PATCH 1/3] Do not use ignore case when renaming attributes --- .../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 9e0591f61ae..7fe53400f37 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 @@ -1664,7 +1664,7 @@ class ProductDetailViewModel @Inject constructor( fun renameAttributeInDraft(attributeId: Long, oldAttributeName: String, newAttributeName: String): Boolean { // first make sure an attribute with the new name doesn't already exist in the draft productDraftAttributes.forEach { - if (it.name.equals(newAttributeName, ignoreCase = true)) { + if (it.name.equals(newAttributeName)) { triggerEvent(ShowSnackbar(R.string.product_attribute_name_already_exists)) return false } From d0720ba461516f48aeb3c6a1925f410ec821a31a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81sar=20Vargas=20Casaseca?= Date: Fri, 13 Sep 2024 16:08:13 +0200 Subject: [PATCH 2/3] Add unit test --- .../details/ProductDetailViewModelTest.kt | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) 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 a2aac025f4a..d29d4076a31 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 @@ -8,6 +8,7 @@ import com.woocommerce.android.analytics.AnalyticsTrackerWrapper import com.woocommerce.android.extensions.takeIfNotEqualTo import com.woocommerce.android.media.MediaFilesRepository import com.woocommerce.android.media.ProductImagesServiceWrapper +import com.woocommerce.android.model.ProductAttribute import com.woocommerce.android.model.ProductVariation import com.woocommerce.android.tools.NetworkStatus import com.woocommerce.android.tools.SelectedSite @@ -742,6 +743,37 @@ class ProductDetailViewModelTest : BaseUnitTest() { Assertions.assertThat(draftTerms[1]).isEqualTo(firstTerm) } + @Test + fun `Re-name attribute terms is saved correctly`() = testBlocking { + viewModel.productDetailViewStateData.observeForever { _, _ -> } + val attributeName = "name" + val newName = attributeName.replaceFirstChar { it.uppercase() } + + val attributes = ArrayList() + attributes.add( + ProductAttribute( + id = 1, + name = attributeName, + isVariation = true, + isVisible = true, + terms = ArrayList().also { + it.add("one") + } + ) + ) + + val storedProduct = product.copy( + attributes = attributes + ) + doReturn(storedProduct).whenever(productRepository).getProductAsync(any()) + + viewModel.start() + viewModel.renameAttributeInDraft(1, attributeName, newName) + + val draftAttribute = viewModel.productDraftAttributes[0] + Assertions.assertThat(draftAttribute.name).isEqualTo(newName) + } + /** * Protection for a race condition bug in Variations. * From 5a5483588476b14ed935877ace95f64ef0f4c85c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81sar=20Vargas=20Casaseca?= Date: Fri, 13 Sep 2024 16:48:40 +0200 Subject: [PATCH 3/3] Add release note --- RELEASE-NOTES.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 1ecd27f90e9..5477fbe0896 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -4,6 +4,7 @@ 20.5 ----- +- [*] Fixes a bug that prevented users to rename the Product Variation Attributes to because of case insensitive checks [https://github.com/woocommerce/woocommerce-android/pull/12608] 20.4