import { describe, it, expect, beforeEach } from 'vitest'; import { MediaTestContext } from '../MediaTestContext'; import { InMemorySponsorRepository } from '@adapters/racing/persistence/inmemory/InMemorySponsorRepository'; import { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor'; describe('Sponsor Logo Management', () => { let ctx: MediaTestContext; let sponsorRepository: InMemorySponsorRepository; beforeEach(() => { ctx = MediaTestContext.create(); ctx.reset(); sponsorRepository = new InMemorySponsorRepository(ctx.logger); }); it('should upload and set a sponsor logo', async () => { // Given: A sponsor exists const sponsor = Sponsor.create({ id: 'sponsor-1', name: 'Test Sponsor', contactEmail: 'test@example.com', }); await sponsorRepository.create(sponsor); // When: A logo is uploaded const uploadResult = await ctx.mediaStorage.uploadMedia( Buffer.from('logo content'), { filename: 'logo.png', mimeType: 'image/png' } ); expect(uploadResult.success).toBe(true); const logoUrl = `https://example.com${uploadResult.url!}`; // And: The sponsor is updated with the new logo URL const updatedSponsor = sponsor.update({ logoUrl: logoUrl }); await sponsorRepository.update(updatedSponsor); // Then: The sponsor should have the correct logo URL const savedSponsor = await sponsorRepository.findById('sponsor-1'); expect(savedSponsor?.logoUrl?.toString()).toBe(logoUrl); }); it('should retrieve sponsor logos (simulated via repository)', async () => { const sponsor = Sponsor.create({ id: 'sponsor-1', name: 'Test Sponsor', contactEmail: 'test@example.com', logoUrl: 'https://example.com/logo.png' }); await sponsorRepository.create(sponsor); const found = await sponsorRepository.findById('sponsor-1'); expect(found).not.toBeNull(); expect(found?.logoUrl?.toString()).toBe('https://example.com/logo.png'); }); });