1.1.0 feature work: Monthly Check-in, Charts, Goals, Share, Reviews

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
alexandrev-tibco
2026-02-11 23:37:11 +01:00
parent daaca95913
commit 4761e2e5c8
19 changed files with 1118 additions and 90 deletions
@@ -51,4 +51,40 @@ final class ReviewPromptServiceTests: XCTestCase {
XCTAssertFalse(didRequest)
}
func testAchievementPromptTriggersForNewUnlockWhenNotReviewed() {
let service = ReviewPromptService(
userDefaults: defaults,
dateProvider: Date.init,
reviewRequestHandler: {}
)
let shouldAsk = service.shouldAskForAchievementSatisfaction(newlyUnlockedAchievementKeys: ["streak_3"])
XCTAssertTrue(shouldAsk)
}
func testAchievementPromptDoesNotTriggerTwiceForSameAchievement() {
let service = ReviewPromptService(
userDefaults: defaults,
dateProvider: Date.init,
reviewRequestHandler: {}
)
XCTAssertTrue(service.shouldAskForAchievementSatisfaction(newlyUnlockedAchievementKeys: ["streak_3"]))
XCTAssertFalse(service.shouldAskForAchievementSatisfaction(newlyUnlockedAchievementKeys: ["streak_3"]))
}
func testAchievementPromptDoesNotTriggerAfterStoreReviewCompleted() {
let service = ReviewPromptService(
userDefaults: defaults,
dateProvider: Date.init,
reviewRequestHandler: {}
)
service.markStoreReviewCompleted()
let shouldAsk = service.shouldAskForAchievementSatisfaction(newlyUnlockedAchievementKeys: ["streak_6"])
XCTAssertFalse(shouldAsk)
}
}