UNPKG

near-protocol-rewards

Version:

A transparent, metric-based rewards system for NEAR projects

52 lines (51 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const sdk_1 = require("../../src/sdk"); const shouldSkipTests = process.env.SKIP_INTEGRATION_TESTS === "true" || !process.env.GITHUB_TOKEN; (shouldSkipTests ? describe.skip : describe)("Full Reward Cycle E2E", () => { let sdk; beforeEach(() => { sdk = new sdk_1.GitHubRewardsSDK({ githubToken: process.env.GITHUB_TOKEN, githubRepo: process.env.TEST_GITHUB_REPO, isTestMode: true, }); }); afterEach(async () => { try { await sdk.stopTracking(); } catch (error) { // Ignore cleanup errors } }); it("should complete a full reward cycle", async () => { await expect(sdk.startTracking()).resolves.not.toThrow(); const metrics = await sdk.getMetrics(); expect(metrics).toBeDefined(); expect(metrics?.github).toBeDefined(); }); it("should handle reward cycle edge cases", async () => { await expect(sdk.startTracking()).resolves.not.toThrow(); const metrics = await sdk.getMetrics(); expect(metrics).toBeDefined(); expect(metrics?.score).toBeDefined(); }); it("should maintain reward constraints", async () => { await expect(sdk.startTracking()).resolves.not.toThrow(); const metrics = await sdk.getMetrics(); expect(metrics).toBeDefined(); expect(metrics?.score.total).toBeLessThanOrEqual(100); }); }); // Keep error handling test separate since it should always run describe("SDK Error Handling", () => { it("should handle GitHub API errors gracefully", async () => { const invalidSdk = new sdk_1.GitHubRewardsSDK({ githubToken: "invalid-token", githubRepo: process.env.TEST_GITHUB_REPO || "test-org/test-repo", isTestMode: true, }); await expect(invalidSdk.startTracking()).rejects.toThrow(/Bad credentials/); }); });