@@ -79,6 +79,37 @@ final class AnalyticsHubViewModelTests: XCTestCase {
7979 XCTAssertTrue ( vm. sessionsCard. showSyncError)
8080 }
8181
82+ func test_cards_viewmodels_show_sync_error_only_if_underlying_request_fails( ) async {
83+ // Given
84+ let vm = AnalyticsHubViewModel ( siteID: 123 , statsTimeRange: . thisMonth, usageTracksEventEmitter: eventEmitter, stores: stores)
85+ stores. whenReceivingAction ( ofType: StatsActionV4 . self) { action in
86+ switch action {
87+ case let . retrieveCustomStats( _, _, _, _, _, _, completion) :
88+ completion ( . failure( NSError ( domain: " Test " , code: 1 ) ) )
89+ case let . retrieveTopEarnerStats( _, _, _, _, _, _, _, completion) :
90+ let topEarners = TopEarnerStats . fake ( ) . copy ( items: [ . fake( ) ] )
91+ completion ( . success( topEarners) )
92+ case let . retrieveSiteSummaryStats( _, _, _, _, completion) :
93+ completion ( . failure( NSError ( domain: " Test " , code: 1 ) ) )
94+ default :
95+ break
96+ }
97+ }
98+
99+ // When
100+ await vm. updateData ( )
101+
102+ // Then
103+ XCTAssertTrue ( vm. revenueCard. showSyncError)
104+ XCTAssertTrue ( vm. ordersCard. showSyncError)
105+ XCTAssertTrue ( vm. productsStatsCard. showStatsError)
106+
107+ XCTAssertFalse ( vm. itemsSoldCard. showItemsSoldError)
108+ XCTAssertEqual ( vm. itemsSoldCard. itemsSoldData. count, 1 )
109+
110+ XCTAssertTrue ( vm. sessionsCard. showSyncError)
111+ }
112+
82113 func test_cards_viewmodels_redacted_while_updating_from_network( ) async {
83114 // Given
84115 let vm = AnalyticsHubViewModel ( siteID: 123 , statsTimeRange: . thisMonth, usageTracksEventEmitter: eventEmitter, stores: stores)
0 commit comments