95 lines · 3.4 KB · Swift
RawDownload
import CodexBarCoreimport Foundationimport Testing@testable import CodexBar struct CodexResetCreditsMenuCardTests {    @Test    func `reset credits render when optional usage is enabled`() throws {        let metadata = try #require(ProviderDefaults.metadata[.codex])        let now = Date(timeIntervalSince1970: 1_781_726_400)        let usage = UsageSnapshot(            primary: RateWindow(usedPercent: 25, windowMinutes: 300, resetsAt: nil, resetDescription: nil),            secondary: nil,            codexResetCredits: CodexRateLimitResetCreditsSnapshot(                credits: [                    CodexRateLimitResetCredit(                        id: "reset-1",                        resetType: "codex_rate_limits",                        status: .available,                        grantedAt: now,                        expiresAt: now.addingTimeInterval(86400),                        redeemStartedAt: nil,                        redeemedAt: nil,                        title: "One free rate limit reset",                        description: nil),                ],                availableCount: 1,                updatedAt: now),            updatedAt: now,            identity: ProviderIdentitySnapshot(                providerID: .codex,                accountEmail: "user@example.com",                accountOrganization: nil,                loginMethod: "pro"))         let model = UsageMenuCardView.Model.make(Self.input(            metadata: metadata,            snapshot: usage,            showOptionalUsage: true,            now: now))         #expect(model.codexResetCreditsText == "1 manual reset available")        #expect(model.codexResetCreditsDetailText == "Next expires in 1d")    }     @Test    func `reset credits hide with optional usage disabled`() throws {        let metadata = try #require(ProviderDefaults.metadata[.codex])        let now = Date(timeIntervalSince1970: 1_781_726_400)        let usage = UsageSnapshot(            primary: RateWindow(usedPercent: 25, windowMinutes: 300, resetsAt: nil, resetDescription: nil),            secondary: nil,            codexResetCredits: CodexRateLimitResetCreditsSnapshot(                credits: [],                availableCount: 2,                updatedAt: now),            updatedAt: now)         let model = UsageMenuCardView.Model.make(Self.input(            metadata: metadata,            snapshot: usage,            showOptionalUsage: false,            now: now))         #expect(model.codexResetCreditsText == nil)        #expect(model.codexResetCreditsDetailText == nil)    }     private static func input(        metadata: ProviderMetadata,        snapshot: UsageSnapshot,        showOptionalUsage: Bool,        now: Date) -> UsageMenuCardView.Model.Input    {        UsageMenuCardView.Model.Input(            provider: .codex,            metadata: metadata,            snapshot: snapshot,            credits: nil,            creditsError: nil,            dashboard: nil,            dashboardError: nil,            tokenSnapshot: nil,            tokenError: nil,            account: AccountInfo(email: nil, plan: nil),            isRefreshing: false,            lastError: nil,            usageBarsShowUsed: false,            resetTimeDisplayStyle: .countdown,            tokenCostUsageEnabled: false,            showOptionalCreditsAndExtraUsage: showOptionalUsage,            hidePersonalInfo: false,            now: now)    }}