UNPKG

near-protocol-rewards

Version:

A transparent, metric-based rewards system for NEAR projects

46 lines (45 loc) 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const wallet_rewards_1 = require("../../../src/calculator/wallet-rewards"); // Test suite for OnChainRewardsCalculator describe('OnChainRewardsCalculator', () => { it('should return 0 points for no volume', () => { const metrics = { transactionVolume: 0, contractInteractions: 0, uniqueWallets: 0 }; const calculator = new wallet_rewards_1.OnChainRewardsCalculator(metrics); const rewards = calculator.calculate(); expect(rewards.totalScore).toBe(0); expect(rewards.breakdown.transactionVolume).toBe(0); expect(rewards.breakdown.contractInteractions).toBe(0); expect(rewards.breakdown.uniqueWallets).toBe(0); }); it('should return intermediate points for medium volume', () => { const metrics = { transactionVolume: 5000, contractInteractions: 250, uniqueWallets: 50 }; const calculator = new wallet_rewards_1.OnChainRewardsCalculator(metrics); const rewards = calculator.calculate(); expect(rewards.totalScore).toBeGreaterThan(0); expect(rewards.breakdown.transactionVolume).toBeGreaterThan(0); expect(rewards.breakdown.contractInteractions).toBeGreaterThan(0); expect(rewards.breakdown.uniqueWallets).toBeGreaterThan(0); }); it('should return maximum points for maximum volume', () => { const metrics = { transactionVolume: 10000, contractInteractions: 500, uniqueWallets: 100 }; const calculator = new wallet_rewards_1.OnChainRewardsCalculator(metrics); const rewards = calculator.calculate(); expect(rewards.totalScore).toBe(50); expect(rewards.breakdown.transactionVolume).toBe(20); expect(rewards.breakdown.contractInteractions).toBe(20); expect(rewards.breakdown.uniqueWallets).toBe(10); }); });