@@ -27,12 +27,19 @@ final class DashboardViewModelTests: XCTestCase {
27
27
storageManager. viewStorage
28
28
}
29
29
30
+ private lazy var site = Site . fake ( ) . copy (
31
+ siteID: sampleSiteID
32
+ )
33
+
30
34
override func setUpWithError( ) throws {
31
35
analyticsProvider = MockAnalyticsProvider ( )
32
36
analytics = WooAnalytics ( analyticsProvider: analyticsProvider)
33
37
stores = MockStoresManager ( sessionManager: . makeForTesting( authenticated: true ) )
34
38
userDefaults = try XCTUnwrap ( UserDefaults ( suiteName: " DashboardViewModelTests " ) )
35
39
storageManager = MockStorageManager ( )
40
+
41
+ stores. updateDefaultStore ( storeID: sampleSiteID)
42
+ stores. updateDefaultStore ( site)
36
43
}
37
44
38
45
@MainActor
@@ -538,6 +545,57 @@ final class DashboardViewModelTests: XCTestCase {
538
545
assertEqual ( [ . performance, . googleAds] , viewModel. showOnDashboardSecondColumn. map ( \. type) )
539
546
}
540
547
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
+
541
599
// MARK: Show New Cards Notice
542
600
543
601
@MainActor
0 commit comments