import { describe, it, expect, beforeEach } from 'vitest'; import { Sponsor } from '../../../../core/racing/domain/entities/sponsor/Sponsor'; import { SponsorTestContext } from '../SponsorTestContext'; import { GetSponsorUseCase } from '../../../../core/racing/application/use-cases/GetSponsorUseCase'; describe('Sponsor Settings Use Case Orchestration', () => { let context: SponsorTestContext; let getSponsorUseCase: GetSponsorUseCase; beforeEach(() => { context = new SponsorTestContext(); getSponsorUseCase = new GetSponsorUseCase(context.sponsorRepository); }); describe('GetSponsorUseCase - Success Path', () => { it('should retrieve sponsor profile information', async () => { const sponsor = Sponsor.create({ id: 'sponsor-123', name: 'Test Company', contactEmail: 'john@example.com', }); await context.sponsorRepository.create(sponsor); const result = await getSponsorUseCase.execute({ sponsorId: 'sponsor-123' }); expect(result.isOk()).toBe(true); const { sponsor: retrievedSponsor } = result.unwrap(); expect(retrievedSponsor.name.toString()).toBe('Test Company'); expect(retrievedSponsor.contactEmail.toString()).toBe('john@example.com'); }); }); describe('GetSponsorUseCase - Error Handling', () => { it('should return error when sponsor does not exist', async () => { const result = await getSponsorUseCase.execute({ sponsorId: 'non-existent' }); expect(result.isErr()).toBe(true); const error = result.unwrapErr(); expect(error.code).toBe('SPONSOR_NOT_FOUND'); }); }); });