Files
gridpilot.gg/core/racing/application/use-cases/GetDriverUseCase.test.ts
Marc Mintel bf2c0fdb0c
Some checks failed
CI / lint-typecheck (pull_request) Failing after 1m29s
CI / tests (pull_request) Has been skipped
CI / contract-tests (pull_request) Has been skipped
CI / e2e-tests (pull_request) Has been skipped
CI / comment-pr (pull_request) Has been skipped
CI / commit-types (pull_request) Has been skipped
code quality
2026-01-26 01:54:57 +01:00

43 lines
1.5 KiB
TypeScript

import { describe, it, expect, vi } from 'vitest';
import { GetDriverUseCase } from './GetDriverUseCase';
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);
});
});