Skip to content

Commit 260b35d

Browse files
committed
Add test for updateDestinationAddress
1 parent 59165d5 commit 260b35d

File tree

3 files changed

+50
-4
lines changed

3 files changed

+50
-4
lines changed

WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingAddresses/WooShippingEditAddressViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ final class WooShippingEditAddressViewModel: ObservableObject, Identifiable {
192192

193193
/// Closure called when a destination address is done being edited and the changes are confirmed.
194194
/// Returns the updated address and email address.
195-
private(set) var onDestinationAddressEdited: ((_ addressUpdate: WooShippingDestinationAddressUpdate,
195+
private(set) var onDestinationAddressEdited: ((_ result: WooShippingDestinationAddressUpdate,
196196
_ email: String?) -> Void)?
197197

198198
init(type: AddressType,

WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShippingCreateLabelsViewModel.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -419,13 +419,13 @@ final class WooShippingCreateLabelsViewModel: ObservableObject {
419419
isVerified: destinationAddressStatus == .verified,
420420
originCountryCode: selectedOriginAddress?.country,
421421
originStateCode: selectedOriginAddress?.state,
422-
onAddressEdited: { [weak self] editedAddress, editedEmail in
422+
onAddressEdited: { [weak self] result, editedEmail in
423423
guard let self else {
424424
return
425425
}
426-
destinationAddress = editedAddress.address.toWooShippingAddress()
426+
destinationAddress = result.address.toWooShippingAddress()
427427
destinationEmail = editedEmail
428-
destinationAddressStatus = editedAddress.isVerified ? .verified : .unverified
428+
destinationAddressStatus = result.isVerified ? .verified : .unverified
429429
addressToEdit = nil // Dismisses address edit screen
430430
})
431431
}

WooCommerce/WooCommerceTests/ViewRelated/Shipping Label/WooShipping Create Shipping Labels/WooShippingEditAddressViewModelTests.swift

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1590,6 +1590,52 @@ final class WooShippingEditAddressViewModelTests: XCTestCase {
15901590
XCTAssertFalse(viewModel.canConfirmWithoutVerification)
15911591
XCTAssertEqual(viewModel.status, .missingInformation)
15921592
}
1593+
1594+
@MainActor
1595+
func test_updateConfirmedAddress_without_verification_triggers_updateDestinationAddress_with_isVerified_false() async {
1596+
// Given
1597+
let sampleOrderID: Int64 = 123
1598+
let stores = MockStoresManager(sessionManager: .testingInstance)
1599+
let viewModel = WooShippingEditAddressViewModel(type: .destination(orderID: sampleOrderID),
1600+
id: "",
1601+
name: "JANE DOE",
1602+
company: "HEADQUARTERS",
1603+
country: "US",
1604+
address: "15 ALGONKIN ST",
1605+
city: "TICONDEROGA",
1606+
state: "NY",
1607+
postalCode: "12883-1487",
1608+
1609+
phone: "123-456-7890",
1610+
isDefaultAddress: false,
1611+
showCompanyField: true,
1612+
isVerified: false,
1613+
stores: stores)
1614+
1615+
let testAddress = WooShippingAddress(company: "TEST COMPANY",
1616+
name: "TEST NAME",
1617+
phone: "555-123-4567",
1618+
country: "US",
1619+
state: "CA",
1620+
address1: "123 TEST ST",
1621+
address2: "",
1622+
city: "TEST CITY",
1623+
postcode: "90210")
1624+
1625+
// When
1626+
let receivedIsVerified: Bool = await waitForAsync { promise in
1627+
stores.whenReceivingAction(ofType: WooShippingAction.self) { action in
1628+
if case let .updateDestinationAddress(_, _, _, isVerified, completion) = action {
1629+
promise(isVerified)
1630+
completion(.success(WooShippingDestinationAddressUpdate(address: .fake(), isVerified: isVerified)))
1631+
}
1632+
}
1633+
viewModel.updateConfirmedAddress(testAddress, withoutVerification: true)
1634+
}
1635+
1636+
// Then
1637+
XCTAssertFalse(receivedIsVerified, "updateDestinationAddress should be called with isVerified: false when withoutVerification is true")
1638+
}
15931639
}
15941640

15951641
private extension WooShippingEditAddressViewModel {

0 commit comments

Comments
 (0)