refactor use cases
This commit is contained in:
@@ -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');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user