Skip to content

Commit 791755b

Browse files
committed
Add loading test
1 parent c0e4d5d commit 791755b

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

WooCommerce/WooCommerceTests/ViewRelated/Orders/Simple Payments/SimplePaymentsSummaryViewModelTests.swift

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import XCTest
33
import Combine
44

55
@testable import WooCommerce
6+
@testable import Yosemite
67

78
final class SimplePaymentsSummaryViewModelTests: XCTestCase {
89

@@ -77,4 +78,34 @@ final class SimplePaymentsSummaryViewModelTests: XCTestCase {
7778
// When & Then
7879
XCTAssertEqual(viewModel.taxRate, "4.30")
7980
}
81+
82+
func test_when_order_is_updated_loading_indicator_is_toggled() {
83+
// Given
84+
let mockStores = MockStoresManager(sessionManager: .testingInstance)
85+
let viewModel = SimplePaymentsSummaryViewModel(providedAmount: "1.0", totalWithTaxes: "1.0", taxAmount: "0.0", stores: mockStores)
86+
mockStores.whenReceivingAction(ofType: OrderAction.self) { action in
87+
switch action {
88+
case let .updateSimplePaymentsOrder(_, _, _, _, _, _, _, onCompletion):
89+
onCompletion(.success(Order.fake()))
90+
default:
91+
XCTFail("Unexpected action: \(action)")
92+
}
93+
}
94+
95+
// When
96+
let loadingStates: [Bool] = waitFor { promise in
97+
viewModel.$showLoadingIndicator
98+
.dropFirst() // Initial value
99+
.collect(2) // Collect toggle
100+
.first()
101+
.sink { loadingStates in
102+
promise(loadingStates)
103+
}
104+
.store(in: &self.subscriptions)
105+
viewModel.updateOrder()
106+
}
107+
108+
// Then
109+
XCTAssertEqual(loadingStates, [true, false]) // Loading, then not loading.
110+
}
80111
}

Yosemite/YosemiteTests/Stores/OrderStoreTests.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -644,8 +644,9 @@ final class OrderStoreTests: XCTestCase {
644644

645645
// Then
646646
let request = try XCTUnwrap(network.requestsForResponseData.last as? JetpackRequest)
647-
let received = try XCTUnwrap(request.parameters["fee_lines"] as? [[String: String]]).first
648-
let expected = [
647+
let received = try XCTUnwrap(request.parameters["fee_lines"] as? [[String: AnyHashable]]).first
648+
let expected: [String: AnyHashable] = [
649+
"id": 0,
649650
"name": "Simple Payments",
650651
"tax_status": "none",
651652
"tax_class": "",
@@ -665,8 +666,9 @@ final class OrderStoreTests: XCTestCase {
665666

666667
// Then
667668
let request = try XCTUnwrap(network.requestsForResponseData.last as? JetpackRequest)
668-
let received = try XCTUnwrap(request.parameters["fee_lines"] as? [[String: String]]).first
669-
let expected = [
669+
let received = try XCTUnwrap(request.parameters["fee_lines"] as? [[String: AnyHashable]]).first
670+
let expected: [String: AnyHashable] = [
671+
"id": 0,
670672
"name": "Simple Payments",
671673
"tax_status": "taxable",
672674
"tax_class": "",

0 commit comments

Comments
 (0)