Skip to content

Commit e452f9d

Browse files
committed
Add unit tests for storing SiteSummaryStats
1 parent cf7258d commit e452f9d

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

Yosemite/YosemiteTests/Stores/StatsStoreV4Tests.swift

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,50 @@ final class StatsStoreV4Tests: XCTestCase {
626626
// Then
627627
XCTAssertTrue(result.isFailure)
628628
}
629+
630+
/// Verifies that `StatsActionV4.retrieveSiteSummaryStats` effectively persists any retrieved SiteSummaryStats.
631+
///
632+
func test_retrieveSiteSummaryStats_effectively_persists_retrieved_stats() {
633+
// Given
634+
let store = StatsStoreV4(dispatcher: dispatcher, storageManager: storageManager, network: network)
635+
network.simulateResponse(requestUrlSuffix: "sites/\(sampleSiteID)/stats/summary/", filename: "site-summary-stats")
636+
XCTAssertEqual(viewStorage.countObjects(ofType: Storage.SiteSummaryStats.self), 0)
637+
638+
// When
639+
let result: Result<Networking.SiteSummaryStats, Error> = waitFor { promise in
640+
let action = StatsActionV4.retrieveSiteSummaryStats(siteID: self.sampleSiteID,
641+
period: .day,
642+
quantity: 1,
643+
latestDateToInclude: DateFormatter.dateFromString(with: "2022-12-09T17:06:55"),
644+
saveInStorage: true) { result in
645+
promise(result)
646+
}
647+
store.onAction(action)
648+
}
649+
650+
// Then
651+
XCTAssertTrue(result.isSuccess)
652+
XCTAssertEqual(viewStorage.countObjects(ofType: Storage.SiteSummaryStats.self), 1)
653+
654+
let readOnlySiteSummaryStats = viewStorage.firstObject(ofType: Storage.SiteSummaryStats.self)?.toReadOnly()
655+
XCTAssertEqual(readOnlySiteSummaryStats, sampleSiteSummaryStats())
656+
}
657+
658+
/// Verifies that `upsertStoredSiteSummaryStats` does not produce duplicate entries.
659+
///
660+
func test_upsertStoredSiteSummaryStats_effectively_updates_preexistant_SiteSummaryStats() {
661+
let statsStore = StatsStoreV4(dispatcher: dispatcher, storageManager: storageManager, network: network)
662+
663+
XCTAssertNil(viewStorage.loadSiteSummaryStats(date: "2022-12-09", period: StatGranularity.day.rawValue))
664+
statsStore.upsertStoredSiteSummaryStats(readOnlyStats: sampleSiteSummaryStats())
665+
XCTAssertEqual(viewStorage.countObjects(ofType: Storage.SiteSummaryStats.self), 1)
666+
statsStore.upsertStoredSiteSummaryStats(readOnlyStats: sampleSiteSummaryStatsMutated())
667+
XCTAssertEqual(viewStorage.countObjects(ofType: Storage.SiteSummaryStats.self), 1)
668+
669+
let expectedSiteSummaryStats = sampleSiteSummaryStatsMutated()
670+
let storageSiteSummaryStats = viewStorage.loadSiteSummaryStats(date: "2022-12-09", period: StatGranularity.day.rawValue)
671+
XCTAssertEqual(storageSiteSummaryStats?.toReadOnly(), expectedSiteSummaryStats)
672+
}
629673
}
630674

631675

@@ -817,6 +861,14 @@ private extension StatsStoreV4Tests {
817861
views: 123)
818862
}
819863

864+
func sampleSiteSummaryStatsMutated() -> Networking.SiteSummaryStats {
865+
return SiteSummaryStats(siteID: sampleSiteID,
866+
date: "2022-12-09",
867+
period: .day,
868+
visitors: 15,
869+
views: 127)
870+
}
871+
820872
func sampleSiteSummaryStatsQuarter() -> Networking.SiteSummaryStats {
821873
return SiteSummaryStats(siteID: sampleSiteID,
822874
date: "2022-12-09",

0 commit comments

Comments
 (0)