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

96 lines
3.3 KiB
Swift

import CodexBarCore
import Foundation
import Testing
@testable import CodexBar
struct GeminiMenuCardTests {
@Test
func `gemini plan preserves upstream acronym casing`() throws {
let identity = ProviderIdentitySnapshot(
providerID: .gemini,
accountEmail: nil,
accountOrganization: nil,
loginMethod: "Gemini Code Assist in Google One AI Pro")
let snapshot = UsageSnapshot(
primary: nil,
secondary: nil,
tertiary: nil,
updatedAt: Date(timeIntervalSince1970: 0),
identity: identity)
let metadata = try #require(ProviderDefaults.metadata[.gemini])
let model = UsageMenuCardView.Model.make(.init(
provider: .gemini,
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: Date(timeIntervalSince1970: 0)))
#expect(model.planText == "Gemini Code Assist in Google One AI Pro")
}
@Test
func `gemini model uses flash lite title for tertiary metric`() throws {
let now = Date()
let identity = ProviderIdentitySnapshot(
providerID: .gemini,
accountEmail: "gemini@example.com",
accountOrganization: nil,
loginMethod: "Paid")
let snapshot = UsageSnapshot(
primary: RateWindow(
usedPercent: 0,
windowMinutes: 1440,
resetsAt: now.addingTimeInterval(3600),
resetDescription: "Resets in 1h"),
secondary: RateWindow(
usedPercent: 25,
windowMinutes: 1440,
resetsAt: now.addingTimeInterval(7200),
resetDescription: "Resets in 2h"),
tertiary: RateWindow(
usedPercent: 40,
windowMinutes: 1440,
resetsAt: now.addingTimeInterval(10800),
resetDescription: "Resets in 3h"),
updatedAt: now,
identity: identity)
let metadata = try #require(ProviderDefaults.metadata[.gemini])
let model = UsageMenuCardView.Model.make(.init(
provider: .gemini,
metadata: metadata,
snapshot: snapshot,
credits: nil,
creditsError: nil,
dashboard: nil,
dashboardError: nil,
tokenSnapshot: nil,
tokenError: nil,
account: AccountInfo(email: "gemini@example.com", plan: "Paid"),
isRefreshing: false,
lastError: nil,
usageBarsShowUsed: false,
resetTimeDisplayStyle: .countdown,
tokenCostUsageEnabled: false,
showOptionalCreditsAndExtraUsage: true,
hidePersonalInfo: false,
now: now))
#expect(model.metrics.map(\.title) == ["Pro", "Flash", "Flash Lite"])
}
}