Abhishek Banthia
3 years ago
6 changed files with 130 additions and 19 deletions
@ -0,0 +1,101 @@
|
||||
// Copyright © 2015 Abhishek Banthia |
||||
|
||||
import XCTest |
||||
@testable import Clocker |
||||
|
||||
class ReviewControllerTests: XCTestCase { |
||||
func testDebuggingMode() throws { |
||||
guard let mockDefaults = UserDefaults(suiteName: "com.test.Clocker") else { |
||||
return |
||||
} |
||||
ReviewController.applicationDidLaunch(mockDefaults) |
||||
|
||||
// Call it again to ensure Keys.install |
||||
ReviewController.applicationDidLaunch(mockDefaults) |
||||
|
||||
ReviewController.setPreviewMode(true) |
||||
XCTAssertTrue(ReviewController.canPrompt()) |
||||
} |
||||
|
||||
func testPromptNotDisplayedInFirstWeekSinceInstall() { |
||||
guard let mockDefaults = UserDefaults(suiteName: "com.test.Clocker1") else { |
||||
return |
||||
} |
||||
// Set key install time |
||||
ReviewController.applicationDidLaunch(mockDefaults) |
||||
// Explicitly set preview mode to false |
||||
ReviewController.setPreviewMode(false) |
||||
|
||||
XCTAssertFalse(ReviewController.canPrompt()) |
||||
} |
||||
|
||||
func testPrompDisplayedAfterFirstWeekOfInstall() { |
||||
let dateChunk = TimeChunk(seconds: 0, |
||||
minutes: 0, |
||||
hours: 0, |
||||
days: 8, |
||||
weeks: 0, |
||||
months: 0, |
||||
years: 0) |
||||
let oldDate = Date().subtract(dateChunk) |
||||
|
||||
guard let mockDefaults = UserDefaults(suiteName: "com.test.Clocker2") else { |
||||
return |
||||
} |
||||
mockDefaults.set(oldDate, forKey: "install") |
||||
ReviewController.applicationDidLaunch(mockDefaults) |
||||
|
||||
// Explicitly set preview mode to false |
||||
ReviewController.setPreviewMode(false) |
||||
|
||||
XCTAssertNil(mockDefaults.object(forKey:"last-prompt")) |
||||
XCTAssertNil(mockDefaults.object(forKey:"last-version")) |
||||
XCTAssertTrue(ReviewController.canPrompt()) |
||||
} |
||||
|
||||
func testPrompDisplayedAfterThreeMonths() { |
||||
let dateChunk = TimeChunk(seconds: 0, |
||||
minutes: 0, |
||||
hours: 0, |
||||
days: 98, |
||||
weeks: 0, |
||||
months: 0, |
||||
years: 0) |
||||
let minInstall = Date().subtract(dateChunk) |
||||
|
||||
let promptChunk = TimeChunk(seconds: 0, |
||||
minutes: 0, |
||||
hours: 0, |
||||
days: 91, |
||||
weeks: 0, |
||||
months: 0, |
||||
years: 0) |
||||
let lastPromptDate = Date().subtract(promptChunk) |
||||
|
||||
guard let mockDefaults = UserDefaults(suiteName: "com.test.Clocker3") else { |
||||
return |
||||
} |
||||
mockDefaults.set(minInstall, forKey: "install") |
||||
mockDefaults.set("test-version", forKey: "last-version") |
||||
mockDefaults.set(lastPromptDate, forKey: "last-prompt") |
||||
ReviewController.applicationDidLaunch(mockDefaults) |
||||
|
||||
// Explicitly set preview mode to false |
||||
ReviewController.setPreviewMode(false) |
||||
|
||||
XCTAssertNotNil(mockDefaults.object(forKey:"last-prompt")) |
||||
XCTAssertNotNil(mockDefaults.object(forKey:"last-version")) |
||||
XCTAssertTrue(ReviewController.canPrompt()) |
||||
} |
||||
|
||||
func testPrompted() { |
||||
guard let mockDefaults = UserDefaults(suiteName: "com.test.Clocker4") else { |
||||
return |
||||
} |
||||
ReviewController.applicationDidLaunch(mockDefaults) |
||||
ReviewController.prompt() |
||||
XCTAssertNotNil(mockDefaults.object(forKey:"last-prompt")) |
||||
XCTAssertNotNil(mockDefaults.object(forKey:"last-version")) |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue