@@ -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