113 lines · 3.6 KB · Swift
RawDownload
import Foundationimport Testing@testable import CodexBar struct OpenAIWebRefreshGateTests {    @Test("Battery saver keeps background OpenAI web refreshes off")    func batterySaverDisablesBackgroundRefresh() {        let shouldRun = UsageStore.shouldRunOpenAIWebRefresh(.init(            accessEnabled: true,            batterySaverEnabled: true,            force: false))         #expect(shouldRun == false)    }     @Test("Disabling battery saver restores normal OpenAI web refreshes")    func disabledBatterySaverAllowsBackgroundRefresh() {        let shouldRun = UsageStore.shouldRunOpenAIWebRefresh(.init(            accessEnabled: true,            batterySaverEnabled: false,            force: false))         #expect(shouldRun == true)    }     @Test("Manual refresh still forces OpenAI web refreshes with battery saver enabled")    func manualRefreshBypassesBatterySaver() {        let shouldRun = UsageStore.shouldRunOpenAIWebRefresh(.init(            accessEnabled: true,            batterySaverEnabled: true,            force: true))         #expect(shouldRun == true)    }     @Test("Battery saver stale-submenu refresh respects the cooldown")    func batterySaverStaleRefreshDoesNotForce() {        let shouldForce = UsageStore.forceOpenAIWebRefreshForStaleRequest(batterySaverEnabled: true)         #expect(shouldForce == false)    }     @Test("Normal stale-submenu refresh still forces when battery saver is off")    func nonBatterySaverStaleRefreshForces() {        let shouldForce = UsageStore.forceOpenAIWebRefreshForStaleRequest(batterySaverEnabled: false)         #expect(shouldForce == true)    }     @Test("Recent successful dashboard refresh stays throttled")    func recentSuccessSkipsRefresh() {        let now = Date()         let shouldSkip = UsageStore.shouldSkipOpenAIWebRefresh(.init(            force: false,            accountDidChange: false,            lastError: nil,            lastSnapshotAt: now.addingTimeInterval(-60),            lastAttemptAt: now.addingTimeInterval(-60),            now: now,            refreshInterval: 300))         #expect(shouldSkip == true)    }     @Test("Recent failed dashboard refresh also stays throttled")    func recentFailureSkipsRefresh() {        let now = Date()         let shouldSkip = UsageStore.shouldSkipOpenAIWebRefresh(.init(            force: false,            accountDidChange: false,            lastError: "login required",            lastSnapshotAt: nil,            lastAttemptAt: now.addingTimeInterval(-60),            now: now,            refreshInterval: 300))         #expect(shouldSkip == true)    }     @Test("Force refresh bypasses throttle after failures")    func forceRefreshBypassesCooldown() {        let now = Date()         let shouldSkip = UsageStore.shouldSkipOpenAIWebRefresh(.init(            force: true,            accountDidChange: false,            lastError: "login required",            lastSnapshotAt: nil,            lastAttemptAt: now.addingTimeInterval(-60),            now: now,            refreshInterval: 300))         #expect(shouldSkip == false)    }     @Test("Account switches bypass the prior-attempt cooldown")    func accountChangeBypassesCooldown() {        let now = Date()         let shouldSkip = UsageStore.shouldSkipOpenAIWebRefresh(.init(            force: false,            accountDidChange: true,            lastError: "mismatch",            lastSnapshotAt: nil,            lastAttemptAt: now.addingTimeInterval(-60),            now: now,            refreshInterval: 300))         #expect(shouldSkip == false)    }}