UNPKG

near-protocol-rewards

Version:

A transparent, metric-based rewards system for NEAR projects

73 lines (72 loc) 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const github_rewards_1 = require("../../src/calculator/github-rewards"); const logger_1 = require("../../src/utils/logger"); const github_1 = require("../../src/validators/github"); describe("GitHubRewardsCalculator", () => { let calculator; let validator; const logger = new logger_1.ConsoleLogger("error"); beforeEach(() => { validator = new github_1.GitHubValidator({ logger, minCommits: 10, maxCommitsPerDay: 15, minAuthors: 2, minReviewPrRatio: 0.5, }); calculator = new github_rewards_1.GitHubRewardsCalculator({ commits: 0.35, pullRequests: 0.25, reviews: 0.2, issues: 0.2, }, { commits: 100, pullRequests: 20, reviews: 30, issues: 30, }, logger, validator); }); describe("Reward Tiers", () => { it("should calculate Diamond tier (90-100)", () => { const metrics = { commits: { count: 100, frequency: { daily: [10, 15, 20, 25, 15, 10, 5], weekly: 100, monthly: 400, }, authors: [ { login: "user1", count: 50 }, { login: "user2", count: 30 }, { login: "user3", count: 20 }, ], }, pullRequests: { open: 5, merged: 20, closed: 25, authors: ["user1", "user2", "user3"], }, reviews: { count: 30, authors: ["user1", "user2", "user3"], }, issues: { open: 10, closed: 30, participants: ["user1", "user2", "user3"], }, metadata: { collectionTimestamp: Date.now(), source: "github", projectId: "test-org/test-repo", }, }; const result = calculator.calculateRewards(metrics, "month"); expect(result.score.total).toBeGreaterThanOrEqual(45); expect(result.score.total).toBeLessThanOrEqual(50); }); }); });