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

@@ -2,12 +2,12 @@ import { describe, it, expect, vi } from 'vitest';
import {
GetDriversLeaderboardUseCase,
type GetDriversLeaderboardInput,
GetDriversLeaderboardResult } from './GetDriversLeaderboardUseCase';
type GetDriversLeaderboardResult
} from './GetDriversLeaderboardUseCase';
import type { IDriverRepository } from '../../domain/repositories/IDriverRepository';
import type { IRankingUseCase } from './IRankingUseCase';
import type { IDriverStatsUseCase } from './IDriverStatsUseCase';
import type { Logger } from '@core/shared/application';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
describe('GetDriversLeaderboardUseCase', () => {
const mockDriverFindAll = vi.fn();
@@ -39,18 +39,11 @@ describe('GetDriversLeaderboardUseCase', () => {
error: vi.fn(),
};
const mockOutput: UseCaseOutputPort<GetDriversLeaderboardResult> = {
present: vi.fn(),
};
it('should return drivers leaderboard data', async () => {
const useCase = new GetDriversLeaderboardUseCase(
mockDriverRepo,
const useCase = new GetDriversLeaderboardUseCase(mockDriverRepo,
mockRankingUseCase,
mockDriverStatsUseCase,
mockLogger,
mockOutput,
);
mockLogger);
const driver1 = {
id: 'driver1',
@@ -85,7 +78,8 @@ describe('GetDriversLeaderboardUseCase', () => {
expect(result.isOk()).toBe(true);
expect(mockOutput.present).toHaveBeenCalledWith({
const successResult = result.unwrap();
expect(successResult).toEqual({
items: [
expect.objectContaining({
driver: driver1,
@@ -117,13 +111,10 @@ describe('GetDriversLeaderboardUseCase', () => {
});
it('should return empty result when no drivers', async () => {
const useCase = new GetDriversLeaderboardUseCase(
mockDriverRepo,
const useCase = new GetDriversLeaderboardUseCase(mockDriverRepo,
mockRankingUseCase,
mockDriverStatsUseCase,
mockLogger,
mockOutput,
);
mockLogger);
mockDriverFindAll.mockResolvedValue([]);
mockRankingGetAllDriverRankings.mockReturnValue([]);
@@ -134,7 +125,8 @@ describe('GetDriversLeaderboardUseCase', () => {
expect(result.isOk()).toBe(true);
expect(mockOutput.present).toHaveBeenCalledWith({
const successResult = result.unwrap();
expect(successResult).toEqual({
items: [],
totalRaces: 0,
totalWins: 0,
@@ -143,13 +135,10 @@ describe('GetDriversLeaderboardUseCase', () => {
});
it('should handle drivers without stats', async () => {
const useCase = new GetDriversLeaderboardUseCase(
mockDriverRepo,
const useCase = new GetDriversLeaderboardUseCase(mockDriverRepo,
mockRankingUseCase,
mockDriverStatsUseCase,
mockLogger,
mockOutput,
);
mockLogger);
const driver1 = {
id: 'driver1',
@@ -169,7 +158,8 @@ describe('GetDriversLeaderboardUseCase', () => {
expect(result.isOk()).toBe(true);
expect(mockOutput.present).toHaveBeenCalledWith({
const successResult = result.unwrap();
expect(successResult).toEqual({
items: [
expect.objectContaining({
driver: driver1,
@@ -190,13 +180,10 @@ describe('GetDriversLeaderboardUseCase', () => {
});
it('should return error when repository throws', async () => {
const useCase = new GetDriversLeaderboardUseCase(
mockDriverRepo,
const useCase = new GetDriversLeaderboardUseCase(mockDriverRepo,
mockRankingUseCase,
mockDriverStatsUseCase,
mockLogger,
mockOutput,
);
mockLogger);
const error = new Error('Repository error');
mockDriverFindAll.mockRejectedValue(error);
@@ -212,4 +199,4 @@ describe('GetDriversLeaderboardUseCase', () => {
expect(err.details.message).toBe('Repository error');
}
});
});
});