import { describe, test, expect } from 'vitest'; import { Accordion } from './Accordion'; const toHtml = (Accordion as any).toHtml; const items = [ { title: 'Q1', content: 'A1', isOpen: true }, { title: 'Q2', content: 'A2', isOpen: false }, ]; describe('Accordion.toHtml basic export', () => { test('renders a
per item with the open attribute honored', () => { const { html } = toHtml({ items }, ''); const detailsBlocks = html.match(/]*>/g) || []; expect(detailsBlocks.length).toBe(2); expect(detailsBlocks[0]).toContain(' open'); expect(detailsBlocks[1]).not.toContain(' open'); }); test('headerBg/headerColor/contentBg/borderColor emit into the panel styles', () => { const { html } = toHtml({ items, headerBg: '#111111', headerColor: '#222222', contentBg: '#333333', borderColor: '#444444' }, ''); expect(html).toContain('#111111'); expect(html).toContain('#222222'); expect(html).toContain('#333333'); expect(html).toContain('#444444'); }); }); describe('Accordion.craft.props includes the box-model/animation/visibility rollout props', () => { test('animation, animationDelay, and all 3 hideOn* flags are declared (blank/false defaults)', () => { const props = (Accordion as any).craft.props; expect(props).toHaveProperty('animation', ''); expect(props).toHaveProperty('animationDelay', ''); expect(props).toHaveProperty('hideOnDesktop', false); expect(props).toHaveProperty('hideOnTablet', false); expect(props).toHaveProperty('hideOnMobile', false); }); });