70 lines
2.3 KiB
TypeScript
70 lines
2.3 KiB
TypeScript
/**
|
|
* Integration Test: Onboarding Validation Use Case Orchestration
|
|
*
|
|
* Tests the orchestration logic of validation-related Use Cases:
|
|
* - CompleteDriverOnboardingUseCase: Validates driver data before creation
|
|
*
|
|
* Validates that Use Cases correctly interact with their Ports (Repositories)
|
|
* Uses In-Memory adapters for fast, deterministic testing
|
|
*
|
|
* Focus: Business logic orchestration, NOT UI rendering
|
|
*/
|
|
|
|
import { describe, it, expect, beforeAll, beforeEach } from 'vitest';
|
|
import { InMemoryDriverRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryDriverRepository';
|
|
import { CompleteDriverOnboardingUseCase } from '../../../core/racing/application/use-cases/CompleteDriverOnboardingUseCase';
|
|
import { Logger } from '../../../core/shared/domain/Logger';
|
|
|
|
describe('Onboarding Validation Use Case Orchestration', () => {
|
|
let driverRepository: InMemoryDriverRepository;
|
|
let completeDriverOnboardingUseCase: CompleteDriverOnboardingUseCase;
|
|
let mockLogger: Logger;
|
|
|
|
beforeAll(() => {
|
|
mockLogger = {
|
|
info: () => {},
|
|
debug: () => {},
|
|
warn: () => {},
|
|
error: () => {},
|
|
} as unknown as Logger;
|
|
|
|
driverRepository = new InMemoryDriverRepository(mockLogger);
|
|
completeDriverOnboardingUseCase = new CompleteDriverOnboardingUseCase(
|
|
driverRepository,
|
|
mockLogger
|
|
);
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
await driverRepository.clear();
|
|
});
|
|
|
|
describe('CompleteDriverOnboardingUseCase - Validation Scenarios', () => {
|
|
it('should validate that driver does not already exist', async () => {
|
|
// Scenario: Duplicate driver validation
|
|
// Given: A driver already exists
|
|
const userId = 'duplicate-user';
|
|
await completeDriverOnboardingUseCase.execute({
|
|
userId,
|
|
firstName: 'First',
|
|
lastName: 'Last',
|
|
displayName: 'FirstLast',
|
|
country: 'US',
|
|
});
|
|
|
|
// When: Attempting to onboard again
|
|
const result = await completeDriverOnboardingUseCase.execute({
|
|
userId,
|
|
firstName: 'Second',
|
|
lastName: 'Attempt',
|
|
displayName: 'SecondAttempt',
|
|
country: 'US',
|
|
});
|
|
|
|
// Then: Validation should fail
|
|
expect(result.isErr()).toBe(true);
|
|
expect(result.unwrapErr().code).toBe('DRIVER_ALREADY_EXISTS');
|
|
});
|
|
});
|
|
});
|