refactor use cases

This commit is contained in:
2026-01-08 15:34:51 +01:00
parent d984ab24a8
commit 52e9a2f6a7
362 changed files with 5192 additions and 8409 deletions

View File

@@ -10,8 +10,8 @@ import { ILeagueRepository } from '../../domain/repositories/ILeagueRepository';
import { IResultRepository } from '../../domain/repositories/IResultRepository';
import { IDriverRepository } from '../../domain/repositories/IDriverRepository';
import { IStandingRepository } from '../../domain/repositories/IStandingRepository';
import type { Logger, UseCaseOutputPort } from '@core/shared/application';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
import type { Logger } from '@core/shared/application';
describe('ImportRaceResultsUseCase', () => {
let useCase: ImportRaceResultsUseCase;
@@ -37,8 +37,6 @@ describe('ImportRaceResultsUseCase', () => {
warn: Mock;
error: Mock;
};
let output: UseCaseOutputPort<ImportRaceResultsResult> & { present: Mock };
beforeEach(() => {
raceRepository = {
findById: vi.fn(),
@@ -62,19 +60,12 @@ describe('ImportRaceResultsUseCase', () => {
warn: vi.fn(),
error: vi.fn(),
};
output = {
present: vi.fn(),
} as unknown as UseCaseOutputPort<ImportRaceResultsResult> & { present: Mock };
useCase = new ImportRaceResultsUseCase(
raceRepository as unknown as IRaceRepository,
useCase = new ImportRaceResultsUseCase(raceRepository as unknown as IRaceRepository,
leagueRepository as unknown as ILeagueRepository,
resultRepository as unknown as IResultRepository,
driverRepository as unknown as IDriverRepository,
standingRepository as unknown as IStandingRepository,
logger as unknown as Logger,
output,
);
logger as unknown as Logger);
});
it('should return race not found error', async () => {
@@ -93,7 +84,6 @@ describe('ImportRaceResultsUseCase', () => {
code: 'RACE_NOT_FOUND',
details: { message: 'Race race-1 not found' },
});
expect(output.present).not.toHaveBeenCalled();
});
it('should return league not found error', async () => {
@@ -113,7 +103,6 @@ describe('ImportRaceResultsUseCase', () => {
code: 'LEAGUE_NOT_FOUND',
details: { message: 'League league-1 not found' },
});
expect(output.present).not.toHaveBeenCalled();
});
it('should return results exist error', async () => {
@@ -134,7 +123,6 @@ describe('ImportRaceResultsUseCase', () => {
code: 'RESULTS_EXIST',
details: { message: 'Results already exist for this race' },
});
expect(output.present).not.toHaveBeenCalled();
});
it('should return driver not found error', async () => {
@@ -168,7 +156,6 @@ describe('ImportRaceResultsUseCase', () => {
code: 'DRIVER_NOT_FOUND',
details: { message: 'Driver with iRacing ID 123 not found' },
});
expect(output.present).not.toHaveBeenCalled();
});
it('should import results successfully', async () => {
@@ -196,11 +183,8 @@ describe('ImportRaceResultsUseCase', () => {
const result = await useCase.execute(input);
expect(result.isOk()).toBe(true);
expect(result.unwrap()).toBeUndefined();
expect(output.present).toHaveBeenCalledTimes(1);
const presented = output.present.mock.calls[0]?.[0] as ImportRaceResultsResult;
expect(presented).toEqual({
const value = result.unwrap();
expect(value).toEqual({
raceId: 'race-1',
leagueId: 'league-1',
driversProcessed: 1,
@@ -239,6 +223,5 @@ describe('ImportRaceResultsUseCase', () => {
>;
expect(error.code).toBe('REPOSITORY_ERROR');
expect(error.details.message).toBe('DB failure');
expect(output.present).not.toHaveBeenCalled();
});
});