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

@@ -4,8 +4,6 @@ import type { IRaceRepository } from '../../domain/repositories/IRaceRepository'
import type { IRaceRegistrationRepository } from '../../domain/repositories/IRaceRegistrationRepository';
import type { IResultRepository } from '../../domain/repositories/IResultRepository';
import type { IStandingRepository } from '../../domain/repositories/IStandingRepository';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
describe('CompleteRaceUseCase', () => {
let useCase: CompleteRaceUseCase;
let raceRepository: {
@@ -42,14 +40,11 @@ describe('CompleteRaceUseCase', () => {
};
getDriverRating = vi.fn();
output = { present: vi.fn() };
useCase = new CompleteRaceUseCase(
raceRepository as unknown as IRaceRepository,
useCase = new CompleteRaceUseCase(raceRepository as unknown as IRaceRepository,
raceRegistrationRepository as unknown as IRaceRegistrationRepository,
resultRepository as unknown as IResultRepository,
standingRepository as unknown as IStandingRepository,
getDriverRating,
output as unknown as UseCaseOutputPort<CompleteRaceResult>,
);
getDriverRating);
});
it('should complete race successfully when race exists and has registered drivers', async () => {
@@ -86,9 +81,7 @@ describe('CompleteRaceUseCase', () => {
expect(standingRepository.save).toHaveBeenCalledTimes(2);
expect(mockRace.complete).toHaveBeenCalled();
expect(raceRepository.update).toHaveBeenCalledWith({ id: 'race-1', status: 'completed' });
expect(output.present).toHaveBeenCalledTimes(1);
expect(output.present).toHaveBeenCalledWith({ raceId: 'race-1', registeredDriverIds: ['driver-1', 'driver-2'] });
});
});
it('should return error when race does not exist', async () => {
const command: CompleteRaceInput = {
@@ -101,8 +94,7 @@ describe('CompleteRaceUseCase', () => {
expect(result.isErr()).toBe(true);
expect(result.unwrapErr().code).toBe('RACE_NOT_FOUND');
expect(output.present).not.toHaveBeenCalled();
});
});
it('should return error when no registered drivers', async () => {
const command: CompleteRaceInput = {
@@ -122,8 +114,7 @@ describe('CompleteRaceUseCase', () => {
expect(result.isErr()).toBe(true);
expect(result.unwrapErr().code).toBe('NO_REGISTERED_DRIVERS');
expect(output.present).not.toHaveBeenCalled();
});
});
it('should return error when repository throws', async () => {
const command: CompleteRaceInput = {
@@ -147,6 +138,5 @@ describe('CompleteRaceUseCase', () => {
const error = result.unwrapErr();
expect(error.code).toBe('REPOSITORY_ERROR');
expect(error.details?.message).toBe('DB error');
expect(output.present).not.toHaveBeenCalled();
});
});
});