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) } }