Skip to content

Commit 876ef79

Browse files
authored
Merge pull request #6052 from woocommerce/issue/5412-address-form-do-not-prefill-same-address
Order Creation: Do not prefill shipping address fields
2 parents 380a00e + 4692a59 commit 876ef79

File tree

2 files changed

+37
-11
lines changed

2 files changed

+37
-11
lines changed

WooCommerce/Classes/ViewRelated/Orders/Order Creation/CustomerSection/CreateOrderAddressFormViewModel.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,17 @@ final class CreateOrderAddressFormViewModel: AddressFormViewModel, AddressFormVi
2121
analytics: Analytics = ServiceLocator.analytics) {
2222
self.onAddressUpdate = onAddressUpdate
2323

24+
// don't prefill second set of fields if input addresses are identical
25+
let addressesAreDifferent = addressData.billingAddress != addressData.shippingAddress
26+
2427
super.init(siteID: siteID,
2528
address: addressData.billingAddress ?? .empty,
26-
secondaryAddress: addressData.shippingAddress ?? .empty,
29+
secondaryAddress: addressesAreDifferent ? (addressData.shippingAddress ?? .empty) : .empty,
2730
storageManager: storageManager,
2831
stores: stores,
2932
analytics: analytics)
3033

31-
if addressData.billingAddress != addressData.shippingAddress {
34+
if addressesAreDifferent {
3235
showDifferentAddressForm = true
3336
}
3437
}

WooCommerce/WooCommerceTests/ViewRelated/Orders/Order Creation/CreateOrderAddressFormViewModelTests.swift

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@ final class CreateOrderAddressFormViewModelTests: XCTestCase {
3535
XCTAssertFalse(viewModel.showDifferentAddressForm)
3636
}
3737

38+
func test_input_of_identical_addresses_does_not_prefill_second_set_of_fields() {
39+
// Given
40+
let viewModel = CreateOrderAddressFormViewModel(siteID: sampleSiteID,
41+
addressData: .init(billingAddress: sampleAddress(), shippingAddress: sampleAddress()),
42+
onAddressUpdate: nil,
43+
storageManager: testingStorage)
44+
45+
// When
46+
viewModel.onLoadTrigger.send()
47+
48+
// Then
49+
assertEqual(viewModel.secondaryFields.toAddress(), .empty)
50+
}
51+
3852
func test_input_of_different_addresses_enables_different_address_toggle() {
3953
// Given
4054
let address1 = sampleAddress()
@@ -60,7 +74,6 @@ final class CreateOrderAddressFormViewModelTests: XCTestCase {
6074
// When
6175
viewModel.onLoadTrigger.send()
6276

63-
6477
// Then
6578
XCTAssertEqual(viewModel.secondaryFields.firstName, address2.firstName)
6679
XCTAssertEqual(viewModel.secondaryFields.lastName, address2.lastName)
@@ -84,8 +97,10 @@ final class CreateOrderAddressFormViewModelTests: XCTestCase {
8497
// Given
8598
let newCountry = Self.sampleCountries[0]
8699

100+
let address1 = sampleAddress()
101+
let address2 = sampleAddress().copy(firstName: "John")
87102
let viewModel = CreateOrderAddressFormViewModel(siteID: sampleSiteID,
88-
addressData: .init(billingAddress: sampleAddress(), shippingAddress: sampleAddress()),
103+
addressData: .init(billingAddress: address1, shippingAddress: address2),
89104
onAddressUpdate: nil,
90105
storageManager: testingStorage)
91106
viewModel.onLoadTrigger.send()
@@ -101,8 +116,10 @@ final class CreateOrderAddressFormViewModelTests: XCTestCase {
101116

102117
func test_country_and_state_names_are_converted_from_codes_when_available() {
103118
// Given
119+
let address1 = sampleAddress()
120+
let address2 = sampleAddress().copy(firstName: "John")
104121
let viewModel = CreateOrderAddressFormViewModel(siteID: sampleSiteID,
105-
addressData: .init(billingAddress: sampleAddress(), shippingAddress: sampleAddress()),
122+
addressData: .init(billingAddress: address1, shippingAddress: address2),
106123
onAddressUpdate: nil,
107124
storageManager: testingStorage)
108125
XCTAssertEqual(viewModel.secondaryFields.country, "US")
@@ -122,10 +139,10 @@ final class CreateOrderAddressFormViewModelTests: XCTestCase {
122139

123140
func test_state_name_is_displayed_as_string_when_mapping_is_not_available() {
124141
// Given
125-
let addressWithUnknownCountryAndState = sampleAddress().copy(state: "Bavaria", country: "Germany")
142+
let address1 = sampleAddress()
143+
let address2 = sampleAddress().copy(state: "Bavaria", country: "Germany")
126144
let viewModel = CreateOrderAddressFormViewModel(siteID: sampleSiteID,
127-
addressData: .init(billingAddress: addressWithUnknownCountryAndState,
128-
shippingAddress: addressWithUnknownCountryAndState),
145+
addressData: .init(billingAddress: address1, shippingAddress: address2),
129146
onAddressUpdate: nil,
130147
storageManager: testingStorage)
131148

@@ -141,8 +158,10 @@ final class CreateOrderAddressFormViewModelTests: XCTestCase {
141158
// Given
142159
let newCountry = Country(code: "GB", name: "United Kingdom", states: [])
143160

161+
let address1 = sampleAddress()
162+
let address2 = sampleAddress().copy(firstName: "John")
144163
let viewModel = CreateOrderAddressFormViewModel(siteID: sampleSiteID,
145-
addressData: .init(billingAddress: sampleAddress(), shippingAddress: sampleAddress()),
164+
addressData: .init(billingAddress: address1, shippingAddress: address2),
146165
onAddressUpdate: nil,
147166
storageManager: testingStorage)
148167
viewModel.onLoadTrigger.send()
@@ -163,8 +182,10 @@ final class CreateOrderAddressFormViewModelTests: XCTestCase {
163182
// Given
164183
let newCountry = Country(code: "AU", name: "Australia", states: [.init(code: "VIC", name: "Victoria")])
165184

185+
let address1 = sampleAddress()
186+
let address2 = sampleAddress().copy(firstName: "John")
166187
let viewModel = CreateOrderAddressFormViewModel(siteID: sampleSiteID,
167-
addressData: .init(billingAddress: sampleAddress(), shippingAddress: sampleAddress()),
188+
addressData: .init(billingAddress: address1, shippingAddress: address2),
168189
onAddressUpdate: nil,
169190
storageManager: testingStorage)
170191
viewModel.onLoadTrigger.send()
@@ -185,8 +206,10 @@ final class CreateOrderAddressFormViewModelTests: XCTestCase {
185206
// Given
186207
let newState = StateOfACountry(code: "CA", name: "California")
187208

209+
let address1 = sampleAddress()
210+
let address2 = sampleAddress().copy(firstName: "John")
188211
let viewModel = CreateOrderAddressFormViewModel(siteID: sampleSiteID,
189-
addressData: .init(billingAddress: sampleAddress(), shippingAddress: sampleAddress()),
212+
addressData: .init(billingAddress: address1, shippingAddress: address2),
190213
onAddressUpdate: nil,
191214
storageManager: testingStorage)
192215
viewModel.onLoadTrigger.send()

0 commit comments

Comments
 (0)