53 lines
2.0 KiB
Swift
53 lines
2.0 KiB
Swift
import CodexBarCore
|
|
import Foundation
|
|
import Testing
|
|
@testable import CodexBarCLI
|
|
|
|
struct Sub2APICLIOutputTests {
|
|
@Test
|
|
func `subscription labels and per key totals reach CLI output`() {
|
|
let snapshot = UsageSnapshot(
|
|
primary: RateWindow(usedPercent: 10, windowMinutes: 1440, resetsAt: nil, resetDescription: "$1 / $10"),
|
|
secondary: RateWindow(
|
|
usedPercent: 20,
|
|
windowMinutes: 10080,
|
|
resetsAt: nil,
|
|
resetDescription: "$2 / $10"),
|
|
tertiary: RateWindow(
|
|
usedPercent: 30,
|
|
windowMinutes: 43200,
|
|
resetsAt: nil,
|
|
resetDescription: "$3 / $10"),
|
|
sub2APIUsage: Sub2APIUsageDetails(
|
|
kind: .subscription,
|
|
balance: 42.5,
|
|
unit: "USD",
|
|
today: .init(requests: 4, totalTokens: 1200, actualCostUSD: 1.25),
|
|
total: .init(requests: 40, totalTokens: 12000, actualCostUSD: 25)),
|
|
updatedAt: Date(timeIntervalSince1970: 1),
|
|
identity: ProviderIdentitySnapshot(
|
|
providerID: .sub2api,
|
|
accountEmail: nil,
|
|
accountOrganization: "Enterprise",
|
|
loginMethod: "Enterprise"))
|
|
|
|
let output = CLIRenderer.renderText(
|
|
provider: .sub2api,
|
|
snapshot: snapshot,
|
|
credits: nil,
|
|
context: RenderContext(
|
|
header: "sub2api",
|
|
status: nil,
|
|
useColor: false,
|
|
resetStyle: .absolute))
|
|
|
|
#expect(output.contains("Daily quota:"))
|
|
#expect(output.contains("Weekly quota:"))
|
|
#expect(output.contains("Monthly quota:"))
|
|
#expect(output.contains("Balance: $42.50"))
|
|
#expect(output.contains("Today: 4 requests · 1.2K tokens · $1.25"))
|
|
#expect(output.contains("Total: 40 requests · 12K tokens · $25.00"))
|
|
#expect(output.contains("Plan: Enterprise"))
|
|
}
|
|
}
|