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 ef0b74e2bd5..b1e4bb1f6a3 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 1c5a9c7d608..142b459dc04 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 49fcda8c7da..94b2142ff63 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 @@ -86,10 +86,6 @@ 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.components.RoundedBorderDropDownWithLabel import com.woocommerce.android.ui.orders.wooshippinglabels.purchased.successColor import com.woocommerce.android.ui.orders.wooshippinglabels.rates.ui.shippingSelectedBackgroundColor @@ -97,7 +93,7 @@ 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 @@ -297,7 +293,7 @@ fun WooShippingEditAddressScreen( label = stringResource(id = R.string.woo_shipping_label_state), text = editableAddress.state.name, modifier = Modifier - .padding(top = 8.dp) + .padding(top = 4.dp) .weight(1f), onClick = onStateChange ) @@ -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) } } } @@ -663,7 +659,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/origin/WooShippingEditOriginViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/address/WooShippingEditAddressViewModel.kt similarity index 83% 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..fbc682654f8 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 @@ -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 @@ -616,6 +643,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() @@ -637,6 +680,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, @@ -652,3 +701,9 @@ data class InputValue( val EMPTY = InputValue("") } } + +@Parcelize +data class DestinationShippingAddress( + val address: Address, + val isVerified: Boolean +) : Parcelable 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/main/res/navigation/nav_graph_orders.xml b/WooCommerce/src/main/res/navigation/nav_graph_orders.xml index e17cb2f52c4..f7b81ef5620 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" /> 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..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 @@ -3,8 +3,17 @@ 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.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 import com.woocommerce.android.ui.orders.wooshippinglabels.models.OriginShippingAddress import com.woocommerce.android.viewmodel.BaseUnitTest @@ -40,12 +49,13 @@ 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(), + savedState = + WooShippingEditAddressFragmentArgs(EditAddressFlow.EditOriginAddress(originAddress)).toSavedStateHandle(), getAcceptedOriginCountries = getAcceptedOriginCountries, getStatesByCountryCode = getStatesByCountryCode, normalizeAddress = normalizeAddress, @@ -71,7 +81,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 +104,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 +128,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 +147,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 +165,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 +183,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 +201,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 +219,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 +237,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 +255,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 +273,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 +292,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 +311,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 +330,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 +350,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 +367,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 +385,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 +405,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 +425,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 +444,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 +463,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 +483,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 +518,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 +553,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 +588,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 +623,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 +657,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 +676,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 +725,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 +757,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 +789,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 +821,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 +860,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) } @@ -876,7 +886,7 @@ class WooShippingEditOriginViewModelTest : BaseUnitTest() { advanceUntilIdle() - sut.onUpdateOriginAddress(editableAddress) + sut.onUpdateAddress(editableAddress) val result = sut.viewState.value assertThat(result.addressValidationState).isEqualTo(AddressValidationState.NotStarted) @@ -923,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)