import { describe, it, expect } from 'vitest'; import { SponsorViewModel } from './SponsorViewModel'; describe('SponsorViewModel', () => { it('maps basic sponsor fields from DTO', () => { const dto = { id: 'sp-1', name: 'Acme Corp', logoUrl: '/logo.png', websiteUrl: 'https://acme.example', }; const vm = new SponsorViewModel(dto as any); expect(vm.id).toBe(dto.id); expect(vm.name).toBe(dto.name); expect(vm.logoUrl).toBe(dto.logoUrl); expect(vm.websiteUrl).toBe(dto.websiteUrl); }); it('does not assign optional fields when they are undefined', () => { const dto = { id: 'sp-2', name: 'Minimal Sponsor', logoUrl: undefined, websiteUrl: undefined, }; const vm = new SponsorViewModel(dto as any); expect(vm.id).toBe(dto.id); expect(vm.name).toBe(dto.name); expect('logoUrl' in vm).toBe(false); expect('websiteUrl' in vm).toBe(false); }); it('exposes simple UI helpers', () => { const withWebsite = new SponsorViewModel({ id: 'sp-3', name: 'With Site', websiteUrl: 'https://example.com' } as any); const withoutWebsite = new SponsorViewModel({ id: 'sp-4', name: 'No Site' } as any); expect(withWebsite.displayName).toBe(withWebsite.name); expect(withWebsite.hasWebsite).toBe(true); expect(withoutWebsite.hasWebsite).toBe(false); expect(withWebsite.websiteLinkText).toBe('Visit Website'); }); });