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();
});
});