import { isPaternalExposeElements, getElementKey } from '..'; describe('isPaternalExposeElements', () => { beforeAll(() => { document.body.innerHTML = `
Aqua
Aqua
`; }); 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 = `
Aqua
Aqua
`; 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'); }); });