import { describe, it, expect } from 'vitest'; import { h, render, mount, nextTick } from '@/index'; const Badge = ({ count }: { count: number }) => (

{count}

); const InfoCard = mount<{ count: number }>(() => props => ( )); const Dashboard = mount<{ count: number }>(() => props => ( )); const ToggleDashboard = mount(renew => { let count = 1; return () => (
{count % 2 === 1 && }
); }); describe('nested components toggle correctly', () => { it('adds and removes child component across multiple toggles', async () => { const wrap = document.createElement('div'); render(, wrap); const button = wrap.querySelector('.toggle') as HTMLButtonElement; // initial: visible, count 1 expect(wrap.querySelector('.badge')?.textContent).toContain('1'); // hide on even count button.click(); await nextTick(); expect(wrap.querySelector('.badge')).toBeNull(); // show again on odd button.click(); await nextTick(); expect(wrap.querySelector('.badge')?.textContent).toContain('3'); // hide again on even button.click(); await nextTick(); expect(wrap.querySelector('.badge')).toBeNull(); }); });