Skip to content

Commit aef95f8

Browse files
committed
Add unit tests for total weight validation
1 parent 8a83c73 commit aef95f8

File tree

2 files changed

+62
-1
lines changed

2 files changed

+62
-1
lines changed

WooCommerce/Classes/ViewRelated/Orders/Order Details/Shipping Labels/Create Shipping Label Form/Package Details/Multi-package/ShippingLabelPackageItemViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ final class ShippingLabelPackageItemViewModel: ObservableObject {
9999
$totalWeight
100100
.map { $0 != String(calculatedWeight) }
101101
.assign(to: &$isPackageWeightEdited)
102-
102+
103103
$totalWeight
104104
.map { [weak self] in self?.validateTotalWeight($0) ?? false }
105105
.assign(to: &$isValidTotalWeight)

WooCommerce/WooCommerceTests/ViewRelated/Shipping Label/Create Shipping Label/Multi-package/ShippingLabelPackageItemViewModelTests.swift

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,67 @@ class ShippingLabelPackageItemViewModelTests: XCTestCase {
231231
// Then
232232
XCTAssertEqual(viewModel.totalWeight, "30")
233233
}
234+
235+
func test_isValidTotalWeight_returns_true_initially() {
236+
// Given
237+
let items = [MockOrderItem.sampleItem(name: "Easter Egg", productID: 1, quantity: 0.5)]
238+
let order = MockOrders().makeOrder().copy(siteID: sampleSiteID, items: items)
239+
let currencyFormatter = CurrencyFormatter(currencySettings: CurrencySettings())
240+
241+
// When
242+
let product = Product.fake().copy(siteID: sampleSiteID, productID: 1, virtual: false, weight: "120")
243+
let viewModel = ShippingLabelPackageItemViewModel(order: order,
244+
orderItems: order.items,
245+
packagesResponse: mockPackageResponse(),
246+
selectedPackageID: "Test Box",
247+
totalWeight: "10",
248+
products: [product],
249+
productVariations: [],
250+
onPackageSwitch: { _ in },
251+
formatter: currencyFormatter,
252+
weightUnit: "kg")
253+
254+
// Then
255+
XCTAssertTrue(viewModel.isValidTotalWeight)
256+
}
257+
258+
func test_isValidTotalWeight_returns_the_expected_value_when_the_totalWeight_is_not_valid() {
259+
// Given
260+
// Given
261+
let items = [MockOrderItem.sampleItem(name: "Easter Egg", productID: 1, quantity: 0.5)]
262+
let order = MockOrders().makeOrder().copy(siteID: sampleSiteID, items: items)
263+
let currencyFormatter = CurrencyFormatter(currencySettings: CurrencySettings())
264+
265+
let product = Product.fake().copy(siteID: sampleSiteID, productID: 1, virtual: false, weight: "120")
266+
let viewModel = ShippingLabelPackageItemViewModel(order: order,
267+
orderItems: order.items,
268+
packagesResponse: mockPackageResponse(),
269+
selectedPackageID: "Test Box",
270+
totalWeight: "10",
271+
products: [product],
272+
productVariations: [],
273+
onPackageSwitch: { _ in },
274+
formatter: currencyFormatter,
275+
weightUnit: "kg")
276+
277+
// When
278+
viewModel.totalWeight = "0.0"
279+
280+
// Then
281+
XCTAssertFalse(viewModel.isValidTotalWeight)
282+
283+
// When
284+
viewModel.totalWeight = "1..1"
285+
286+
// Then
287+
XCTAssertFalse(viewModel.isValidTotalWeight)
288+
289+
// When
290+
viewModel.totalWeight = "test"
291+
292+
// Then
293+
XCTAssertFalse(viewModel.isValidTotalWeight)
294+
}
234295
}
235296

236297
// MARK: - Mocks

0 commit comments

Comments
 (0)