chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
import CodexBarCore
|
||||
import Foundation
|
||||
import Testing
|
||||
@testable import CodexBar
|
||||
|
||||
struct MenuCardRefreshTests {
|
||||
private static func makeModel(
|
||||
provider: UsageProvider,
|
||||
snapshot: UsageSnapshot,
|
||||
isRefreshing: Bool,
|
||||
now: Date) throws -> UsageMenuCardView.Model
|
||||
{
|
||||
let metadata = try #require(ProviderDefaults.metadata[provider])
|
||||
return UsageMenuCardView.Model.make(.init(
|
||||
provider: provider,
|
||||
metadata: metadata,
|
||||
snapshot: snapshot,
|
||||
credits: nil,
|
||||
creditsError: nil,
|
||||
dashboard: nil,
|
||||
dashboardError: nil,
|
||||
tokenSnapshot: nil,
|
||||
tokenError: nil,
|
||||
account: AccountInfo(email: nil, plan: nil),
|
||||
isRefreshing: isRefreshing,
|
||||
lastError: nil,
|
||||
usageBarsShowUsed: false,
|
||||
resetTimeDisplayStyle: .countdown,
|
||||
tokenCostUsageEnabled: false,
|
||||
showOptionalCreditsAndExtraUsage: true,
|
||||
hidePersonalInfo: false,
|
||||
now: now))
|
||||
}
|
||||
|
||||
@Test
|
||||
func `background refresh keeps quota timing current`() throws {
|
||||
let updatedAt = Date(timeIntervalSince1970: 1_800_000_000)
|
||||
for provider in [UsageProvider.claude, .codex] {
|
||||
let snapshot = UsageSnapshot(
|
||||
primary: RateWindow(
|
||||
usedPercent: 21,
|
||||
windowMinutes: 300,
|
||||
resetsAt: updatedAt.addingTimeInterval(4 * 60 * 60 + 40 * 60),
|
||||
resetDescription: nil),
|
||||
secondary: nil,
|
||||
updatedAt: updatedAt,
|
||||
identity: ProviderIdentitySnapshot(
|
||||
providerID: provider,
|
||||
accountEmail: nil,
|
||||
accountOrganization: nil,
|
||||
loginMethod: "Pro"))
|
||||
let completedModel = try Self.makeModel(
|
||||
provider: provider,
|
||||
snapshot: snapshot,
|
||||
isRefreshing: false,
|
||||
now: updatedAt)
|
||||
let refreshingModel = try Self.makeModel(
|
||||
provider: provider,
|
||||
snapshot: snapshot,
|
||||
isRefreshing: true,
|
||||
now: updatedAt.addingTimeInterval(10 * 60))
|
||||
|
||||
let completedMetric = try #require(completedModel.metrics.first)
|
||||
let refreshingMetric = try #require(refreshingModel.metrics.first)
|
||||
#expect(refreshingModel.subtitleText == "Refreshing…")
|
||||
#expect(refreshingMetric.percentLabel == completedMetric.percentLabel)
|
||||
#expect(completedMetric.resetText == "Resets in 4h 40m")
|
||||
#expect(refreshingMetric.resetText == "Resets in 4h 30m")
|
||||
#expect(refreshingMetric.detailLeftText != completedMetric.detailLeftText)
|
||||
#expect(refreshingMetric.detailRightText != completedMetric.detailRightText)
|
||||
#expect(refreshingMetric.pacePercent != completedMetric.pacePercent)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user