import { isPaternalExposeElements, getElementKey } from '..';
describe('isPaternalExposeElements', () => {
beforeAll(() => {
document.body.innerHTML = `
`;
});
test('root is body, always ok if contains', () => {
expect(isPaternalExposeElements(document.body, document.body)).toBe(true);
expect(isPaternalExposeElements(document.body, document.getElementById('app'))).toBe(true);
expect(isPaternalExposeElements(document.body, document.getElementById('container1'))).toBe(true);
expect(isPaternalExposeElements(document.body, document.getElementById('c1'))).toBe(true);
expect(isPaternalExposeElements(document.body, document.getElementById('c2'))).toBe(true);
expect(isPaternalExposeElements(document.body, document.getElementById('container2'))).toBe(true);
expect(isPaternalExposeElements(document.body, document.documentElement)).toBe(false);
});
test('root is not body, but has data-ml-root, ok', () => {
expect(isPaternalExposeElements(document.getElementById('container1'), document.body)).toBe(false);
expect(isPaternalExposeElements(document.getElementById('container1'), document.getElementById('app'))).toBe(false);
expect(isPaternalExposeElements(document.getElementById('container1'), document.getElementById('container1'))).toBe(
true,
);
expect(isPaternalExposeElements(document.getElementById('container1'), document.getElementById('c1'))).toBe(true);
expect(isPaternalExposeElements(document.getElementById('container1'), document.getElementById('c2'))).toBe(true);
});
test('root is not body, and has no data-ml-root, not ok', () => {
expect(isPaternalExposeElements(document.getElementById('app'), document.getElementById('container2'))).toBe(false);
expect(isPaternalExposeElements(document.getElementById('container2'), document.body)).toBe(false);
expect(isPaternalExposeElements(document.getElementById('container2'), document.getElementById('app'))).toBe(false);
expect(isPaternalExposeElements(document.getElementById('container2'), document.getElementById('container2'))).toBe(
false,
);
expect(isPaternalExposeElements(document.getElementById('container2'), document.getElementById('c3'))).toBe(false);
expect(isPaternalExposeElements(document.getElementById('container2'), document.getElementById('c4'))).toBe(false);
});
test('root is not body, but has data-ml-root, but target is not child of root, not ok', () => {
expect(isPaternalExposeElements(document.getElementById('container1'), document.getElementById('c3'))).toBe(false);
expect(isPaternalExposeElements(document.getElementById('container1'), document.getElementById('c4'))).toBe(false);
});
});
describe('getElementKey', () => {
it('works ok', () => {
document.body.innerHTML = `
`;
expect(getElementKey(document.getElementById('app'))).toBe('');
expect(getElementKey(document.getElementById('container1'))).toBe('');
expect(getElementKey(document.getElementById('c1'))).toBe('0');
expect(getElementKey(document.getElementById('c2'))).toBe('aqua');
expect(getElementKey(document.getElementById('container2'))).toBe('');
expect(getElementKey(document.getElementById('c3'))).toBe('0');
expect(getElementKey(document.getElementById('c4'))).toBe('aqua');
});
});