Some checks failed
CI / lint-typecheck (pull_request) Failing after 12s
CI / tests (pull_request) Has been skipped
CI / contract-tests (pull_request) Has been skipped
CI / e2e-tests (pull_request) Has been skipped
CI / comment-pr (pull_request) Has been skipped
CI / commit-types (pull_request) Has been skipped
81 lines
2.7 KiB
TypeScript
81 lines
2.7 KiB
TypeScript
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);
|
|
});
|
|
});
|