From ccaccd558e2ac8f417da3137b13ec5a2b03084a4 Mon Sep 17 00:00:00 2001 From: Alejo Date: Wed, 26 Feb 2025 15:12:23 -0600 Subject: [PATCH 1/7] add destination address data class --- ...riginViewModel.kt => WooShippingEditAddressViewModel.kt} | 6 ++++++ 1 file changed, 6 insertions(+) rename WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/{origin/WooShippingEditOriginViewModel.kt => WooShippingEditAddressViewModel.kt} (99%) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt similarity index 99% rename from WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginViewModel.kt rename to WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt index da10f0f54db..732bfad4a00 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt @@ -652,3 +652,9 @@ data class InputValue( val EMPTY = InputValue("") } } + +@Parcelize +data class DestinationShippingAddress( + val address: Address, + val isVerified: Boolean +) : Parcelable From 8c336708cb793b5c32d790083b67a56324484a84 Mon Sep 17 00:00:00 2001 From: Alejo Date: Wed, 26 Feb 2025 15:14:10 -0600 Subject: [PATCH 2/7] add EditAddressFlow class --- .../address/WooShippingEditAddressViewModel.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt index 732bfad4a00..967794466c8 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt @@ -637,6 +637,12 @@ sealed class AddressValidationState { ) : AddressValidationState() } +@Parcelize +sealed class EditAddressFlow : Parcelable { + data class EditOriginAddress(val address: OriginShippingAddress) : EditAddressFlow() + data class EditDestinationAddress(val address: DestinationShippingAddress) : EditAddressFlow() +} + enum class AddressStatus { VERIFIED, UNVERIFIED, From 9b5df8ffa86a95aab9cadd4c16e99edd1761ab7f Mon Sep 17 00:00:00 2001 From: Alejo Date: Wed, 26 Feb 2025 15:14:48 -0600 Subject: [PATCH 3/7] map OriginShippingAddress -> Address --- .../address/WooShippingEditAddressViewModel.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt index 967794466c8..b22f973eb71 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt @@ -616,6 +616,22 @@ fun EditableAddress.toAddress(): Address { ) } +fun OriginShippingAddress.toAddress(): Address { + return Address( + firstName = firstName.orEmpty(), + lastName = lastName.orEmpty(), + company = company.orEmpty(), + address1 = address1.orEmpty(), + address2 = address2.orEmpty(), + city = city.orEmpty(), + state = AmbiguousLocation.Raw(state.orEmpty()), + postcode = postcode, + country = AmbiguousLocation.Raw(country).asLocation(), + email = email.orEmpty(), + phone = phone.orEmpty() + ) +} + sealed class AddressValidationState { data object NotStarted : AddressValidationState() data object VerifyingAddress : AddressValidationState() From fdb0876ceb35676b7351438c8d4425339147b0d2 Mon Sep 17 00:00:00 2001 From: Alejo Date: Wed, 26 Feb 2025 15:30:45 -0600 Subject: [PATCH 4/7] update logic to use the different flows --- .../WooShippingEditAddressViewModel.kt | 105 +++++++++++------- 1 file changed, 66 insertions(+), 39 deletions(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt index b22f973eb71..fbc682654f8 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt @@ -1,5 +1,6 @@ -package com.woocommerce.android.ui.orders.wooshippinglabels.address.origin +package com.woocommerce.android.ui.orders.wooshippinglabels.address +import android.os.Parcelable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue @@ -12,12 +13,11 @@ import com.woocommerce.android.model.Address import com.woocommerce.android.model.AmbiguousLocation import com.woocommerce.android.model.Location import com.woocommerce.android.ui.orders.details.editing.address.LocationCode -import com.woocommerce.android.ui.orders.wooshippinglabels.address.AddressValidationHelper -import com.woocommerce.android.ui.orders.wooshippinglabels.address.GetStatesByCountryCode +import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.GetAcceptedOriginCountries +import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.UpdateOriginAddress import com.woocommerce.android.ui.orders.wooshippinglabels.models.AddressNormalizationModel import com.woocommerce.android.ui.orders.wooshippinglabels.models.OriginShippingAddress import com.woocommerce.android.util.StringUtils.combineStrings -import com.woocommerce.android.viewmodel.MultiLiveEvent import com.woocommerce.android.viewmodel.MultiLiveEvent.Event import com.woocommerce.android.viewmodel.ResourceProvider import com.woocommerce.android.viewmodel.ScopedViewModel @@ -32,11 +32,12 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.transformLatest import kotlinx.coroutines.launch +import kotlinx.parcelize.Parcelize import javax.inject.Inject @HiltViewModel @Suppress("TooManyFunctions") -class WooShippingEditOriginViewModel @Inject constructor( +class WooShippingEditAddressViewModel @Inject constructor( private val addressValidator: AddressValidationHelper, private val getAcceptedOriginCountries: GetAcceptedOriginCountries, private val getStatesByCountryCode: GetStatesByCountryCode, @@ -71,9 +72,19 @@ class WooShippingEditOriginViewModel @Inject constructor( private val addressValidationState = MutableStateFlow(AddressValidationState.NotStarted) - private val navArgs: WooShippingEditOriginAddressFragmentArgs by savedState.navArgs() + private val navArgs: WooShippingEditAddressFragmentArgs by savedState.navArgs() - private val currentAddress = MutableStateFlow(navArgs.originAddress) + private val currentAddress = when (val currentFlow = navArgs.flow) { + is EditAddressFlow.EditDestinationAddress -> currentFlow.address.address + is EditAddressFlow.EditOriginAddress -> currentFlow.address.toAddress() + }.let { MutableStateFlow(it) } + + private val isVerified = when (val currentFlow = navArgs.flow) { + is EditAddressFlow.EditDestinationAddress -> currentFlow.address.isVerified + is EditAddressFlow.EditOriginAddress -> currentFlow.address.isVerified + }.let { MutableStateFlow(it) } + + private val addressId = (navArgs.flow as? EditAddressFlow.EditOriginAddress)?.address?.id private val nameValidatedFlow = snapshotFlow { name } .combine(snapshotFlow { company }) { name, company -> @@ -172,25 +183,25 @@ class WooShippingEditOriginViewModel @Inject constructor( } } - private fun fillAddressForm(originAddress: OriginShippingAddress) { + private fun fillAddressForm(addressInformation: Address) { val fullName = combineStrings( - originAddress.firstName.orEmpty(), - originAddress.lastName.orEmpty() + addressInformation.firstName, + addressInformation.lastName ) val fullAddress = combineStrings( - originAddress.address1.orEmpty(), - originAddress.address2.orEmpty() + addressInformation.address1, + addressInformation.address2 ) name = InputValue(fullName) - company = InputValue(originAddress.company.orEmpty()) - country.value = findLocationByCode(originAddress.country, countriesState.value) + company = InputValue(addressInformation.company) + country.value = findLocationByCode(addressInformation.country.code, countriesState.value) address = InputValue(fullAddress) - city = InputValue(originAddress.city.orEmpty()) - selectedState.value = findLocationByCode(originAddress.state.orEmpty(), statesState.value) - postalCode = InputValue(originAddress.postcode) - email = InputValue(originAddress.email.orEmpty()) - phone = InputValue(originAddress.phone.orEmpty()) - isCompanyExpanded.value = originAddress.company.isNotNullOrEmpty() + city = InputValue(addressInformation.city) + selectedState.value = findLocationByCode(addressInformation.state.codeOrRaw, statesState.value) + postalCode = InputValue(addressInformation.postcode) + email = InputValue(addressInformation.email) + phone = InputValue(addressInformation.phone) + isCompanyExpanded.value = addressInformation.company.isNotNullOrEmpty() } private fun findLocationByCode(code: String, state: LocationState): Location { @@ -267,7 +278,7 @@ class WooShippingEditOriginViewModel @Inject constructor( val addressStatus = when { hasIncorrectOrMissingData(address) -> AddressStatus.MISSING_INFO hasOnlyNoAddressChanges(address, currentAddress) -> AddressStatus.SAVE_CHANGES - isSameAddress(address, currentAddress) && currentAddress.isVerified -> AddressStatus.VERIFIED + isSameAddress(address, currentAddress) && isVerified.value -> AddressStatus.VERIFIED else -> AddressStatus.UNVERIFIED } @@ -316,7 +327,7 @@ class WooShippingEditOriginViewModel @Inject constructor( EditAddressError( resourceProvider.getString(R.string.woo_shipping_updating_address_failed) ) { - onUpdateOriginAddress(addressSelection.editableAddress) + onUpdateAddress(addressSelection.editableAddress) } } else { addressValidationState.value = AddressValidationState.NotStarted @@ -367,25 +378,25 @@ class WooShippingEditOriginViewModel @Inject constructor( } } - private fun isSameAddress(newAddress: EditableAddress, currentAddress: OriginShippingAddress): Boolean { + private fun isSameAddress(newAddress: EditableAddress, currentAddress: Address): Boolean { val originalFullAddress = combineStrings( - currentAddress.address1.orEmpty(), - currentAddress.address2.orEmpty() + currentAddress.address1, + currentAddress.address2 ) val isSameAddress = originalFullAddress == newAddress.address.value val isSameCity = currentAddress.city == newAddress.city.value - val isSameState = currentAddress.state == newAddress.state.code - val isSameCountry = currentAddress.country == newAddress.country.code + val isSameState = currentAddress.state.codeOrRaw == newAddress.state.code + val isSameCountry = currentAddress.country.code == newAddress.country.code val isSamePostalCode = currentAddress.postcode == newAddress.postalCode.value return isSameAddress && isSameCity && isSameState && isSameCountry && isSamePostalCode } - private fun hasOnlyNoAddressChanges(newAddress: EditableAddress, currentAddress: OriginShippingAddress): Boolean { + private fun hasOnlyNoAddressChanges(newAddress: EditableAddress, currentAddress: Address): Boolean { val originalFullName = combineStrings( - currentAddress.firstName.orEmpty(), - currentAddress.lastName.orEmpty() + currentAddress.firstName, + currentAddress.lastName ) val isDifferentName = newAddress.name.value != originalFullName val isDifferentCompany = newAddress.company.value != currentAddress.company @@ -505,11 +516,13 @@ class WooShippingEditOriginViewModel @Inject constructor( fun onUpdateNormalizedOriginAddress(selection: AddressValidationState.AddressSelection) { addressValidationState.value = AddressValidationState.UpdatingAddress launch { - updateOriginAddress(selection.selectedAddress, currentAddress.value.id).fold( + updateOriginAddress(selection.selectedAddress, addressId).fold( onSuccess = { - fillAddressForm(it) + val address = it.toAddress() + fillAddressForm(address) addressValidationState.value = AddressValidationState.NotStarted - currentAddress.value = it + currentAddress.value = address + isVerified.value = it.isVerified }, onFailure = { addressValidationState.value = AddressValidationState.NormalizedAddressUpdateFailed(selection) @@ -518,15 +531,29 @@ class WooShippingEditOriginViewModel @Inject constructor( } } - fun onUpdateOriginAddress(editableAddress: EditableAddress) { + fun onUpdateAddress(editableAddress: EditableAddress) { + when (navArgs.flow) { + is EditAddressFlow.EditDestinationAddress -> onUpdateDestinationAddress(editableAddress) + is EditAddressFlow.EditOriginAddress -> onUpdateOriginAddress(editableAddress) + } + } + + @Suppress("UnusedParameter") + private fun onUpdateDestinationAddress(editableAddress: EditableAddress) { + // To be created + } + + private fun onUpdateOriginAddress(editableAddress: EditableAddress) { addressValidationState.value = AddressValidationState.UpdatingAddress launch { val address = editableAddress.toAddress() - updateOriginAddress(address, currentAddress.value.id).fold( + updateOriginAddress(address, addressId).fold( onSuccess = { - fillAddressForm(it) + val address = it.toAddress() + fillAddressForm(address) addressValidationState.value = AddressValidationState.NotStarted - currentAddress.value = it + currentAddress.value = address + isVerified.value = it.isVerified }, onFailure = { addressValidationState.value = AddressValidationState.AddressUpdateFailed(editableAddress) @@ -567,11 +594,11 @@ class WooShippingEditOriginViewModel @Inject constructor( data class ShowCountrySelector( val countries: List - ) : MultiLiveEvent.Event() + ) : Event() data class ShowStateSelector( val states: List - ) : MultiLiveEvent.Event() + ) : Event() companion object { private const val DELAY_TIME_MILLIS = 500L From 21fa9fef891ab1655045c5b190e727b1b5142d8a Mon Sep 17 00:00:00 2001 From: Alejo Date: Wed, 26 Feb 2025 15:31:15 -0600 Subject: [PATCH 5/7] update navigation parameter --- WooCommerce/src/main/res/navigation/nav_graph_orders.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WooCommerce/src/main/res/navigation/nav_graph_orders.xml b/WooCommerce/src/main/res/navigation/nav_graph_orders.xml index 054132f36a8..036e93aee49 100644 --- a/WooCommerce/src/main/res/navigation/nav_graph_orders.xml +++ b/WooCommerce/src/main/res/navigation/nav_graph_orders.xml @@ -738,11 +738,11 @@ + android:name="flow" + app:argType="com.woocommerce.android.ui.orders.wooshippinglabels.address.EditAddressFlow" /> From 3c3986551330e7adb849e185e667b0ea348fd1da Mon Sep 17 00:00:00 2001 From: Alejo Date: Wed, 26 Feb 2025 15:32:30 -0600 Subject: [PATCH 6/7] move common classes outside the origin package --- .../WooShippingLabelCreationFragment.kt | 3 +- .../WooShippingLabelCreationViewModel.kt | 4 +- .../address/{origin => }/NormalizeAddress.kt | 2 +- ...t.kt => WooShippingEditAddressFragment.kt} | 17 ++-- .../address/WooShippingEditAddressScreen.kt | 24 +++--- .../{ => origin}/FetchOriginAddresses.kt | 2 +- .../{ => origin}/ObserveOriginAddresses.kt | 2 +- .../WooShippingLabelCreationViewModelTest.kt | 2 +- .../address/FetchOriginAddressesTest.kt | 1 + .../address/ObserveOriginAddressesTest.kt | 2 + .../address/origin/NormalizeAddressTest.kt | 1 + .../WooShippingEditOriginViewModelTest.kt | 85 ++++++++++--------- 12 files changed, 75 insertions(+), 70 deletions(-) rename WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/{origin => }/NormalizeAddress.kt (99%) rename WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/{origin/WooShippingEditOriginAddressFragment.kt => WooShippingEditAddressFragment.kt} (81%) rename WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/{ => origin}/FetchOriginAddresses.kt (99%) rename WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/{ => origin}/ObserveOriginAddresses.kt (99%) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationFragment.kt index 8260e8931bf..a8c1a99007e 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationFragment.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationFragment.kt @@ -18,6 +18,7 @@ import com.woocommerce.android.ui.main.AppBarStatus import com.woocommerce.android.ui.main.MainActivity.Companion.BackPressListener import com.woocommerce.android.ui.orders.wooshippinglabels.WooShippingLabelCreationViewModel.StartCustomsFormEdit import com.woocommerce.android.ui.orders.wooshippinglabels.WooShippingLabelCreationViewModel.StartPackageSelection +import com.woocommerce.android.ui.orders.wooshippinglabels.address.EditAddressFlow import com.woocommerce.android.ui.orders.wooshippinglabels.packages.WooShippingLabelPackageCreationFragment.Companion.PACKAGE_SELECTION_RESULT import com.woocommerce.android.ui.orders.wooshippinglabels.packages.ui.PackageData import com.woocommerce.android.viewmodel.MultiLiveEvent @@ -70,7 +71,7 @@ class WooShippingLabelCreationFragment : BaseFragment(), BackPressListener { is WooShippingLabelCreationViewModel.StartOriginAddressEdit -> WooShippingLabelCreationFragmentDirections .actionWooShippingLabelCreationFragmentToWooShippingEditOriginAddressFragment( - originAddress = event.originAddress + flow = EditAddressFlow.EditOriginAddress(event.originAddress) ).let { findNavController().navigateSafely(it) } is StartCustomsFormEdit -> { diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationViewModel.kt index 2348b32b8d4..b131ff9d357 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationViewModel.kt @@ -17,8 +17,8 @@ import com.woocommerce.android.ui.orders.wooshippinglabels.WooShippingLabelCreat import com.woocommerce.android.ui.orders.wooshippinglabels.WooShippingLabelCreationViewModel.CustomsState.Unavailable import com.woocommerce.android.ui.orders.wooshippinglabels.WooShippingLabelCreationViewModel.PackageSelectionState.DataAvailable import com.woocommerce.android.ui.orders.wooshippinglabels.WooShippingLabelCreationViewModel.PackageSelectionState.NotSelected -import com.woocommerce.android.ui.orders.wooshippinglabels.address.FetchOriginAddresses -import com.woocommerce.android.ui.orders.wooshippinglabels.address.ObserveOriginAddresses +import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.FetchOriginAddresses +import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.ObserveOriginAddresses import com.woocommerce.android.ui.orders.wooshippinglabels.customs.ShouldRequireCustomsForm import com.woocommerce.android.ui.orders.wooshippinglabels.models.OriginShippingAddress import com.woocommerce.android.ui.orders.wooshippinglabels.models.ShippableItemModel diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/NormalizeAddress.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/NormalizeAddress.kt similarity index 99% rename from WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/NormalizeAddress.kt rename to WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/NormalizeAddress.kt index 9e8fd88f266..f244af8ae20 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/NormalizeAddress.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/NormalizeAddress.kt @@ -1,4 +1,4 @@ -package com.woocommerce.android.ui.orders.wooshippinglabels.address.origin +package com.woocommerce.android.ui.orders.wooshippinglabels.address import com.woocommerce.android.model.Address import com.woocommerce.android.tools.SelectedSite diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginAddressFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressFragment.kt similarity index 81% rename from WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginAddressFragment.kt rename to WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressFragment.kt index ddaa02c8324..798c26a719a 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginAddressFragment.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressFragment.kt @@ -1,4 +1,4 @@ -package com.woocommerce.android.ui.orders.wooshippinglabels.address.origin +package com.woocommerce.android.ui.orders.wooshippinglabels.address import android.os.Bundle import android.view.LayoutInflater @@ -18,21 +18,18 @@ import com.woocommerce.android.ui.compose.theme.WooThemeWithBackground import com.woocommerce.android.ui.main.AppBarStatus import com.woocommerce.android.ui.main.MainActivity.Companion.BackPressListener import com.woocommerce.android.ui.orders.details.editing.address.LocationCode -import com.woocommerce.android.ui.orders.wooshippinglabels.address.WooShippingEditAddressScreen -import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.WooShippingEditOriginViewModel.ShowCountrySelector -import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.WooShippingEditOriginViewModel.ShowStateSelector import com.woocommerce.android.ui.searchfilter.SearchFilterItem import com.woocommerce.android.viewmodel.MultiLiveEvent import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class WooShippingEditOriginAddressFragment : BaseFragment(), BackPressListener { +class WooShippingEditAddressFragment : BaseFragment(), BackPressListener { private companion object { const val SELECT_COUNTRY_REQUEST = "select_address_country_request" const val SELECT_STATE_REQUEST = "select_address_state_request" } - private val viewModel: WooShippingEditOriginViewModel by viewModels() + private val viewModel: WooShippingEditAddressViewModel by viewModels() override val activityAppBarStatus: AppBarStatus = AppBarStatus.Hidden @@ -58,8 +55,8 @@ class WooShippingEditOriginAddressFragment : BaseFragment(), BackPressListener { private fun observeEvents() { viewModel.event.observe(viewLifecycleOwner) { event -> when (event) { - is ShowCountrySelector -> showCountrySearchScreen(event.countries) - is ShowStateSelector -> showStatesSearchScreen(event.states) + is WooShippingEditAddressViewModel.ShowCountrySelector -> showCountrySearchScreen(event.countries) + is WooShippingEditAddressViewModel.ShowStateSelector -> showStatesSearchScreen(event.states) is MultiLiveEvent.Event.Exit -> findNavController().navigateUp() } } @@ -75,7 +72,7 @@ class WooShippingEditOriginAddressFragment : BaseFragment(), BackPressListener { } private fun showCountrySearchScreen(countries: List) { - val action = WooShippingEditOriginAddressFragmentDirections.actionSearchFilterFragment( + val action = WooShippingEditAddressFragmentDirections.Companion.actionSearchFilterFragment( items = countries.map { SearchFilterItem( name = it.name, @@ -90,7 +87,7 @@ class WooShippingEditOriginAddressFragment : BaseFragment(), BackPressListener { } private fun showStatesSearchScreen(states: List) { - val action = WooShippingEditOriginAddressFragmentDirections.actionSearchFilterFragment( + val action = WooShippingEditAddressFragmentDirections.Companion.actionSearchFilterFragment( items = states.map { SearchFilterItem( name = it.name, diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressScreen.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressScreen.kt index 89598002add..9d390c6a4ff 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressScreen.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressScreen.kt @@ -87,17 +87,13 @@ import com.woocommerce.android.ui.compose.component.dismissWCModalBottomSheet import com.woocommerce.android.ui.compose.theme.WooThemeWithBackground import com.woocommerce.android.ui.orders.wooshippinglabels.RoundedCornerBoxWithBorder import com.woocommerce.android.ui.orders.wooshippinglabels.ShipmentDetailsSectionTitle -import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.AddressStatus -import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.AddressValidationState -import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.EditableAddress -import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.WooShippingEditOriginViewModel import com.woocommerce.android.ui.orders.wooshippinglabels.purchased.successColor import com.woocommerce.android.ui.orders.wooshippinglabels.rates.ui.shippingSelectedBackgroundColor import kotlinx.coroutines.launch @Composable fun WooShippingEditAddressScreen( - viewModel: WooShippingEditOriginViewModel, + viewModel: WooShippingEditAddressViewModel, modifier: Modifier = Modifier ) { val viewState = viewModel.viewState.collectAsState().value @@ -123,7 +119,7 @@ fun WooShippingEditAddressScreen( onRawStateChange = viewModel::onRawStateChange, onStateChange = viewModel::onStateChange, onNormalizeAddress = viewModel::onNormalizeAddress, - onUpdateOriginAddress = viewModel::onUpdateOriginAddress, + onUpdateAddress = viewModel::onUpdateAddress, onUpdateNormalizedOriginAddress = viewModel::onUpdateNormalizedOriginAddress, onNavigateBack = viewModel::onNavigateBack, modifier = modifier @@ -134,8 +130,8 @@ fun WooShippingEditAddressScreen( @Composable fun WooShippingEditAddressScreen( editableAddress: EditableAddress, - loading: WooShippingEditOriginViewModel.LoadingState, - error: WooShippingEditOriginViewModel.EditAddressError?, + loading: WooShippingEditAddressViewModel.LoadingState, + error: WooShippingEditAddressViewModel.EditAddressError?, shouldUseStatesInput: Boolean, isCompanyExpanded: Boolean, addressStatus: AddressStatus, @@ -154,7 +150,7 @@ fun WooShippingEditAddressScreen( onRawStateChange: (String) -> Unit, onStateChange: () -> Unit, onNormalizeAddress: (editableAddress: EditableAddress) -> Unit, - onUpdateOriginAddress: (editableAddress: EditableAddress) -> Unit, + onUpdateAddress: (editableAddress: EditableAddress) -> Unit, onUpdateNormalizedOriginAddress: (selection: AddressValidationState.AddressSelection) -> Unit, onNavigateBack: () -> Unit, modifier: Modifier = Modifier @@ -365,7 +361,7 @@ fun WooShippingEditAddressScreen( editableAddress = editableAddress, addressStatus = addressStatus, onNormalizeAddress = onNormalizeAddress, - onUpdateOriginAddress = onUpdateOriginAddress, + onUpdateAddress = onUpdateAddress, onClose = onNavigateBack, modifier = Modifier .fillMaxWidth() @@ -435,7 +431,7 @@ fun WooShippingEditAddressScreen( } } } - if (loading is WooShippingEditOriginViewModel.LoadingState.DisplayLoading) { + if (loading is WooShippingEditAddressViewModel.LoadingState.DisplayLoading) { LoadingModal( title = loading.title, description = loading.message @@ -449,7 +445,7 @@ internal fun AddressStatusSection( editableAddress: EditableAddress, addressStatus: AddressStatus, onNormalizeAddress: (editableAddress: EditableAddress) -> Unit, - onUpdateOriginAddress: (editableAddress: EditableAddress) -> Unit, + onUpdateAddress: (editableAddress: EditableAddress) -> Unit, onClose: () -> Unit, modifier: Modifier = Modifier ) { @@ -492,7 +488,7 @@ internal fun AddressStatusSection( {} } AddressStatus.SAVE_CHANGES -> { - { onUpdateOriginAddress(editableAddress) } + { onUpdateAddress(editableAddress) } } } @@ -714,7 +710,7 @@ private fun SelectAddressWithCustomSnackBar( onAddressSelectionChange: (AddressValidationState.AddressSelection) -> Unit, onUpdateNormalizedOriginAddress: (selection: AddressValidationState.AddressSelection) -> Unit, onCloseAddressSelection: () -> Unit, - error: WooShippingEditOriginViewModel.EditAddressError?, + error: WooShippingEditAddressViewModel.EditAddressError?, isBottomSheetSnackBarVisible: Boolean, modalSheetState: SheetState, modifier: Modifier = Modifier diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/FetchOriginAddresses.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/FetchOriginAddresses.kt similarity index 99% rename from WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/FetchOriginAddresses.kt rename to WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/FetchOriginAddresses.kt index e452f4688df..cc7524c0242 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/FetchOriginAddresses.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/FetchOriginAddresses.kt @@ -1,4 +1,4 @@ -package com.woocommerce.android.ui.orders.wooshippinglabels.address +package com.woocommerce.android.ui.orders.wooshippinglabels.address.origin import com.woocommerce.android.tools.SelectedSite import com.woocommerce.android.ui.orders.wooshippinglabels.models.OriginShippingAddress diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/ObserveOriginAddresses.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/ObserveOriginAddresses.kt similarity index 99% rename from WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/ObserveOriginAddresses.kt rename to WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/ObserveOriginAddresses.kt index 1051fb210c6..e3a19c70938 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/ObserveOriginAddresses.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/ObserveOriginAddresses.kt @@ -1,4 +1,4 @@ -package com.woocommerce.android.ui.orders.wooshippinglabels.address +package com.woocommerce.android.ui.orders.wooshippinglabels.address.origin import com.woocommerce.android.ui.orders.wooshippinglabels.datasource.WooShippingAddressDataStore import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationViewModelTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationViewModelTest.kt index b10b5873608..9d3c3e71995 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationViewModelTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/WooShippingLabelCreationViewModelTest.kt @@ -12,7 +12,7 @@ import com.woocommerce.android.ui.orders.wooshippinglabels.WooShippingLabelCreat import com.woocommerce.android.ui.orders.wooshippinglabels.WooShippingLabelCreationViewModel.PurchaseState import com.woocommerce.android.ui.orders.wooshippinglabels.WooShippingLabelCreationViewModel.WooShippingViewState import com.woocommerce.android.ui.orders.wooshippinglabels.WooShippingLabelCreationViewModel.WooShippingViewState.DataState -import com.woocommerce.android.ui.orders.wooshippinglabels.address.ObserveOriginAddresses +import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.ObserveOriginAddresses import com.woocommerce.android.ui.orders.wooshippinglabels.customs.ShouldRequireCustomsForm import com.woocommerce.android.ui.orders.wooshippinglabels.models.OriginShippingAddress import com.woocommerce.android.ui.orders.wooshippinglabels.models.PurchasedLabelData diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/FetchOriginAddressesTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/FetchOriginAddressesTest.kt index 12ab2285212..d3aeec36a92 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/FetchOriginAddressesTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/FetchOriginAddressesTest.kt @@ -1,6 +1,7 @@ package com.woocommerce.android.ui.orders.wooshippinglabels.address import com.woocommerce.android.tools.SelectedSite +import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.FetchOriginAddresses import com.woocommerce.android.ui.orders.wooshippinglabels.models.OriginShippingAddress import com.woocommerce.android.ui.orders.wooshippinglabels.networking.WooShippingLabelRepository import com.woocommerce.android.viewmodel.BaseUnitTest diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/ObserveOriginAddressesTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/ObserveOriginAddressesTest.kt index c25b2ef6ab9..50835065af7 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/ObserveOriginAddressesTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/ObserveOriginAddressesTest.kt @@ -1,5 +1,7 @@ package com.woocommerce.android.ui.orders.wooshippinglabels.address +import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.FetchOriginAddresses +import com.woocommerce.android.ui.orders.wooshippinglabels.address.origin.ObserveOriginAddresses import com.woocommerce.android.ui.orders.wooshippinglabels.datasource.WooShippingAddressDataStore import com.woocommerce.android.ui.orders.wooshippinglabels.models.OriginShippingAddress import com.woocommerce.android.viewmodel.BaseUnitTest diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/NormalizeAddressTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/NormalizeAddressTest.kt index 6df290ede86..98493041124 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/NormalizeAddressTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/NormalizeAddressTest.kt @@ -2,6 +2,7 @@ package com.woocommerce.android.ui.orders.wooshippinglabels.address.origin import com.woocommerce.android.model.Address import com.woocommerce.android.tools.SelectedSite +import com.woocommerce.android.ui.orders.wooshippinglabels.address.NormalizeAddress import com.woocommerce.android.ui.orders.wooshippinglabels.models.AddressNormalizationModel import com.woocommerce.android.ui.orders.wooshippinglabels.networking.WooShippingLabelRepository import com.woocommerce.android.viewmodel.BaseUnitTest diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginViewModelTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginViewModelTest.kt index 9a22a0f5822..62a67ed57bb 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginViewModelTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginViewModelTest.kt @@ -3,8 +3,15 @@ package com.woocommerce.android.ui.orders.wooshippinglabels.address.origin import androidx.compose.runtime.snapshots.Snapshot import com.woocommerce.android.model.Address import com.woocommerce.android.model.Location +import com.woocommerce.android.ui.orders.wooshippinglabels.address.AddressStatus import com.woocommerce.android.ui.orders.wooshippinglabels.address.AddressValidationHelper +import com.woocommerce.android.ui.orders.wooshippinglabels.address.AddressValidationState +import com.woocommerce.android.ui.orders.wooshippinglabels.address.EditableAddress import com.woocommerce.android.ui.orders.wooshippinglabels.address.GetStatesByCountryCode +import com.woocommerce.android.ui.orders.wooshippinglabels.address.InputValue +import com.woocommerce.android.ui.orders.wooshippinglabels.address.NormalizeAddress +import com.woocommerce.android.ui.orders.wooshippinglabels.address.WooShippingEditAddressViewModel +import com.woocommerce.android.ui.orders.wooshippinglabels.address.toAddress import com.woocommerce.android.ui.orders.wooshippinglabels.models.AddressNormalizationModel import com.woocommerce.android.ui.orders.wooshippinglabels.models.OriginShippingAddress import com.woocommerce.android.viewmodel.BaseUnitTest @@ -40,10 +47,10 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { Location("CA", "California"), ) - private lateinit var sut: WooShippingEditOriginViewModel + private lateinit var sut: WooShippingEditAddressViewModel fun createViewModel(originAddress: OriginShippingAddress) { - sut = WooShippingEditOriginViewModel( + sut = WooShippingEditAddressViewModel( addressValidator = addressValidator, savedState = WooShippingEditOriginAddressFragmentArgs(originAddress).toSavedStateHandle(), getAcceptedOriginCountries = getAcceptedOriginCountries, @@ -71,7 +78,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.name.error).isNull() assertThat(result.editableAddress.company.error).isNull() @@ -94,7 +101,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.name.error).isNull() assertThat(result.editableAddress.company.error).isNull() @@ -118,7 +125,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.name.error).isNotEmpty() assertThat(result.editableAddress.company.error).isNull() @@ -137,7 +144,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.address.error).isNotEmpty() } @@ -155,7 +162,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.address.error).isNull() } @@ -173,7 +180,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.city.error).isNotEmpty() } @@ -191,7 +198,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.city.error).isNull() } @@ -209,7 +216,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.postalCode.error).isNotEmpty() } @@ -227,7 +234,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.postalCode.error).isNull() } @@ -245,7 +252,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.email.error).isNotEmpty() } @@ -263,7 +270,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.email.error).isNull() } @@ -282,7 +289,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.phone.error).isNotEmpty() } @@ -301,7 +308,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.phone.error).isNotEmpty() } @@ -320,7 +327,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.editableAddress.phone.error).isNull() } @@ -340,7 +347,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.isCompanyExpanded).isTrue() } @@ -357,7 +364,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.isCompanyExpanded).isFalse() } @@ -375,9 +382,9 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) - assertThat(result.loading).isInstanceOf(WooShippingEditOriginViewModel.LoadingState.Hidden::class.java) + assertThat(result.loading).isInstanceOf(WooShippingEditAddressViewModel.LoadingState.Hidden::class.java) assertThat(result.error).isNull() } @@ -395,9 +402,9 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) - assertThat(result.loading).isInstanceOf(WooShippingEditOriginViewModel.LoadingState.Hidden::class.java) + assertThat(result.loading).isInstanceOf(WooShippingEditAddressViewModel.LoadingState.Hidden::class.java) assertThat(result.error).isNotNull } @@ -415,7 +422,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.shouldUseStatesInput).isTrue() } @@ -434,7 +441,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.shouldUseStatesInput).isFalse() } @@ -453,7 +460,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.shouldUseStatesInput).isFalse() assertThat(result.editableAddress.state).isEqualTo(states.first()) @@ -473,7 +480,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.shouldUseStatesInput).isTrue() assertThat(result.editableAddress.state.name).isEqualTo("") @@ -508,7 +515,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.addressStatus).isEqualTo(AddressStatus.VERIFIED) } @@ -543,7 +550,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.addressStatus).isEqualTo(AddressStatus.UNVERIFIED) } @@ -578,7 +585,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.addressStatus).isEqualTo(AddressStatus.SAVE_CHANGES) } @@ -613,7 +620,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.addressStatus).isEqualTo(AddressStatus.UNVERIFIED) } @@ -647,7 +654,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.addressStatus).isEqualTo(AddressStatus.MISSING_INFO) } @@ -666,7 +673,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.addressValidationState).isEqualTo(AddressValidationState.NotStarted) } @@ -715,7 +722,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.addressValidationState).isInstanceOf(AddressValidationState.VerificationFailed::class.java) @@ -747,7 +754,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.addressValidationState).isInstanceOf(AddressValidationState.AddressSelection::class.java) } @@ -779,7 +786,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { sut.onNormalizeAddress(updatedAddress) val result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) val addressSelection = result.addressValidationState as AddressValidationState.AddressSelection assertThat(addressSelection.selectedAddress).isEqualTo(suggestedAddress) } @@ -811,14 +818,14 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { sut.onNormalizeAddress(updatedAddress) var result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) var addressSelection = result.addressValidationState as AddressValidationState.AddressSelection assertThat(addressSelection.selectedAddress).isEqualTo(suggestedAddress) sut.onAddressSelectionChange(addressSelection.copy(selectedAddress = enteredAddress)) result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) addressSelection = result.addressValidationState as AddressValidationState.AddressSelection assertThat(addressSelection.selectedAddress).isEqualTo(enteredAddress) } @@ -850,14 +857,14 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { sut.onNormalizeAddress(updatedAddress) var result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) val addressSelection = result.addressValidationState as AddressValidationState.AddressSelection assertThat(addressSelection.selectedAddress).isEqualTo(suggestedAddress) sut.onCloseAddressSelection() result = sut.viewState.value - assertThat(result).isInstanceOf(WooShippingEditOriginViewModel.ViewState::class.java) + assertThat(result).isInstanceOf(WooShippingEditAddressViewModel.ViewState::class.java) assertThat(result.addressValidationState).isEqualTo(AddressValidationState.NotStarted) } From 7152d8dd0bc98cb144e7ccfed4c7cc3c50146598 Mon Sep 17 00:00:00 2001 From: Alejo Date: Wed, 26 Feb 2025 15:46:49 -0600 Subject: [PATCH 7/7] fix unit tests --- .../address/origin/WooShippingEditOriginViewModelTest.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginViewModelTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginViewModelTest.kt index 62a67ed57bb..114a10b1848 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginViewModelTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/origin/WooShippingEditOriginViewModelTest.kt @@ -6,10 +6,12 @@ import com.woocommerce.android.model.Location import com.woocommerce.android.ui.orders.wooshippinglabels.address.AddressStatus import com.woocommerce.android.ui.orders.wooshippinglabels.address.AddressValidationHelper import com.woocommerce.android.ui.orders.wooshippinglabels.address.AddressValidationState +import com.woocommerce.android.ui.orders.wooshippinglabels.address.EditAddressFlow import com.woocommerce.android.ui.orders.wooshippinglabels.address.EditableAddress import com.woocommerce.android.ui.orders.wooshippinglabels.address.GetStatesByCountryCode import com.woocommerce.android.ui.orders.wooshippinglabels.address.InputValue import com.woocommerce.android.ui.orders.wooshippinglabels.address.NormalizeAddress +import com.woocommerce.android.ui.orders.wooshippinglabels.address.WooShippingEditAddressFragmentArgs import com.woocommerce.android.ui.orders.wooshippinglabels.address.WooShippingEditAddressViewModel import com.woocommerce.android.ui.orders.wooshippinglabels.address.toAddress import com.woocommerce.android.ui.orders.wooshippinglabels.models.AddressNormalizationModel @@ -52,7 +54,8 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { fun createViewModel(originAddress: OriginShippingAddress) { sut = WooShippingEditAddressViewModel( addressValidator = addressValidator, - savedState = WooShippingEditOriginAddressFragmentArgs(originAddress).toSavedStateHandle(), + savedState = + WooShippingEditAddressFragmentArgs(EditAddressFlow.EditOriginAddress(originAddress)).toSavedStateHandle(), getAcceptedOriginCountries = getAcceptedOriginCountries, getStatesByCountryCode = getStatesByCountryCode, normalizeAddress = normalizeAddress, @@ -883,7 +886,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { advanceUntilIdle() - sut.onUpdateOriginAddress(editableAddress) + sut.onUpdateAddress(editableAddress) val result = sut.viewState.value assertThat(result.addressValidationState).isEqualTo(AddressValidationState.NotStarted) @@ -930,7 +933,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { advanceUntilIdle() - sut.onUpdateOriginAddress(editableAddress) + sut.onUpdateAddress(editableAddress) val result = sut.viewState.value assertThat(result.addressValidationState).isInstanceOf(AddressValidationState.AddressUpdateFailed::class.java)