core tests
This commit is contained in:
43
core/racing/application/use-cases/GetDriverUseCase.test.ts
Normal file
43
core/racing/application/use-cases/GetDriverUseCase.test.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import { describe, it, expect, vi } from 'vitest';
|
||||
import { GetDriverUseCase } from './GetDriverUseCase';
|
||||
import { Result } from '@core/shared/domain/Result';
|
||||
import type { DriverRepository } from '../../domain/repositories/DriverRepository';
|
||||
import type { Driver } from '../../domain/entities/Driver';
|
||||
|
||||
describe('GetDriverUseCase', () => {
|
||||
const mockDriverRepository = {
|
||||
findById: vi.fn(),
|
||||
} as unknown as DriverRepository;
|
||||
|
||||
const useCase = new GetDriverUseCase(mockDriverRepository);
|
||||
|
||||
it('should return a driver when found', async () => {
|
||||
const mockDriver = { id: 'driver-1', name: 'John Doe' } as unknown as Driver;
|
||||
vi.mocked(mockDriverRepository.findById).mockResolvedValue(mockDriver);
|
||||
|
||||
const result = await useCase.execute({ driverId: 'driver-1' });
|
||||
|
||||
expect(result.isOk()).toBe(true);
|
||||
expect(result.unwrap()).toBe(mockDriver);
|
||||
expect(mockDriverRepository.findById).toHaveBeenCalledWith('driver-1');
|
||||
});
|
||||
|
||||
it('should return null when driver is not found', async () => {
|
||||
vi.mocked(mockDriverRepository.findById).mockResolvedValue(null);
|
||||
|
||||
const result = await useCase.execute({ driverId: 'non-existent' });
|
||||
|
||||
expect(result.isOk()).toBe(true);
|
||||
expect(result.unwrap()).toBeNull();
|
||||
});
|
||||
|
||||
it('should return an error when repository throws', async () => {
|
||||
const error = new Error('Repository error');
|
||||
vi.mocked(mockDriverRepository.findById).mockRejectedValue(error);
|
||||
|
||||
const result = await useCase.execute({ driverId: 'driver-1' });
|
||||
|
||||
expect(result.isErr()).toBe(true);
|
||||
expect(result.error).toBe(error);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user