Skip to content

Commit c9c65b8

Browse files
committed
Add unit tests for handleNewPackage()
1 parent ace04ba commit c9c65b8

File tree

3 files changed

+61
-1
lines changed

3 files changed

+61
-1
lines changed

Networking/Networking/Model/Copiable/Models+Copiable.generated.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,6 +1006,27 @@ extension ShippingLabelCustomsForm.Item {
10061006
}
10071007
}
10081008

1009+
extension ShippingLabelPackagesResponse {
1010+
public func copy(
1011+
storeOptions: CopiableProp<ShippingLabelStoreOptions> = .copy,
1012+
customPackages: CopiableProp<[ShippingLabelCustomPackage]> = .copy,
1013+
predefinedOptions: CopiableProp<[ShippingLabelPredefinedOption]> = .copy,
1014+
unactivatedPredefinedOptions: CopiableProp<[ShippingLabelPredefinedOption]> = .copy
1015+
) -> ShippingLabelPackagesResponse {
1016+
let storeOptions = storeOptions ?? self.storeOptions
1017+
let customPackages = customPackages ?? self.customPackages
1018+
let predefinedOptions = predefinedOptions ?? self.predefinedOptions
1019+
let unactivatedPredefinedOptions = unactivatedPredefinedOptions ?? self.unactivatedPredefinedOptions
1020+
1021+
return ShippingLabelPackagesResponse(
1022+
storeOptions: storeOptions,
1023+
customPackages: customPackages,
1024+
predefinedOptions: predefinedOptions,
1025+
unactivatedPredefinedOptions: unactivatedPredefinedOptions
1026+
)
1027+
}
1028+
}
1029+
10091030
extension ShippingLabelPaymentMethod {
10101031
public func copy(
10111032
paymentMethodID: CopiableProp<Int64> = .copy,

Networking/Networking/Model/ShippingLabel/Packages/ShippingLabelPackagesResponse.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Codegen
33

44
/// Represents a list of Shipping Label Packages (custom and predefined).
55
///
6-
public struct ShippingLabelPackagesResponse: Equatable, GeneratedFakeable {
6+
public struct ShippingLabelPackagesResponse: Equatable, GeneratedFakeable, GeneratedCopiable {
77

88
/// The options of the store, like currency symbol and origin country.
99
public let storeOptions: ShippingLabelStoreOptions

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,45 @@ final class ShippingLabelPackageDetailsViewModelTests: XCTestCase {
457457
XCTAssertTrue(viewModelWithCustomPackages.hasCustomOrPredefinedPackages)
458458
XCTAssertTrue(viewModelWithPredefinedPackages.hasCustomOrPredefinedPackages)
459459
}
460+
461+
func test_handleNewPackage_returns_updated_data_with_custom_package() {
462+
// Given
463+
let viewModel = ShippingLabelPackageDetailsViewModel(order: Order.fake(), packagesResponse: ShippingLabelPackagesResponse.fake(), selectedPackages: [])
464+
let expectedCustomPackage = ShippingLabelCustomPackage(isUserDefined: true,
465+
title: "Box",
466+
isLetter: true,
467+
dimensions: "3 x 10 x 4",
468+
boxWeight: 10,
469+
maxWeight: 11)
470+
let expectedPackagesResponse = ShippingLabelPackagesResponse.fake().copy(customPackages: [expectedCustomPackage])
471+
472+
// When
473+
viewModel.handleNewPackage(expectedCustomPackage, nil, expectedPackagesResponse)
474+
475+
// Then
476+
XCTAssertEqual(viewModel.packagesResponse, expectedPackagesResponse)
477+
XCTAssertEqual(viewModel.selectedCustomPackage, expectedCustomPackage)
478+
}
479+
480+
func test_handleNewPackage_returns_updated_data_with_service_package() {
481+
// Given
482+
let viewModel = ShippingLabelPackageDetailsViewModel(order: Order.fake(), packagesResponse: ShippingLabelPackagesResponse.fake(), selectedPackages: [])
483+
let expectedPredefinedPackage = ShippingLabelPredefinedPackage(id: "package-1",
484+
title: "Small",
485+
isLetter: true,
486+
dimensions: "3 x 4 x 5")
487+
let expectedPredefinedOption = ShippingLabelPredefinedOption(title: "USPS",
488+
providerID: "usps",
489+
predefinedPackages: [expectedPredefinedPackage])
490+
let expectedPackagesResponse = ShippingLabelPackagesResponse.fake().copy(predefinedOptions: [expectedPredefinedOption])
491+
492+
// When
493+
viewModel.handleNewPackage(nil, expectedPredefinedPackage, expectedPackagesResponse)
494+
495+
// Then
496+
XCTAssertEqual(viewModel.packagesResponse, expectedPackagesResponse)
497+
XCTAssertEqual(viewModel.selectedPredefinedPackage, expectedPredefinedPackage)
498+
}
460499
}
461500

462501
// MARK: - Utils

0 commit comments

Comments
 (0)