Files
2026-07-13 12:22:33 +08:00

71 lines
2.3 KiB
Swift

import CodexBarCore
import Foundation
import Testing
@testable import CodexBar
struct ZaiMenuCardTests {
@Test
func `zai metrics titles are Tokens MCP and 5-hour when session token limit present`() throws {
let now = Date()
let zai = ZaiUsageSnapshot(
tokenLimit: ZaiLimitEntry(
type: .tokensLimit,
unit: .weeks,
number: 1,
usage: nil,
currentValue: nil,
remaining: nil,
percentage: 9,
usageDetails: [],
nextResetTime: nil),
sessionTokenLimit: ZaiLimitEntry(
type: .tokensLimit,
unit: .hours,
number: 5,
usage: 1000,
currentValue: 750,
remaining: 250,
percentage: 25,
usageDetails: [],
nextResetTime: nil),
timeLimit: ZaiLimitEntry(
type: .timeLimit,
unit: .minutes,
number: 1,
usage: 100,
currentValue: 50,
remaining: 50,
percentage: 50,
usageDetails: [],
nextResetTime: nil),
planName: "pro",
updatedAt: now)
let snapshot = zai.toUsageSnapshot()
let metadata = try #require(ProviderDefaults.metadata[.zai])
let model = UsageMenuCardView.Model.make(.init(
provider: .zai,
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: true,
hidePersonalInfo: false,
now: now))
#expect(model.metrics.map(\.title) == ["Tokens", "MCP", "5-hour"])
let tertiary = try #require(model.metrics.first(where: { $0.title == "5-hour" }))
#expect(tertiary.detailText == "750 / 1K (250 remaining)")
}
}