Anton SotkovAdd status view6f556e211 months agoHistory
92 lines · 3.2 KB · Swift
RawDownload
import CodexBarCoreimport Foundationimport Testing@testable import CodexBar @Suitestruct MenuCardModelTests {    @Test    func buildsMetricsUsingRemainingPercent() {        let now = Date()        let snapshot = UsageSnapshot(            primary: RateWindow(                usedPercent: 22,                windowMinutes: 300,                resetsAt: now.addingTimeInterval(3000),                resetDescription: nil),            secondary: RateWindow(                usedPercent: 40,                windowMinutes: 10080,                resetsAt: now.addingTimeInterval(6000),                resetDescription: nil),            updatedAt: now,            accountEmail: "codex@example.com",            loginMethod: "Plus Plan")        let metadata = ProviderDefaults.metadata[.codex]!        let updatedSnap = UsageSnapshot(            primary: snapshot.primary,            secondary: RateWindow(                usedPercent: snapshot.secondary.usedPercent,                windowMinutes: snapshot.secondary.windowMinutes,                resetsAt: now.addingTimeInterval(3600),                resetDescription: nil),            tertiary: snapshot.tertiary,            updatedAt: now,            accountEmail: snapshot.accountEmail,            accountOrganization: snapshot.accountOrganization,            loginMethod: snapshot.loginMethod)         let model = UsageMenuCardView.Model.make(.init(            provider: .codex,            metadata: metadata,            snapshot: updatedSnap,            credits: CreditsSnapshot(remaining: 12, events: [], updatedAt: now),            creditsError: nil,            account: AccountInfo(email: "codex@example.com", plan: "Plus Plan"),            isRefreshing: false,            lastError: nil))         #expect(model.providerName == "Codex")        #expect(model.metrics.count == 2)        #expect(model.metrics.first?.percentLeft == 78)        #expect(model.planText == "Plus")        #expect(model.subtitleText.hasPrefix("Updated"))        #expect(model.progressColor != .clear)        #expect(model.metrics[1].resetText?.isEmpty == false)    }     @Test    func showsErrorSubtitleWhenPresent() {        let metadata = ProviderDefaults.metadata[.codex]!        let model = UsageMenuCardView.Model.make(.init(            provider: .codex,            metadata: metadata,            snapshot: nil,            credits: nil,            creditsError: nil,            account: AccountInfo(email: nil, plan: nil),            isRefreshing: false,            lastError: "Probe failed for Codex"))         #expect(model.subtitleStyle == .error)        #expect(model.subtitleText.contains("Probe failed"))        #expect(model.placeholder == nil)    }     @Test    func claudeModelDoesNotLeakCodexPlan() {        let metadata = ProviderDefaults.metadata[.claude]!        let model = UsageMenuCardView.Model.make(.init(            provider: .claude,            metadata: metadata,            snapshot: nil,            credits: nil,            creditsError: nil,            account: AccountInfo(email: "codex@example.com", plan: "plus"),            isRefreshing: false,            lastError: nil))         #expect(model.planText == nil)        #expect(model.email.isEmpty)    }}