121 lines · 4.4 KB · Swift
RawDownload
import CodexBarCoreimport Foundationimport Testing@testable import CodexBar struct BedrockMenuCardTests {    @Test    func `bedrock cost section labels latest billing day`() throws {        let now = Date()        let metadata = try #require(ProviderDefaults.metadata[.bedrock])        let tokenSnapshot = CostUsageTokenSnapshot(            sessionTokens: nil,            sessionCostUSD: 12.34,            last30DaysTokens: nil,            last30DaysCostUSD: 56.78,            historyDays: 7,            daily: [                CostUsageDailyReport.Entry(                    date: "2026-05-12",                    inputTokens: nil,                    outputTokens: nil,                    totalTokens: nil,                    costUSD: 12.34,                    modelsUsed: ["Amazon Bedrock"],                    modelBreakdowns: nil),            ],            updatedAt: now)        let model = UsageMenuCardView.Model.make(.init(            provider: .bedrock,            metadata: metadata,            snapshot: nil,            credits: nil,            creditsError: nil,            dashboard: nil,            dashboardError: nil,            tokenSnapshot: tokenSnapshot,            tokenError: nil,            account: AccountInfo(email: nil, plan: nil),            isRefreshing: false,            lastError: nil,            usageBarsShowUsed: false,            resetTimeDisplayStyle: .countdown,            tokenCostUsageEnabled: true,            showOptionalCreditsAndExtraUsage: true,            hidePersonalInfo: false,            now: now))         #expect(model.tokenUsage?.sessionLine == "Latest billing day (May 12): $12.34")        #expect(model.tokenUsage?.sessionLine.contains("Today") == false)        #expect(model.tokenUsage?.monthLine == "Last 7 days: $56.78")        #expect(model.tokenUsage?.hintLine == "AWS Cost Explorer billing can lag.")    }     @Test    func `bedrock cost section picks latest valid billing day`() throws {        let now = Date()        let metadata = try #require(ProviderDefaults.metadata[.bedrock])        let tokenSnapshot = CostUsageTokenSnapshot(            sessionTokens: nil,            sessionCostUSD: 23.45,            last30DaysTokens: nil,            last30DaysCostUSD: 56.78,            historyDays: 7,            daily: [                CostUsageDailyReport.Entry(                    date: "not-a-day",                    inputTokens: nil,                    outputTokens: nil,                    totalTokens: 10,                    costUSD: 99,                    modelsUsed: ["Amazon Bedrock"],                    modelBreakdowns: nil),                CostUsageDailyReport.Entry(                    date: "2026-06-31",                    inputTokens: nil,                    outputTokens: nil,                    totalTokens: 40,                    costUSD: 99,                    modelsUsed: ["Amazon Bedrock"],                    modelBreakdowns: nil),                CostUsageDailyReport.Entry(                    date: "2026-05-12",                    inputTokens: nil,                    outputTokens: nil,                    totalTokens: 20,                    costUSD: 12.34,                    modelsUsed: ["Amazon Bedrock"],                    modelBreakdowns: nil),                CostUsageDailyReport.Entry(                    date: "2026-05-13",                    inputTokens: nil,                    outputTokens: nil,                    totalTokens: 30,                    costUSD: 23.45,                    modelsUsed: ["Amazon Bedrock"],                    modelBreakdowns: nil),            ],            updatedAt: now)        let model = UsageMenuCardView.Model.make(.init(            provider: .bedrock,            metadata: metadata,            snapshot: nil,            credits: nil,            creditsError: nil,            dashboard: nil,            dashboardError: nil,            tokenSnapshot: tokenSnapshot,            tokenError: nil,            account: AccountInfo(email: nil, plan: nil),            isRefreshing: false,            lastError: nil,            usageBarsShowUsed: false,            resetTimeDisplayStyle: .countdown,            tokenCostUsageEnabled: true,            showOptionalCreditsAndExtraUsage: true,            hidePersonalInfo: false,            now: now))         #expect(model.tokenUsage?.sessionLine == "Latest billing day (May 13): $23.45")    }}