core tests
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||
import { GetLeagueRosterUseCase } from './GetLeagueRosterUseCase';
|
||||
|
||||
describe('GetLeagueRosterUseCase', () => {
|
||||
let mockLeagueRepository: any;
|
||||
let mockEventPublisher: any;
|
||||
let useCase: GetLeagueRosterUseCase;
|
||||
|
||||
const mockLeague = { id: 'league-1' };
|
||||
const mockMembers = [
|
||||
{ driverId: 'd1', name: 'Owner', role: 'owner', joinDate: new Date() },
|
||||
{ driverId: 'd2', name: 'Admin', role: 'admin', joinDate: new Date() },
|
||||
{ driverId: 'd3', name: 'Member', role: 'member', joinDate: new Date() },
|
||||
];
|
||||
const mockRequests = [
|
||||
{ id: 'r1', driverId: 'd4', name: 'Requester', requestDate: new Date() },
|
||||
];
|
||||
|
||||
beforeEach(() => {
|
||||
mockLeagueRepository = {
|
||||
findById: vi.fn().mockResolvedValue(mockLeague),
|
||||
getLeagueMembers: vi.fn().mockResolvedValue(mockMembers),
|
||||
getPendingRequests: vi.fn().mockResolvedValue(mockRequests),
|
||||
};
|
||||
mockEventPublisher = {
|
||||
emitLeagueRosterAccessed: vi.fn().mockResolvedValue(undefined),
|
||||
};
|
||||
useCase = new GetLeagueRosterUseCase(mockLeagueRepository, mockEventPublisher);
|
||||
});
|
||||
|
||||
it('should return roster with members, requests and stats', async () => {
|
||||
const result = await useCase.execute({ leagueId: 'league-1' });
|
||||
|
||||
expect(result.members).toHaveLength(3);
|
||||
expect(result.pendingRequests).toHaveLength(1);
|
||||
expect(result.stats.adminCount).toBe(2); // owner + admin
|
||||
expect(result.stats.driverCount).toBe(1);
|
||||
expect(mockEventPublisher.emitLeagueRosterAccessed).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should throw error if league not found', async () => {
|
||||
mockLeagueRepository.findById.mockResolvedValue(null);
|
||||
await expect(useCase.execute({ leagueId: 'invalid' })).rejects.toThrow('League with id invalid not found');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user