Skip to content

Commit 8f57d14

Browse files
committed
Update tests
1 parent e58644a commit 8f57d14

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

WooCommerce/Classes/ViewModels/Order Details/OrderDetailsViewModel.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ import Experiments
88
import WooFoundation
99
import SwiftUI
1010
import enum Networking.DotcomError
11+
import protocol Storage.StorageManagerType
1112

1213
final class OrderDetailsViewModel {
1314

1415
private let stores: StoresManager
16+
private let storageManager: StorageManagerType
1517
private let currencyFormatter: CurrencyFormatter
1618

1719
private(set) var order: Order
@@ -26,9 +28,11 @@ final class OrderDetailsViewModel {
2628

2729
init(order: Order,
2830
stores: StoresManager = ServiceLocator.stores,
31+
storageManager: StorageManagerType = ServiceLocator.storageManager,
2932
currencyFormatter: CurrencyFormatter = CurrencyFormatter(currencySettings: ServiceLocator.currencySettings)) {
3033
self.order = order
3134
self.stores = stores
35+
self.storageManager = storageManager
3236
self.currencyFormatter = currencyFormatter
3337
}
3438

@@ -663,7 +667,7 @@ extension OrderDetailsViewModel {
663667
///
664668
private func arePluginsSynced() -> Bool {
665669
let predicate = NSPredicate(format: "siteID == %lld", order.siteID)
666-
let resultsController = ResultsController<StorageSystemPlugin>(storageManager: ServiceLocator.storageManager, matching: predicate, sortedBy: [])
670+
let resultsController = ResultsController<StorageSystemPlugin>(storageManager: storageManager, matching: predicate, sortedBy: [])
667671
try? resultsController.performFetch()
668672
return !resultsController.isEmpty
669673
}

WooCommerce/WooCommerceTests/ViewRelated/OrderDetailsViewModelTests.swift

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ final class OrderDetailsViewModelTests: XCTestCase {
99
private var viewModel: OrderDetailsViewModel!
1010

1111
private var storesManager: MockStoresManager!
12+
private var storageManager: MockStorageManager!
1213

1314
override func setUp() {
1415
storesManager = MockStoresManager(sessionManager: SessionManager.makeForTesting())
16+
storageManager = MockStorageManager()
1517

1618
order = MockOrders().sampleOrder()
1719

18-
viewModel = OrderDetailsViewModel(order: order, stores: storesManager)
20+
viewModel = OrderDetailsViewModel(order: order, stores: storesManager, storageManager: storageManager)
1921

2022
let analytics = WooAnalytics(analyticsProvider: MockAnalyticsProvider())
2123
ServiceLocator.setAnalytics(analytics)
@@ -73,16 +75,35 @@ final class OrderDetailsViewModelTests: XCTestCase {
7375

7476
func test_checkShippingLabelCreationEligibility_dispatches_correctly() throws {
7577
// Given
78+
79+
// Make sure the are plugins synced
80+
let plugin = SystemPlugin.fake().copy(siteID: order.siteID, name: SitePlugin.SupportedPlugin.WCShip, active: true)
81+
storageManager.insertSampleSystemPlugin(readOnlySystemPlugin: plugin)
82+
7683
storesManager.reset()
7784
XCTAssertEqual(storesManager.receivedActions.count, 0)
7885

7986
// When
80-
viewModel.checkShippingLabelCreationEligibility()
87+
waitForExpectation { exp in
88+
89+
// Return the active WCShip plugin.
90+
storesManager.whenReceivingAction(ofType: SystemStatusAction.self) { action in
91+
switch action {
92+
case .fetchSystemPlugin(_, _, let onCompletion):
93+
onCompletion(plugin)
94+
exp.fulfill()
95+
default:
96+
break
97+
}
98+
}
99+
100+
viewModel.checkShippingLabelCreationEligibility()
101+
}
81102

82103
// Then
83-
XCTAssertEqual(storesManager.receivedActions.count, 1)
104+
XCTAssertEqual(storesManager.receivedActions.count, 2)
84105

85-
let action = try XCTUnwrap(storesManager.receivedActions.first as? ShippingLabelAction)
106+
let action = try XCTUnwrap(storesManager.receivedActions.last as? ShippingLabelAction)
86107
guard case let ShippingLabelAction.checkCreationEligibility(siteID: siteID,
87108
orderID: orderID,
88109
onCompletion: _) = action else {

0 commit comments

Comments
 (0)