import { describe, it, expect, beforeEach } from 'vitest'; import { LeaguesTestContext } from '../LeaguesTestContext'; describe('League Roster - Success Path', () => { let context: LeaguesTestContext; beforeEach(() => { context = new LeaguesTestContext(); context.clear(); }); it('should retrieve complete league roster with all members', async () => { const leagueId = 'league-123'; const ownerId = 'driver-1'; const adminId = 'driver-2'; const driverId = 'driver-3'; await context.leagueRepository.create({ id: leagueId, name: 'Test League', description: null, visibility: 'public', ownerId, status: 'active', createdAt: new Date(), updatedAt: new Date(), maxDrivers: null, approvalRequired: true, lateJoinAllowed: true, raceFrequency: null, raceDay: null, raceTime: null, tracks: null, scoringSystem: null, bonusPointsEnabled: true, penaltiesEnabled: true, protestsEnabled: true, appealsEnabled: true, stewardTeam: null, gameType: null, skillLevel: null, category: null, tags: null, }); context.leagueRepository.addLeagueMembers(leagueId, [ { driverId: ownerId, name: 'Owner Driver', role: 'owner', joinDate: new Date('2024-01-01') }, { driverId: adminId, name: 'Admin Driver', role: 'admin', joinDate: new Date('2024-01-15') }, { driverId: driverId, name: 'Regular Driver', role: 'member', joinDate: new Date('2024-02-01') }, ]); context.leagueRepository.addPendingRequests(leagueId, [ { id: 'request-1', driverId: 'driver-4', name: 'Pending Driver', requestDate: new Date('2024-02-15') }, ]); const result = await context.getLeagueRosterUseCase.execute({ leagueId }); expect(result).toBeDefined(); expect(result.members).toHaveLength(3); expect(result.pendingRequests).toHaveLength(1); expect(result.stats.adminCount).toBe(2); expect(result.stats.driverCount).toBe(1); expect(context.eventPublisher.getLeagueRosterAccessedEventCount()).toBe(1); }); it('should retrieve league roster with minimal members', async () => { const ownerId = 'driver-owner'; const league = await context.createLeague({ ownerId }); context.leagueRepository.addLeagueMembers(league.id, [ { driverId: ownerId, name: 'Owner Driver', role: 'owner', joinDate: new Date('2024-01-01') }, ]); const result = await context.getLeagueRosterUseCase.execute({ leagueId: league.id }); expect(result.members).toHaveLength(1); expect(result.members[0]!.role).toBe('owner'); expect(result.stats.adminCount).toBe(1); }); });