Skip to content

Commit b945188

Browse files
committed
Fix incorrect height for predefined packages when unavailable
1 parent 775755b commit b945188

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

Networking/Sources/Extended/Model/ShippingLabel/Packages/PredefinedPackage/WooShippingPredefinedPackage.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public struct WooShippingPredefinedPackage: Equatable, GeneratedFakeable, Identi
3838
}
3939

4040
public func getLength() -> Double {
41-
let firstComponent = dimensions.components(separatedBy: " x ").first ?? ""
41+
let firstComponent = dimensions.components(separatedBy: " x ")[safe: 0] ?? ""
4242
return Double(firstComponent) ?? 0
4343
}
4444

@@ -48,7 +48,7 @@ public struct WooShippingPredefinedPackage: Equatable, GeneratedFakeable, Identi
4848
}
4949

5050
public func getHeight() -> Double {
51-
let lastComponent = dimensions.components(separatedBy: " x ").last ?? ""
51+
let lastComponent = dimensions.components(separatedBy: " x ")[safe: 2] ?? ""
5252
return Double(lastComponent) ?? 0
5353
}
5454
}

WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/WooShipping Create Shipping Labels/WooShipping Package and Rate Selection/WooSavedPackagesSelectionView.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ struct WooShippingPackageData: WooShippingPackageDataRepresentable {
9292

9393
extension WooShippingPackageDataRepresentable {
9494
func dimensionsDescription(unit: String) -> String {
95+
guard height.isNotEmpty, let numericHeight = Int(height), numericHeight > 0 else {
96+
return "\(length) x \(width) \( unit)"
97+
}
9598
return "\(length) x \(width) x \(height) \( unit)"
9699
}
97100

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

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,43 @@ final class WooShippingAddCustomPackageViewModelTests: XCTestCase {
187187
XCTAssertEqual(updatedPackageData.id, "a")
188188
}
189189

190+
func test_packageData_does_not_show_height_if_height_is_unavailable() throws {
191+
// Given
192+
let dimensionUnit = "cm"
193+
let weightUnit = "kg"
194+
let siteID: Int64 = 1234
195+
let mockStores = MockStoresManager(sessionManager: .testingInstance)
196+
let viewModel = WooShippingAddCustomPackageViewModel(siteID: siteID,
197+
stores: mockStores)
198+
let length = "1"
199+
let width = "2"
200+
let height = "0"
201+
let weight = "4"
202+
203+
let expectedDimensions = "\(length) x \(width) \(dimensionUnit)"
204+
let expectedWeight = "\(weight) \(weightUnit)"
205+
206+
// When
207+
viewModel.fieldValues[.length] = length
208+
viewModel.fieldValues[.width] = width
209+
viewModel.fieldValues[.height] = height
210+
viewModel.fieldValues[.weight] = weight
211+
212+
// Then
213+
let packageData = try XCTUnwrap(viewModel.packageData)
214+
XCTAssertEqual(packageData.dimensionsDescription(unit: dimensionUnit), expectedDimensions)
215+
XCTAssertEqual(packageData.weightDescription(unit: weightUnit), expectedWeight)
216+
XCTAssertEqual(packageData.id, "custom_box")
217+
218+
// When: selecting a template
219+
viewModel.showSaveTemplate = true
220+
viewModel.packageTemplateName = "a"
221+
222+
// Then
223+
let updatedPackageData = try XCTUnwrap(viewModel.packageData)
224+
XCTAssertEqual(updatedPackageData.id, "a")
225+
}
226+
190227
@MainActor
191228
func test_save_package_as_template_action() async {
192229
// Given

0 commit comments

Comments
 (0)