near-protocol-rewards
Version:
A transparent, metric-based rewards system for NEAR projects
37 lines (36 loc) • 1.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const github_1 = require("../../src/collectors/github");
const logger_1 = require("../../src/utils/logger");
const rate_limiter_1 = require("../../src/utils/rate-limiter");
describe("Live API Integration", () => {
let collector;
beforeEach(() => {
const logger = new logger_1.ConsoleLogger();
const rateLimiter = new rate_limiter_1.RateLimiter({ maxRequestsPerSecond: 1 }); // Very low limit for testing
collector = new github_1.GitHubCollector({
token: process.env.GITHUB_TOKEN,
repo: process.env.TEST_GITHUB_REPO,
logger,
rateLimiter,
});
});
it("should handle rate limits gracefully", async () => {
// Skip if no token provided
if (!process.env.GITHUB_TOKEN) {
console.warn("Skipping test: No GitHub token provided");
return;
}
// Make multiple concurrent requests to trigger rate limiting
const promises = Array(5)
.fill(null)
.map(() => collector.testConnection());
const results = await Promise.allSettled(promises);
const rejected = results.filter((r) => r.status === "rejected");
// At least one request should succeed
const fulfilled = results.filter((r) => r.status === "fulfilled");
expect(fulfilled.length).toBeGreaterThan(0);
// Some requests might be rate limited
expect(rejected.length).toBeLessThanOrEqual(promises.length);
});
});