import { render, screen } from '@testing-library/react'; import { ActivityStreak } from './activity-streaks'; jest.mock('@vegaprotocol/network-parameters', () => ({ ...jest.requireActual('@vegaprotocol/network-parameters'), useNetworkParams: jest.fn(() => ({ params: { rewards_activityStreak_inactivityLimit: '3', }, loading: false, error: null, })), })); describe('ActivityStreak', () => { it('renders null when streak is not active', () => { const tiers: { minimum_activity_streak: number; reward_multiplier: string; vesting_multiplier: string; }[] = []; const streak = null; render(); const component = screen.queryByText(/epochs streak/i); expect(component).toBeNull(); }); it('renders null when tiers are empty', () => { const tiers: { minimum_activity_streak: number; reward_multiplier: string; vesting_multiplier: string; }[] = []; const streak = { activeFor: 10, isActive: true, inactiveFor: 10, rewardDistributionMultiplier: '45678', rewardVestingMultiplier: '45678', epoch: 10, tradedVolume: '45678', openVolume: '45678', }; render(); const component = screen.queryByText(/epochs streak/i); expect(component).toBeNull(); }); it('renders the component with tiers and active streak', () => { const tiers = [ { minimum_activity_streak: 5, reward_multiplier: '1.5x', vesting_multiplier: '2x', }, { minimum_activity_streak: 10, reward_multiplier: '2x', vesting_multiplier: '3x', }, ]; const streak = { activeFor: 7, isActive: true, inactiveFor: 10, rewardDistributionMultiplier: '45678', rewardVestingMultiplier: '45678', epoch: 10, tradedVolume: '45678', openVolume: '45678', }; render(); const tierLabels = screen.getAllByText(/Tier/i); expect(tierLabels.length).toBe(3); // 2 tiers + 1 label }); });