125 lines · 4.0 KB · Swift
RawDownload
import CodexBarCoreimport Foundationimport Testing@testable import CodexBar @Suitestruct UsagePaceTextTests {    @Test    func weeklyPaceDetail_providesLeftRightLabels() {        let now = Date(timeIntervalSince1970: 0)        let window = RateWindow(            usedPercent: 50,            windowMinutes: 10080,            resetsAt: now.addingTimeInterval(4 * 24 * 3600),            resetDescription: nil)         let detail = UsagePaceText.weeklyDetail(provider: .codex, window: window, now: now)         #expect(detail?.leftLabel == "7% in deficit")        #expect(detail?.rightLabel == "Runs out in 3d")    }     @Test    func weeklyPaceDetail_reportsLastsUntilReset() {        let now = Date(timeIntervalSince1970: 0)        let window = RateWindow(            usedPercent: 10,            windowMinutes: 10080,            resetsAt: now.addingTimeInterval(4 * 24 * 3600),            resetDescription: nil)         let detail = UsagePaceText.weeklyDetail(provider: .codex, window: window, now: now)         #expect(detail?.leftLabel == "33% in reserve")        #expect(detail?.rightLabel == "Lasts until reset")    }     @Test    func weeklyPaceSummary_formatsSingleLineText() {        let now = Date(timeIntervalSince1970: 0)        let window = RateWindow(            usedPercent: 50,            windowMinutes: 10080,            resetsAt: now.addingTimeInterval(4 * 24 * 3600),            resetDescription: nil)         let summary = UsagePaceText.weeklySummary(provider: .codex, window: window, now: now)         #expect(summary == "Pace: 7% in deficit · Runs out in 3d")    }     @Test    func weeklyPaceDetail_hidesWhenResetIsMissing() {        let now = Date(timeIntervalSince1970: 0)        let window = RateWindow(            usedPercent: 10,            windowMinutes: 10080,            resetsAt: nil,            resetDescription: nil)         let detail = UsagePaceText.weeklyDetail(provider: .codex, window: window, now: now)         #expect(detail == nil)    }     @Test    func weeklyPaceDetail_hidesWhenResetIsInPastOrTooFar() {        let now = Date(timeIntervalSince1970: 0)        let pastWindow = RateWindow(            usedPercent: 10,            windowMinutes: 10080,            resetsAt: now.addingTimeInterval(-60),            resetDescription: nil)        let farFutureWindow = RateWindow(            usedPercent: 10,            windowMinutes: 10080,            resetsAt: now.addingTimeInterval(9 * 24 * 3600),            resetDescription: nil)         #expect(UsagePaceText.weeklyDetail(provider: .codex, window: pastWindow, now: now) == nil)        #expect(UsagePaceText.weeklyDetail(provider: .codex, window: farFutureWindow, now: now) == nil)    }     @Test    func weeklyPaceDetail_hidesWhenNoElapsedButUsageExists() {        let now = Date(timeIntervalSince1970: 0)        let window = RateWindow(            usedPercent: 5,            windowMinutes: 10080,            resetsAt: now.addingTimeInterval(7 * 24 * 3600),            resetDescription: nil)         let detail = UsagePaceText.weeklyDetail(provider: .codex, window: window, now: now)         #expect(detail == nil)    }     @Test    func weeklyPaceDetail_hidesWhenTooEarlyInWindow() {        let now = Date(timeIntervalSince1970: 0)        let window = RateWindow(            usedPercent: 40,            windowMinutes: 10080,            resetsAt: now.addingTimeInterval((7 * 24 * 3600) - (60 * 60)),            resetDescription: nil)         let detail = UsagePaceText.weeklyDetail(provider: .codex, window: window, now: now)         #expect(detail == nil)    }     @Test    func weeklyPaceDetail_hidesWhenUsageIsDepleted() {        let now = Date(timeIntervalSince1970: 0)        let window = RateWindow(            usedPercent: 100,            windowMinutes: 10080,            resetsAt: now.addingTimeInterval(2 * 24 * 3600),            resetDescription: nil)         let detail = UsagePaceText.weeklyDetail(provider: .codex, window: window, now: now)         #expect(detail == nil)    }}