Skip to content

Commit df4536f

Browse files
committed
Add tests for dashboard stock card availability
1 parent 7e73f66 commit df4536f

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

WooCommerce/WooCommerceTests/ViewRelated/Dashboard/DashboardViewModelTests.swift

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,19 @@ final class DashboardViewModelTests: XCTestCase {
2727
storageManager.viewStorage
2828
}
2929

30+
private lazy var site = Site.fake().copy(
31+
siteID: sampleSiteID
32+
)
33+
3034
override func setUpWithError() throws {
3135
analyticsProvider = MockAnalyticsProvider()
3236
analytics = WooAnalytics(analyticsProvider: analyticsProvider)
3337
stores = MockStoresManager(sessionManager: .makeForTesting(authenticated: true))
3438
userDefaults = try XCTUnwrap(UserDefaults(suiteName: "DashboardViewModelTests"))
3539
storageManager = MockStorageManager()
40+
41+
stores.updateDefaultStore(storeID: sampleSiteID)
42+
stores.updateDefaultStore(site)
3643
}
3744

3845
@MainActor
@@ -538,6 +545,57 @@ final class DashboardViewModelTests: XCTestCase {
538545
assertEqual([.performance, .googleAds], viewModel.showOnDashboardSecondColumn.map(\.type))
539546
}
540547

548+
@MainActor
549+
func test_dashboard_cards_contain_stock_card_when_store_is_eligible_and_non_ciab() async throws {
550+
// Given
551+
let siteCIABChecker = MockCIABEligibilityChecker(mockedIsCurrentSiteCIAB: false)
552+
let userDefaults = try XCTUnwrap(UserDefaults(suiteName: UUID().uuidString))
553+
554+
let viewModel = DashboardViewModel(siteID: sampleSiteID,
555+
stores: stores,
556+
storageManager: storageManager,
557+
userDefaults: userDefaults,
558+
siteIsCIABEligibilityChecker: siteCIABChecker)
559+
560+
mockReloadingData()
561+
562+
// Stock card need to be set with availability: .show and enabled: true by default if available.
563+
let expectedStockCard = DashboardCard(type: .stock, availability: .show, enabled: false)
564+
565+
// When
566+
await viewModel.reloadAllData()
567+
568+
// Then
569+
XCTAssertTrue(viewModel.dashboardCards.contains(expectedStockCard))
570+
}
571+
572+
@MainActor
573+
func test_dashboard_cards_does_not_contain_stock_card_when_store_is_eligible_and_ciab() async throws {
574+
// Given
575+
let siteCIABChecker = MockCIABEligibilityChecker(
576+
mockedIsCurrentSiteCIAB: true,
577+
mockedCIABSites: [site]
578+
)
579+
let userDefaults = try XCTUnwrap(UserDefaults(suiteName: UUID().uuidString))
580+
581+
let viewModel = DashboardViewModel(siteID: sampleSiteID,
582+
stores: stores,
583+
storageManager: storageManager,
584+
userDefaults: userDefaults,
585+
siteIsCIABEligibilityChecker: siteCIABChecker)
586+
587+
mockReloadingData()
588+
589+
// Stock card need to be set with availability: .show and enabled: true by default if available.
590+
let expectedStockCard = DashboardCard(type: .stock, availability: .show, enabled: false)
591+
592+
// When
593+
await viewModel.reloadAllData()
594+
595+
// Then
596+
XCTAssertFalse(viewModel.dashboardCards.contains(expectedStockCard))
597+
}
598+
541599
// MARK: Show New Cards Notice
542600

543601
@MainActor

0 commit comments

Comments
 (0)