Skip to content

Commit 9be9aa3

Browse files
authored
Merge pull request #4963 from woocommerce/issue/4745-unit-tests
Shipping Labels: Additional unit tests for package creation
2 parents d40c93d + c9c65b8 commit 9be9aa3

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
@@ -491,6 +491,45 @@ final class ShippingLabelPackageDetailsViewModelTests: XCTestCase {
491491
XCTAssertTrue(viewModelWithCustomPackages.hasCustomOrPredefinedPackages)
492492
XCTAssertTrue(viewModelWithPredefinedPackages.hasCustomOrPredefinedPackages)
493493
}
494+
495+
func test_handleNewPackage_returns_updated_data_with_custom_package() {
496+
// Given
497+
let viewModel = ShippingLabelPackageDetailsViewModel(order: Order.fake(), packagesResponse: ShippingLabelPackagesResponse.fake(), selectedPackages: [])
498+
let expectedCustomPackage = ShippingLabelCustomPackage(isUserDefined: true,
499+
title: "Box",
500+
isLetter: true,
501+
dimensions: "3 x 10 x 4",
502+
boxWeight: 10,
503+
maxWeight: 11)
504+
let expectedPackagesResponse = ShippingLabelPackagesResponse.fake().copy(customPackages: [expectedCustomPackage])
505+
506+
// When
507+
viewModel.handleNewPackage(expectedCustomPackage, nil, expectedPackagesResponse)
508+
509+
// Then
510+
XCTAssertEqual(viewModel.packagesResponse, expectedPackagesResponse)
511+
XCTAssertEqual(viewModel.selectedCustomPackage, expectedCustomPackage)
512+
}
513+
514+
func test_handleNewPackage_returns_updated_data_with_service_package() {
515+
// Given
516+
let viewModel = ShippingLabelPackageDetailsViewModel(order: Order.fake(), packagesResponse: ShippingLabelPackagesResponse.fake(), selectedPackages: [])
517+
let expectedPredefinedPackage = ShippingLabelPredefinedPackage(id: "package-1",
518+
title: "Small",
519+
isLetter: true,
520+
dimensions: "3 x 4 x 5")
521+
let expectedPredefinedOption = ShippingLabelPredefinedOption(title: "USPS",
522+
providerID: "usps",
523+
predefinedPackages: [expectedPredefinedPackage])
524+
let expectedPackagesResponse = ShippingLabelPackagesResponse.fake().copy(predefinedOptions: [expectedPredefinedOption])
525+
526+
// When
527+
viewModel.handleNewPackage(nil, expectedPredefinedPackage, expectedPackagesResponse)
528+
529+
// Then
530+
XCTAssertEqual(viewModel.packagesResponse, expectedPackagesResponse)
531+
XCTAssertEqual(viewModel.selectedPredefinedPackage, expectedPredefinedPackage)
532+
}
494533
}
495534

496535
// MARK: - Utils

0 commit comments

Comments
 (0)