Skip to content

Commit 48d6baf

Browse files
committed
Update unit tests for shipping label address form
1 parent ce29d60 commit 48d6baf

File tree

1 file changed

+56
-1
lines changed

1 file changed

+56
-1
lines changed

WooCommerce/WooCommerceTests/ViewRelated/Shipping Label/Create Shipping Label/ShippingLabelAddressFormViewModelTests.swift

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,19 @@ final class ShippingLabelAddressFormViewModelTests: XCTestCase {
3333
XCTAssertEqual(viewModel.address?.postcode, "94121-2303")
3434
}
3535

36+
func test_handleAddressValueChanges_empties_stateOfCountry_when_country_is_updated() {
37+
38+
// Given
39+
let shippingAddress = MockShippingLabelAddress.sampleAddress(country: "US", state: "CA")
40+
let viewModel = ShippingLabelAddressFormViewModel(siteID: 10, type: .origin, address: shippingAddress, validationError: nil, countries: [])
41+
42+
// When
43+
viewModel.handleAddressValueChanges(row: .country, newValue: "AU")
44+
45+
// Then
46+
XCTAssertEqual(viewModel.address?.state, "")
47+
}
48+
3649
func test_sections_are_returned_correctly_if_there_are_no_errors() {
3750
// Given
3851
let shippingAddress = ShippingLabelAddress(company: "Automattic Inc.",
@@ -223,7 +236,7 @@ final class ShippingLabelAddressFormViewModelTests: XCTestCase {
223236

224237
func test_sections_are_returned_correctly_if_phone_is_required_and_invalid() {
225238
// Given
226-
let shippingAddress = MockShippingLabelAddress.sampleAddress(phone: "0123", country: "VN")
239+
let shippingAddress = MockShippingLabelAddress.sampleAddress(phone: "0123", country: "US")
227240
let stores = MockStoresManager(sessionManager: .testingInstance)
228241
let validationError = ShippingLabelAddressValidationError(addressError: "Error", generalError: nil)
229242

@@ -264,6 +277,48 @@ final class ShippingLabelAddressFormViewModelTests: XCTestCase {
264277
XCTAssertEqual(viewModel.sections, [ShippingLabelAddressFormViewModel.Section(rows: expectedRows)])
265278
}
266279

280+
func test_sections_are_returned_correctly_if_phone_is_required_and_country_is_nonUS() {
281+
// Given
282+
let shippingAddress = MockShippingLabelAddress.sampleAddress(phone: "0123", country: "VN")
283+
let stores = MockStoresManager(sessionManager: .testingInstance)
284+
let validationError = ShippingLabelAddressValidationError(addressError: "Error", generalError: nil)
285+
286+
// When
287+
stores.whenReceivingAction(ofType: ShippingLabelAction.self) { action in
288+
switch action {
289+
case let .validateAddress(_, _, onCompletion):
290+
onCompletion(.failure(validationError))
291+
default:
292+
break
293+
}
294+
}
295+
296+
let viewModel = ShippingLabelAddressFormViewModel(siteID: 10,
297+
type: .origin,
298+
address: shippingAddress,
299+
phoneNumberRequired: true,
300+
stores: stores,
301+
validationError: nil,
302+
countries: [])
303+
viewModel.validateAddress(onlyLocally: false) { _ in }
304+
305+
// Then
306+
let expectedRows: [ShippingLabelAddressFormViewModel.Row] = [.name,
307+
.fieldError(.name),
308+
.company,
309+
.phone,
310+
.address,
311+
.fieldError(.address),
312+
.address2,
313+
.city,
314+
.fieldError(.city),
315+
.postcode,
316+
.fieldError(.postcode),
317+
.state,
318+
.country]
319+
XCTAssertEqual(viewModel.sections, [ShippingLabelAddressFormViewModel.Section(rows: expectedRows)])
320+
}
321+
267322
func test_address_validation_returns_correct_values_if_succeeded() {
268323
// Given
269324
let shippingAddress = ShippingLabelAddress(company: "Automattic Inc.",

0 commit comments

Comments
 (0)