@@ -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