76 lines
3.2 KiB
TypeScript
76 lines
3.2 KiB
TypeScript
import { describe, it, expect, vi, beforeEach, Mock } from 'vitest';
|
|
import { SearchLeaguesUseCase, SearchLeaguesQuery } from './SearchLeaguesUseCase';
|
|
import { LeagueRepository } from '../ports/LeagueRepository';
|
|
|
|
describe('SearchLeaguesUseCase', () => {
|
|
let mockLeagueRepository: LeagueRepository;
|
|
let useCase: SearchLeaguesUseCase;
|
|
|
|
const mockLeagues = [
|
|
{ id: '1', name: 'League 1' },
|
|
{ id: '2', name: 'League 2' },
|
|
{ id: '3', name: 'League 3' },
|
|
];
|
|
|
|
beforeEach(() => {
|
|
mockLeagueRepository = {
|
|
create: vi.fn() as unknown as Mock,
|
|
findById: vi.fn() as unknown as Mock,
|
|
findByName: vi.fn() as unknown as Mock,
|
|
findByOwner: vi.fn() as unknown as Mock,
|
|
search: vi.fn().mockResolvedValue([...mockLeagues]) as unknown as Mock,
|
|
update: vi.fn() as unknown as Mock,
|
|
delete: vi.fn() as unknown as Mock,
|
|
getStats: vi.fn() as unknown as Mock,
|
|
updateStats: vi.fn() as unknown as Mock,
|
|
getFinancials: vi.fn() as unknown as Mock,
|
|
updateFinancials: vi.fn() as unknown as Mock,
|
|
getStewardingMetrics: vi.fn() as unknown as Mock,
|
|
updateStewardingMetrics: vi.fn() as unknown as Mock,
|
|
getPerformanceMetrics: vi.fn() as unknown as Mock,
|
|
updatePerformanceMetrics: vi.fn() as unknown as Mock,
|
|
getRatingMetrics: vi.fn() as unknown as Mock,
|
|
updateRatingMetrics: vi.fn() as unknown as Mock,
|
|
getTrendMetrics: vi.fn() as unknown as Mock,
|
|
updateTrendMetrics: vi.fn() as unknown as Mock,
|
|
getSuccessRateMetrics: vi.fn() as unknown as Mock,
|
|
updateSuccessRateMetrics: vi.fn() as unknown as Mock,
|
|
getResolutionTimeMetrics: vi.fn() as unknown as Mock,
|
|
updateResolutionTimeMetrics: vi.fn() as unknown as Mock,
|
|
getComplexSuccessRateMetrics: vi.fn() as unknown as Mock,
|
|
updateComplexSuccessRateMetrics: vi.fn() as unknown as Mock,
|
|
getComplexResolutionTimeMetrics: vi.fn() as unknown as Mock,
|
|
updateComplexResolutionTimeMetrics: vi.fn() as unknown as Mock,
|
|
getLeagueMembers: vi.fn() as unknown as Mock,
|
|
getPendingRequests: vi.fn() as unknown as Mock,
|
|
addLeagueMembers: vi.fn() as unknown as Mock,
|
|
updateLeagueMember: vi.fn() as unknown as Mock,
|
|
removeLeagueMember: vi.fn() as unknown as Mock,
|
|
addPendingRequests: vi.fn() as unknown as Mock,
|
|
removePendingRequest: vi.fn() as unknown as Mock,
|
|
};
|
|
useCase = new SearchLeaguesUseCase(mockLeagueRepository);
|
|
});
|
|
|
|
it('should return search results with default limit', async () => {
|
|
const query: SearchLeaguesQuery = { query: 'test' };
|
|
const result = await useCase.execute(query);
|
|
|
|
expect(result).toHaveLength(3);
|
|
expect(mockLeagueRepository.search).toHaveBeenCalledWith('test');
|
|
});
|
|
|
|
it('should respect limit and offset', async () => {
|
|
const query: SearchLeaguesQuery = { query: 'test', limit: 1, offset: 1 };
|
|
const result = await useCase.execute(query);
|
|
|
|
expect(result).toHaveLength(1);
|
|
expect(result[0].id).toBe('2');
|
|
});
|
|
|
|
it('should throw error if query is missing', async () => {
|
|
const query = { query: '' } as unknown as SearchLeaguesQuery;
|
|
await expect(useCase.execute(query)).rejects.toThrow('Search query is required');
|
|
});
|
|
});
|