@@ -634,6 +634,7 @@ final class WooShippingShipmentDetailsViewModelTests: XCTestCase {
634634
635635 // Then
636636 XCTAssertNil ( viewModel. selectedRate)
637+ XCTAssertNil ( viewModel. shippingService? . selectedRate)
637638 }
638639
639640 func test_changing_destination_address_resets_selected_rate( ) throws {
@@ -654,6 +655,71 @@ final class WooShippingShipmentDetailsViewModelTests: XCTestCase {
654655
655656 // Then
656657 XCTAssertNil ( viewModel. selectedRate)
658+ XCTAssertNil ( viewModel. shippingService? . selectedRate)
659+ }
660+
661+ func test_changing_shipment_weight_resets_selected_rate( ) throws {
662+ // Given
663+ let originAddressSubject = CurrentValueSubject < WooShippingAddress ? , Never > ( sampleOriginAddress ( country: " US " , state: " NY " ) )
664+ let destinationAddressSubject = CurrentValueSubject < WooShippingAddress ? , Never > ( sampleDestinationAddress ( country: " US " , state: " CA " ) )
665+ let viewModel = WooShippingShipmentDetailsViewModel ( order: Order . fake ( ) ,
666+ shipment: sampleShipment,
667+ shippingLabel: nil ,
668+ originAddress: originAddressSubject. eraseToAnyPublisher ( ) ,
669+ destinationAddress: destinationAddressSubject. eraseToAnyPublisher ( ) )
670+
671+ viewModel. shippingService? . onSelectRate ? ( sampleSelectedRate ( ) )
672+ XCTAssertNotNil ( viewModel. selectedRate, " Precondition failed: selectedRate should not be nil " )
673+
674+ // When
675+ viewModel. shipmentWeight = " 10 "
676+
677+ // Then
678+ XCTAssertNil ( viewModel. selectedRate)
679+ XCTAssertNil ( viewModel. shippingService? . selectedRate)
680+ }
681+
682+ func test_changing_hazmat_category_resets_selected_rate( ) throws {
683+ // Given
684+ let originAddressSubject = CurrentValueSubject < WooShippingAddress ? , Never > ( sampleOriginAddress ( country: " US " , state: " NY " ) )
685+ let destinationAddressSubject = CurrentValueSubject < WooShippingAddress ? , Never > ( sampleDestinationAddress ( country: " US " , state: " CA " ) )
686+ let viewModel = WooShippingShipmentDetailsViewModel ( order: Order . fake ( ) ,
687+ shipment: sampleShipment,
688+ shippingLabel: nil ,
689+ originAddress: originAddressSubject. eraseToAnyPublisher ( ) ,
690+ destinationAddress: destinationAddressSubject. eraseToAnyPublisher ( ) )
691+
692+ viewModel. shippingService? . onSelectRate ? ( sampleSelectedRate ( ) )
693+ XCTAssertNotNil ( viewModel. selectedRate, " Precondition failed: selectedRate should not be nil " )
694+
695+ // When
696+ viewModel. hazmatCategory = . class1
697+
698+ // Then
699+ XCTAssertNil ( viewModel. selectedRate)
700+ XCTAssertNil ( viewModel. shippingService? . selectedRate)
701+ }
702+
703+ func test_changing_customs_form_resets_selected_rate( ) throws {
704+ // Given
705+ let originAddressSubject = CurrentValueSubject < WooShippingAddress ? , Never > ( sampleOriginAddress ( country: " US " , state: " NY " ) )
706+ let destinationAddressSubject = CurrentValueSubject < WooShippingAddress ? , Never > ( sampleDestinationAddress ( country: " US " , state: " CA " ) )
707+ let viewModel = WooShippingShipmentDetailsViewModel ( order: Order . fake ( ) ,
708+ shipment: sampleShipment,
709+ shippingLabel: nil ,
710+ originAddress: originAddressSubject. eraseToAnyPublisher ( ) ,
711+ destinationAddress: destinationAddressSubject. eraseToAnyPublisher ( ) )
712+
713+ viewModel. shippingService? . onSelectRate ? ( sampleSelectedRate ( ) )
714+ XCTAssertNotNil ( viewModel. selectedRate, " Precondition failed: selectedRate should not be nil " )
715+
716+ // When
717+ viewModel. customsFormViewModel. returnToSenderIfNotDelivered = true
718+ viewModel. customsFormViewModel. onDismiss ( )
719+
720+ // Then
721+ XCTAssertNil ( viewModel. selectedRate)
722+ XCTAssertNil ( viewModel. shippingService? . selectedRate)
657723 }
658724}
659725
0 commit comments