wip league admin tools
This commit is contained in:
79
apps/website/components/leagues/LeagueSchedule.test.tsx
Normal file
79
apps/website/components/leagues/LeagueSchedule.test.tsx
Normal file
@@ -0,0 +1,79 @@
|
||||
import * as React from 'react';
|
||||
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import '@testing-library/jest-dom';
|
||||
|
||||
import LeagueSchedule from './LeagueSchedule';
|
||||
import { LeagueScheduleViewModel } from '@/lib/view-models/LeagueScheduleViewModel';
|
||||
|
||||
const mockPush = vi.fn();
|
||||
|
||||
vi.mock('next/navigation', () => ({
|
||||
useRouter: () => ({
|
||||
push: mockPush,
|
||||
}),
|
||||
}));
|
||||
|
||||
vi.mock('@/hooks/useEffectiveDriverId', () => ({
|
||||
useEffectiveDriverId: () => 'driver-123',
|
||||
}));
|
||||
|
||||
const mockUseLeagueSchedule = vi.fn();
|
||||
vi.mock('@/hooks/useLeagueService', () => ({
|
||||
useLeagueSchedule: (...args: unknown[]) => mockUseLeagueSchedule(...args),
|
||||
}));
|
||||
|
||||
vi.mock('@/hooks/useRaceService', () => ({
|
||||
useRegisterForRace: () => ({
|
||||
mutateAsync: vi.fn(),
|
||||
isPending: false,
|
||||
}),
|
||||
useWithdrawFromRace: () => ({
|
||||
mutateAsync: vi.fn(),
|
||||
isPending: false,
|
||||
}),
|
||||
}));
|
||||
|
||||
describe('LeagueSchedule', () => {
|
||||
beforeEach(() => {
|
||||
vi.useFakeTimers();
|
||||
vi.setSystemTime(new Date('2025-01-01T00:00:00Z'));
|
||||
mockPush.mockReset();
|
||||
mockUseLeagueSchedule.mockReset();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vi.useRealTimers();
|
||||
});
|
||||
|
||||
it('renders a schedule race (no crash)', () => {
|
||||
mockUseLeagueSchedule.mockReturnValue({
|
||||
isLoading: false,
|
||||
data: new LeagueScheduleViewModel([
|
||||
{
|
||||
id: 'race-1',
|
||||
name: 'Round 1',
|
||||
scheduledAt: new Date('2025-01-02T20:00:00Z'),
|
||||
isPast: false,
|
||||
isUpcoming: true,
|
||||
status: 'scheduled',
|
||||
},
|
||||
]),
|
||||
});
|
||||
|
||||
render(<LeagueSchedule leagueId="league-1" />);
|
||||
|
||||
expect(screen.getByText('Round 1')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('renders loading state while schedule is loading', () => {
|
||||
mockUseLeagueSchedule.mockReturnValue({
|
||||
isLoading: true,
|
||||
data: undefined,
|
||||
});
|
||||
|
||||
render(<LeagueSchedule leagueId="league-1" />);
|
||||
|
||||
expect(screen.getByText('Loading schedule...')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user