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) }}
import Foundation
import 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)
}
}