Skip to content

Commit 732dbfb

Browse files
committed
Show cash payment button for more order preparation and card payment states
1 parent 15ce805 commit 732dbfb

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed

WooCommerce/Classes/POS/ViewHelpers/TotalsViewHelper.swift

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,20 @@ final class TotalsViewHelper {
4242

4343
func shouldShowCollectCashPaymentButton(orderState: PointOfSaleOrderState,
4444
paymentState: PointOfSalePaymentState) -> Bool {
45-
orderState != .syncing &&
46-
(paymentState == .card(.idle) || paymentState == .card(.acceptingCard) || paymentState == .card(.validatingOrderError))
45+
guard orderState != .syncing,
46+
case .card(let cardState) = paymentState else {
47+
return false
48+
}
49+
50+
switch cardState {
51+
case .idle,
52+
.validatingOrder,
53+
.validatingOrderError,
54+
.preparingReader,
55+
.acceptingCard:
56+
return true
57+
default:
58+
return false
59+
}
4760
}
4861
}

WooCommerce/WooCommerceTests/POS/ViewHelpers/TotalsViewHelperTests.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,32 @@ struct TotalsViewHelperTests {
4646
paymentState: paymentState) == false)
4747
}
4848

49+
@Test(arguments: [
50+
(PointOfSaleOrderState.idle, PointOfSalePaymentState.card(.idle)),
51+
(PointOfSaleOrderState.idle, PointOfSalePaymentState.card(.validatingOrder)),
52+
(PointOfSaleOrderState.idle, PointOfSalePaymentState.card(.validatingOrderError)),
53+
(PointOfSaleOrderState.idle, PointOfSalePaymentState.card(.preparingReader)),
54+
(PointOfSaleOrderState.idle, PointOfSalePaymentState.card(.acceptingCard))
55+
])
56+
func test_shouldShowCollectCashPaymentButton_returns_true_for_supported_states(
57+
orderState: PointOfSaleOrderState,
58+
paymentState: PointOfSalePaymentState) {
59+
#expect(TotalsViewHelper().shouldShowCollectCashPaymentButton(orderState: orderState,
60+
paymentState: paymentState))
61+
}
62+
63+
64+
@Test(arguments: [
65+
(PointOfSaleOrderState.syncing, PointOfSalePaymentState.card(.idle)),
66+
(PointOfSaleOrderState.syncing, PointOfSalePaymentState.card(.validatingOrder)),
67+
(PointOfSaleOrderState.syncing, PointOfSalePaymentState.card(.validatingOrderError)),
68+
(PointOfSaleOrderState.syncing, PointOfSalePaymentState.card(.preparingReader)),
69+
(PointOfSaleOrderState.syncing, PointOfSalePaymentState.card(.acceptingCard))
70+
])
71+
func test_shouldShowCollectCashPaymentButton_returns_false_when_order_syncing(
72+
orderState: PointOfSaleOrderState,
73+
paymentState: PointOfSalePaymentState) {
74+
#expect(TotalsViewHelper().shouldShowCollectCashPaymentButton(orderState: orderState,
75+
paymentState: paymentState) == false)
76+
}
4977
}

0 commit comments

Comments
 (0)