Files
InvestmentTrackerApp/PortfolioJournalTests/Services/ReviewPromptServiceTests.swift
T
2026-02-01 14:40:10 +01:00

55 lines
1.6 KiB
Swift

import XCTest
@testable import PortfolioJournal
final class ReviewPromptServiceTests: XCTestCase {
private var defaults: UserDefaults!
private var suiteName: String!
override func setUp() {
super.setUp()
suiteName = UUID().uuidString
defaults = UserDefaults(suiteName: suiteName)
}
override func tearDown() {
if let suiteName {
defaults.removePersistentDomain(forName: suiteName)
}
super.tearDown()
}
func testTriggersAfterMinimumCheckIns() {
var didRequest = false
let service = ReviewPromptService(
userDefaults: defaults,
dateProvider: { Date(timeIntervalSince1970: 1_000) },
reviewRequestHandler: { didRequest = true }
)
service.recordMonthlyCheckInCompleted()
service.recordMonthlyCheckInCompleted()
XCTAssertFalse(didRequest)
service.recordMonthlyCheckInCompleted()
XCTAssertTrue(didRequest)
}
func testDoesNotTriggerIfPromptedRecently() {
var didRequest = false
let now = Date(timeIntervalSince1970: 10_000)
defaults.set(now, forKey: "reviewPromptLastDate")
let service = ReviewPromptService(
userDefaults: defaults,
dateProvider: { now.addingTimeInterval(60 * 60 * 24 * 10) },
reviewRequestHandler: { didRequest = true }
)
service.recordMonthlyCheckInCompleted()
service.recordMonthlyCheckInCompleted()
service.recordMonthlyCheckInCompleted()
XCTAssertFalse(didRequest)
}
}