60 lines
1.9 KiB
Swift
60 lines
1.9 KiB
Swift
import Testing
|
|
@testable import CodexBarCore
|
|
|
|
struct CursorLegacyRequestProjectionTests {
|
|
@Test
|
|
func `legacy plan hides token-based auto and api bars`() {
|
|
let snapshot = Self.snapshot(requestsUsed: 347, requestsLimit: 500)
|
|
|
|
let usageSnapshot = snapshot.toUsageSnapshot()
|
|
|
|
#expect(abs((usageSnapshot.primary?.usedPercent ?? 0) - 69.4) < 0.01)
|
|
#expect(usageSnapshot.cursorRequests?.used == 347)
|
|
#expect(usageSnapshot.cursorRequests?.limit == 500)
|
|
#expect(usageSnapshot.secondary == nil)
|
|
#expect(usageSnapshot.tertiary == nil)
|
|
}
|
|
|
|
@Test
|
|
func `unusable legacy request quota preserves token bars`() {
|
|
let requestCases: [(used: Int?, limit: Int?)] = [
|
|
(nil, 500),
|
|
(12, 0),
|
|
]
|
|
|
|
for requestCase in requestCases {
|
|
let usageSnapshot = Self.snapshot(
|
|
requestsUsed: requestCase.used,
|
|
requestsLimit: requestCase.limit).toUsageSnapshot()
|
|
|
|
#expect(usageSnapshot.primary?.usedPercent == 7.0)
|
|
#expect(usageSnapshot.cursorRequests == nil)
|
|
#expect(usageSnapshot.secondary?.usedPercent == 11.0)
|
|
#expect(usageSnapshot.tertiary?.usedPercent == 22.0)
|
|
}
|
|
}
|
|
|
|
private static func snapshot(
|
|
requestsUsed: Int?,
|
|
requestsLimit: Int?) -> CursorStatusSnapshot
|
|
{
|
|
CursorStatusSnapshot(
|
|
planPercentUsed: 7.0,
|
|
autoPercentUsed: 11.0,
|
|
apiPercentUsed: 22.0,
|
|
planUsedUSD: 1.4,
|
|
planLimitUSD: 20.0,
|
|
onDemandUsedUSD: 0,
|
|
onDemandLimitUSD: nil,
|
|
teamOnDemandUsedUSD: nil,
|
|
teamOnDemandLimitUSD: nil,
|
|
billingCycleEnd: nil,
|
|
membershipType: "pro",
|
|
accountEmail: "user@example.com",
|
|
accountName: nil,
|
|
rawJSON: nil,
|
|
requestsUsed: requestsUsed,
|
|
requestsLimit: requestsLimit)
|
|
}
|
|
}
|