import { describe, it, expect } from 'vitest'; import type { EventQrInviteLayout } from '../../api'; import { buildInitialTextFields, resolveLayoutForFormat } from '../qr/utils'; describe('buildInitialTextFields', () => { it('prefers event name for headline and default copy when customization is missing', () => { const layoutDefaults = { id: 'evergreen-vows', name: 'Evergreen Vows', description: 'Old description', } as EventQrInviteLayout; const fields = buildInitialTextFields({ customization: null, layoutDefaults, eventName: 'Sommerfest 2025', }); expect(fields.headline).toBe('Sommerfest 2025'); expect(fields.description).toBe('Old description'); expect(fields.instructions).toHaveLength(3); }); it('uses customization when provided', () => { const fields = buildInitialTextFields({ customization: { headline: 'Custom', description: 'Desc', instructions: ['One', 'Two'], }, layoutDefaults: null, eventName: 'Ignored', }); expect(fields.headline).toBe('Custom'); expect(fields.description).toBe('Desc'); expect(fields.instructions).toEqual(['One', 'Two']); }); }); describe('resolveLayoutForFormat', () => { const layouts = [ { id: 'portrait-a4', paper: 'a4', orientation: 'portrait', panel_mode: 'single', format_hint: 'poster-a4' } as any as EventQrInviteLayout, { id: 'foldable', paper: 'a4', orientation: 'landscape', panel_mode: 'double-mirror', format_hint: 'foldable-a5' } as any as EventQrInviteLayout, ]; it('returns portrait layout for A4 poster', () => { expect(resolveLayoutForFormat('a4-poster', layouts)).toBe('portrait-a4'); }); it('returns foldable layout for A5 foldable', () => { expect(resolveLayoutForFormat('a5-foldable', layouts)).toBe('foldable'); }); });