Includes provider integrations, settings, NSStatusItem UI, tests, Makefile, and README with screenshot. Co-authored-by: Cursor <cursoragent@cursor.com>
34 lines
1.3 KiB
Swift
34 lines
1.3 KiB
Swift
import XCTest
|
|
@testable import AIMenubarUsage
|
|
|
|
final class ClaudeCLIParserTests: XCTestCase {
|
|
func testParseUsageTextFromCLIOutput() {
|
|
let text = """
|
|
You are currently using your subscription to power your Claude Code usage
|
|
|
|
Current session: 0% used
|
|
Current week (all models): 6% used · resets Jul 31 at 11am (Europe/Madrid)
|
|
Current week (Fable): 0% used
|
|
"""
|
|
|
|
let parsed = ClaudeCLIUsageService.parseUsageText(text)
|
|
XCTAssertEqual(parsed.sessionPercent, 0)
|
|
XCTAssertEqual(parsed.weeklyPercent, 6)
|
|
XCTAssertEqual(parsed.weeklyResetText, "Jul 31 at 11am (Europe/Madrid)")
|
|
XCTAssertEqual(parsed.modelWeekly["Fable"], 0)
|
|
}
|
|
|
|
func testSnapshotFromParsedUsage() {
|
|
let parsed = ClaudeCLIParsedUsage(
|
|
sessionPercent: 42,
|
|
weeklyPercent: 15,
|
|
weeklyResetText: "Jul 31 at 11am",
|
|
modelWeekly: ["Opus": 10, "Sonnet": 5]
|
|
)
|
|
|
|
let snapshot = ClaudeCLIUsageService.snapshot(from: parsed, fetchedAt: Date(), isStale: false)
|
|
XCTAssertEqual(snapshot.formatted(.claudeFiveHourUtilization), "42%")
|
|
XCTAssertEqual(snapshot.formatted(.claudeSevenDayUtilization), "15%")
|
|
XCTAssertEqual(snapshot.formatted(.claudeSevenDayOpusUtilization), "10%")
|
|
}
|
|
}
|