macos-ai-menubar-usage/AIMenubarUsageTests/CursorProviderTests.swift
Felipe M. 00c4e33171
Initial commit: AI Menubar Usage — macOS menu bar app for Cursor and Claude.
Includes provider integrations, settings, NSStatusItem UI, tests, Makefile, and README with screenshot.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 20:41:40 +02:00

32 lines
1.3 KiB
Swift

import XCTest
@testable import AIMenubarUsage
final class CursorProviderTests: XCTestCase {
func testDecodeUsageSummaryFixture() throws {
let data = try loadFixture(named: "cursor-usage-summary")
let summary = try JSONDecoder().decode(CursorUsageSummary.self, from: data)
XCTAssertEqual(summary.membershipType, "pro")
XCTAssertEqual(summary.individualUsage.plan.totalPercentUsed, 18.0, accuracy: 0.01)
XCTAssertEqual(summary.individualUsage.plan.used, 360)
XCTAssertEqual(summary.individualUsage.onDemand.used, 1250)
}
func testSnapshotMapping() throws {
let data = try loadFixture(named: "cursor-usage-summary")
let summary = try JSONDecoder().decode(CursorUsageSummary.self, from: data)
let snapshot = CursorAPI.snapshot(from: summary, fetchedAt: Date(), isStale: false)
XCTAssertEqual(snapshot.providerID, .cursor)
XCTAssertEqual(snapshot.formatted(.cursorTotalPercentUsed), "18%")
XCTAssertEqual(snapshot.formatted(.cursorOnDemandUsed), "$12.50")
}
private func loadFixture(named name: String) throws -> Data {
let url = URL(fileURLWithPath: #filePath)
.deletingLastPathComponent()
.appendingPathComponent("Fixtures")
.appendingPathComponent("\(name).json")
return try Data(contentsOf: url)
}
}