diff --git a/projects/cdk/utils/dom/test/contains-or-after.spec.ts b/projects/cdk/utils/dom/test/contains-or-after.spec.ts new file mode 100644 index 000000000000..bf37a8af551a --- /dev/null +++ b/projects/cdk/utils/dom/test/contains-or-after.spec.ts @@ -0,0 +1,21 @@ +import {containsOrAfter} from '../contains-or-after'; + +describe('containsOrAfter', () => { + it('Parent contains child', () => { + const parent = document.createElement('div'); + const child = document.createElement('button'); + + parent.appendChild(child); + + expect(containsOrAfter(parent, child)).toEqual(true); + }); + + it('Child does not contain parent', () => { + const parent = document.createElement('div'); + const child = document.createElement('button'); + + parent.appendChild(child); + + expect(containsOrAfter(child, parent)).toEqual(false); + }); +}); diff --git a/projects/cdk/utils/dom/test/get-clipboard-data-text.spec.ts b/projects/cdk/utils/dom/test/get-clipboard-data-text.spec.ts new file mode 100644 index 000000000000..9a75071d3b65 --- /dev/null +++ b/projects/cdk/utils/dom/test/get-clipboard-data-text.spec.ts @@ -0,0 +1,26 @@ +import {getClipboardDataText} from '../get-clipboard-data-text'; + +describe('getClipboardDataText', () => { + it('ClipboardData in event', () => { + const data = 'copy!'; + const clipboardData = new DataTransfer(); + + clipboardData.setData('text/plain', data); + + const event = new ClipboardEvent('copy', {clipboardData: clipboardData} as any); + + expect(getClipboardDataText(event)).toEqual(data); + }); + + it('ClipboardData not in event', () => { + const event = new Event('copy') as any; + + Object.defineProperty(event, 'target', { + value: { + ownerDocument: {defaultView: {clipboardData: {getData: () => 'data'}}}, + }, + }); + + expect(getClipboardDataText(event)).toEqual('data'); + }); +}); diff --git a/projects/cdk/utils/dom/test/get-document-or-shadow-root.spec.ts b/projects/cdk/utils/dom/test/get-document-or-shadow-root.spec.ts new file mode 100644 index 000000000000..6bb4d8634fa3 --- /dev/null +++ b/projects/cdk/utils/dom/test/get-document-or-shadow-root.spec.ts @@ -0,0 +1,21 @@ +import {getDocumentOrShadowRoot} from '../get-document-or-shadow-root'; + +describe('getDocumentOrShadowRoot', () => { + it('Node not in body', () => { + const element = document.createElement('div'); + + expect(getDocumentOrShadowRoot(element)).toEqual( + element.ownerDocument as Document, + ); + }); + + it('Node in body', () => { + const element = document.createElement('div'); + + document.body.appendChild(element); + + expect(getDocumentOrShadowRoot(element)).toEqual( + element.getRootNode() as Document, + ); + }); +}); diff --git a/projects/cdk/utils/dom/test/get-element-offset.spec.ts b/projects/cdk/utils/dom/test/get-element-offset.spec.ts new file mode 100644 index 000000000000..9b5c2ce50946 --- /dev/null +++ b/projects/cdk/utils/dom/test/get-element-offset.spec.ts @@ -0,0 +1,20 @@ +import {getElementOffset} from '../get-element-offset'; + +describe('getElementOfset', () => { + it('should return offsets', () => { + const grandParent = document.createElement('div'); + const parent = document.createElement('div'); + const child = document.createElement('button'); + + grandParent.appendChild(parent); + parent.appendChild(child); + + Object.defineProperty(child, 'offsetParent', {value: parent}); + Object.defineProperty(parent, 'offsetParent', {value: grandParent}); + + expect(getElementOffset(grandParent, child)).toEqual({ + offsetTop: 0, + offsetLeft: 0, + }); + }); +}); diff --git a/projects/cdk/utils/dom/test/get-scrollable-parent.spec.ts b/projects/cdk/utils/dom/test/get-scrollable-parent.spec.ts new file mode 100644 index 000000000000..5a70b0448516 --- /dev/null +++ b/projects/cdk/utils/dom/test/get-scrollable-parent.spec.ts @@ -0,0 +1,40 @@ +import {getScrollParent} from '../get-scrollable-parent'; + +describe('getScrollableParent', () => { + it('There is no element', () => { + expect(getScrollParent(null)).toEqual(null); + }); + + it('Should return element. Vertical is true', () => { + const element = document.createElement('div'); + + Object.defineProperty(element, 'scrollHeight', {value: 5}); + Object.defineProperty(element, 'clientHeight', {value: 0}); + + expect(getScrollParent(element)).toEqual(element); + }); + + it('Should return element. Vertical is false', () => { + const element = document.createElement('div'); + + Object.defineProperty(element, 'scrollWidth', {value: 5}); + Object.defineProperty(element, 'clientWidth', {value: 0}); + + expect(getScrollParent(element, false)).toEqual(element); + }); + + it('Shoul return parent element', () => { + const parentElement = document.createElement('div'); + const childElement = document.createElement('div'); + + parentElement.appendChild(childElement); + + Object.defineProperty(childElement, 'scrollWidth', {value: 0}); + Object.defineProperty(childElement, 'clientWidth', {value: 5}); + + Object.defineProperty(parentElement, 'scrollWidth', {value: 5}); + Object.defineProperty(parentElement, 'clientWidth', {value: 0}); + + expect(getScrollParent(childElement, false)).toEqual(parentElement); + }); +});