Skip to content

Commit 53e9359

Browse files
committed
Add test
1 parent 498edc7 commit 53e9359

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

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

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -836,6 +836,76 @@ final class WooShippingShipmentDetailsViewModelTests: XCTestCase {
836836
XCTAssertEqual(customsItemViewModel.selectedCountry?.code, expectedCountry)
837837
}
838838

839+
func test_customs_form_is_incomplete_when_destination_country_is_eu_and_hsTariffNumber_is_empty() throws {
840+
// Given
841+
let stores = MockStoresManager(sessionManager: .testingInstance)
842+
let storageManager = MockStorageManager()
843+
844+
let originAddressSubject = PassthroughSubject<WooShippingAddress?, Never>()
845+
let destinationAddressSubject = PassthroughSubject<WooShippingAddress?, Never>()
846+
847+
let usCountry = Country(code: "US", name: "United States", states: [])
848+
let caCountry = Country(code: "CA", name: "Canada", states: [])
849+
let euCountries = [
850+
Country(code: "FR", name: "France", states: []),
851+
Country(code: "DE", name: "Germany", states: []),
852+
Country(code: "ES", name: "Spain", states: []),
853+
Country(code: "IT", name: "Italy", states: []),
854+
Country(code: "NL", name: "Netherlands", states: [])
855+
]
856+
storageManager.insertSampleCountries(readOnlyCountries: [usCountry, caCountry] + euCountries)
857+
858+
let item = ShippingLabelPackageItem(
859+
productOrVariationID: 1,
860+
orderItemID: 1,
861+
name: "Test Item",
862+
weight: 1,
863+
quantity: 1,
864+
value: 10, // low value, shouldn't require HS Tariff # based on value
865+
dimensions: .fake(),
866+
attributes: [],
867+
imageURL: nil
868+
)
869+
let shipment = Shipment(
870+
contents: [CollapsibleShipmentItemCardViewModel(item: item, currency: "USD")],
871+
currency: "USD",
872+
currencySettings: ServiceLocator.currencySettings,
873+
shippingSettingsService: ServiceLocator.shippingSettingsService
874+
)
875+
876+
let viewModel = WooShippingShipmentDetailsViewModel(
877+
order: Order.fake(),
878+
shipment: shipment,
879+
shippingLabel: nil,
880+
originAddress: originAddressSubject.eraseToAnyPublisher(),
881+
destinationAddress: destinationAddressSubject.eraseToAnyPublisher(),
882+
stores: stores,
883+
storageManager: storageManager
884+
)
885+
886+
// When
887+
let itemViewModel = viewModel.customsFormViewModel.itemsViewModels[0]
888+
itemViewModel.hsTariffNumber = "" // Empty tariff number
889+
890+
originAddressSubject.send(sampleOriginAddress(country: usCountry.code, state: ""))
891+
destinationAddressSubject.send(sampleDestinationAddress(country: caCountry.code, state: ""))
892+
893+
// Then: HS Tariff number should not be required for non EU destination countries regardless of value
894+
XCTAssertTrue(
895+
itemViewModel.requiredInformationIsEntered,
896+
"HS Tariff number should not be required for \(usCountry.name)"
897+
)
898+
899+
// And: HS Tariff number should be required for EU countries regardless of value
900+
for euCountry in euCountries {
901+
destinationAddressSubject.send(sampleDestinationAddress(country: euCountry.code, state: ""))
902+
XCTAssertFalse(
903+
itemViewModel.requiredInformationIsEntered,
904+
"HS Tariff number should be required for \(euCountry.name)"
905+
)
906+
}
907+
}
908+
839909
func test_package_contains_complete_customs_form_when_required_data_is_prefilled() throws {
840910
// Setup
841911
let originAddressSubject = PassthroughSubject<WooShippingAddress?, Never>()

0 commit comments

Comments
 (0)