UNPKG

vanillajs-browser-helpers

Version:

Collection of convenience code snippets (helpers) that aims to make it a little easier to work with vanilla JS in the browser

99 lines (74 loc) 2.44 kB
import { appendFrame, createDetachedDocument, createElement } from './assets/helpers'; import getCurrentDocument from '../getCurrentDocument'; describe('"getCurrentDocument"', () => { it('Returns current Document from a given Frame (not `contentDocument`)', () => { const frame = appendFrame(); const doc = getCurrentDocument(frame); expect(doc).toBe(document); frame.remove(); }); describe('Returns `null` when given value is', () => { it.each([ undefined, null, {}, [], true, 'String' ])('Not a DOM Node: %s', (value) => { const doc = getCurrentDocument(value); expect(doc).toBeNull(); }); }); describe('Returns given Document', () => { it('Current Document', () => { const doc = getCurrentDocument(document); expect(doc).toBe(document); }); it('Frame Document', () => { const frame = appendFrame(); const frameDoc = frame.contentDocument; const doc = getCurrentDocument(frameDoc); expect(doc).toBe(frameDoc); frame.remove(); }); it('A detached Document', () => { const currDoc = createDetachedDocument(); const doc = getCurrentDocument(currDoc); expect(doc).toBe(currDoc); }); }); describe('Returns the Document of given Window', () => { it('Current Window', () => { const doc = getCurrentDocument(window); expect(doc).toBe(window.document); }); it('Frame Window', () => { const frame = appendFrame(); const doc = getCurrentDocument(frame.contentWindow); expect(doc).toBe(frame.contentDocument); frame.remove(); }); }); describe('Returns `ownerDocument` of given Node', () => { it('From the current Document', () => { const div = createElement('div'); const doc = getCurrentDocument(div); expect(doc).toBe(document); }); it('From a detached Document', () => { const detachedDoc = createDetachedDocument(); const div = detachedDoc.createElement('div'); const doc = getCurrentDocument(div); expect(doc).toBe(detachedDoc); }); it('From Frame Document', () => { const frame = appendFrame(); const frameDoc = frame.contentDocument as Document; const div = frameDoc.createElement('div'); const doc = getCurrentDocument(div); expect(doc).toBe(frameDoc); frame.remove(); }); }); });