import { h } from 'preact';
import '@testing-library/jest-dom';
import { createRootFragment } from './preact-root-fragment';
describe('createRootFragment', () => {
it('has a child element as replace node', () => {
const fragment = createRootFragment(
,
text,
);
expect(fragment.firstChild.type).toBe('article');
});
it('handle multiple nodes', () => {
const fragment = createRootFragment(, [
,
,
]);
expect(fragment.firstChild.props.id).toBe('app1');
expect(fragment.childNodes.length).toBe(2);
});
it('adds fragment to parent context', () => {
const parent = ;
const placeholder = ;
const fragment = createRootFragment(parent, placeholder);
expect(parent.__k.firstChild).toBe(fragment.firstChild);
expect(parent.__k.childNodes.length).toBeGreaterThan(0);
});
it('insertBefore on parent fragment', () => {
const parent = document.createElement('div');
parent.className = '#app';
const child = document.createElement('main');
const fragment = createRootFragment(parent, child);
const span = document.createElement('span');
fragment.insertBefore(span, child.parentNode);
expect(parent.children[0].tagName.toLowerCase()).toBe('span');
});
it('appendChild on parent fragment', () => {
const parent = document.createElement('div');
const fragment = createRootFragment(parent, );
const p = document.createElement('p');
fragment.appendChild(p);
expect(parent.childNodes[0].nodeName.toLowerCase()).toBe('p');
});
});