import XCTest @testable import PortfolioJournal @MainActor final class GoalsDisplayRulesTests: XCTestCase { func testIsAchievedProgressThreshold() { XCTAssertFalse(GoalsViewModel.isAchieved(progress: 0.998)) XCTAssertTrue(GoalsViewModel.isAchieved(progress: 0.999)) XCTAssertTrue(GoalsViewModel.isAchieved(progress: 1.0)) } func testUrgencyLevelIsCriticalWhenBehindAndPastTargetDate() { let targetDate = Date(timeIntervalSince1970: 1_000_000) let referenceDate = Date(timeIntervalSince1970: 1_100_000) let level = GoalsViewModel.urgencyLevel( targetDate: targetDate, isBehind: true, isAchieved: false, referenceDate: referenceDate ) XCTAssertEqual(level, .critical) } func testUrgencyLevelIsWarningWhenBehindBeforeTargetDate() { let targetDate = Date(timeIntervalSince1970: 1_100_000) let referenceDate = Date(timeIntervalSince1970: 1_000_000) let level = GoalsViewModel.urgencyLevel( targetDate: targetDate, isBehind: true, isAchieved: false, referenceDate: referenceDate ) XCTAssertEqual(level, .warning) } func testUrgencyLevelIsNormalForAchievedGoals() { let level = GoalsViewModel.urgencyLevel( targetDate: Date(), isBehind: true, isAchieved: true, referenceDate: Date().addingTimeInterval(86_400) ) XCTAssertEqual(level, .normal) } }