Files
steipete--codexbar/Tests/CodexBarTests/CodexWeeklyResetFailureBaselineTests.swift
2026-07-13 12:22:33 +08:00

91 lines
3.6 KiB
Swift

import CodexBarCore
import Foundation
import Testing
@testable import CodexBar
@MainActor
extension CodexAccountScopedRefreshTests {
@Test
func `hard failure keeps trusted weekly baseline for later low observations`() async {
let suite = "CodexWeeklyResetFailureBaselineTests-hard-failure"
let email = "failure-baseline@example.com"
let settings = self.makeSettingsStore(suite: suite)
settings.refreshFrequency = .manual
settings.codexCookieSource = .off
settings._test_liveSystemCodexAccount = self.liveAccount(
email: email,
identity: .providerAccount(id: "failure-baseline-owner"))
defer { settings._test_liveSystemCodexAccount = nil }
let now = Date()
let boundary = now.addingTimeInterval(2 * 24 * 60 * 60)
let prior = self.codexWeeklySnapshot(
email: email,
weeklyUsedPercent: 73,
weeklyReset: boundary,
updatedAt: now.addingTimeInterval(-60))
let store = self.makeCodexWeeklyPublicationStore(settings: settings, suite: suite)
_ = await self.seedCodexWeeklyPublicationState(
store: store,
settings: settings,
snapshot: prior,
error: nil)
self.installFailingCodexProvider(
on: store,
error: TestRefreshError(message: "non-preservable failure"))
await store.refreshProvider(.codex, allowDisabled: true)
await store.refreshProvider(.codex, allowDisabled: true)
#expect(store.snapshots[.codex] == nil)
#expect(store.lastKnownResetSnapshots[.codex]?.updatedAt == prior.updatedAt)
#expect(store.lastCodexUsagePublicationGuard?.accountKey == email)
let primaryOnly = OpenAIDashboardSnapshot(
signedInEmail: email,
codeReviewRemainingPercent: nil,
creditEvents: [],
dailyBreakdown: [],
usageBreakdown: [],
creditsPurchaseURL: nil,
primaryLimit: RateWindow(
usedPercent: 18,
windowMinutes: 300,
resetsAt: now.addingTimeInterval(4 * 60 * 60),
resetDescription: nil),
secondaryLimit: nil,
creditsRemaining: nil,
accountPlan: "Pro",
updatedAt: now.addingTimeInterval(-40))
await store.applyOpenAIDashboard(
primaryOnly,
targetEmail: email,
allowCodexUsageBackfill: true)
let primaryOnlyPublishedAt = store.snapshots[.codex]?.updatedAt
#expect(primaryOnlyPublishedAt == primaryOnly.updatedAt)
#expect(store.snapshots[.codex]?.secondary == nil)
let loader = SequencedCodexSnapshotLoader(steps: [
.success(self.codexWeeklySnapshot(
email: email,
weeklyUsedPercent: 0.2,
weeklyReset: boundary,
updatedAt: now.addingTimeInterval(-30))),
.success(self.codexWeeklySnapshot(
email: email,
weeklyUsedPercent: 0.5,
weeklyReset: boundary,
updatedAt: now.addingTimeInterval(-20))),
])
self.installContextualCodexProvider(on: store) { _ in try await loader.load() }
await store.refreshProvider(.codex, allowDisabled: true)
#expect(await loader.callCount == 2)
#expect(store.snapshots[.codex]?.updatedAt == primaryOnlyPublishedAt)
#expect(store.snapshots[.codex]?.secondary == nil)
#expect(store.lastKnownResetSnapshots[.codex]?.updatedAt == prior.updatedAt)
#expect(store.lastKnownResetSnapshots[.codex]?.secondary?.usedPercent == 73)
}
}