75 lines
2.2 KiB
TypeScript
75 lines
2.2 KiB
TypeScript
|
// Copyright 2021 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import { assert } from 'chai';
|
||
|
|
||
|
import { isWindowDragElement } from '../../util/isWindowDragElement';
|
||
|
|
||
|
describe('isWindowDragElement', () => {
|
||
|
const crel = (tagName: string, appRegion?: string): Element => {
|
||
|
const result = document.createElement(tagName);
|
||
|
if (appRegion) {
|
||
|
result.style.cssText = `-webkit-app-region: ${appRegion}`;
|
||
|
}
|
||
|
return result;
|
||
|
};
|
||
|
|
||
|
let sandboxEl: HTMLElement;
|
||
|
|
||
|
beforeEach(() => {
|
||
|
sandboxEl = document.createElement('div');
|
||
|
document.body.appendChild(sandboxEl);
|
||
|
});
|
||
|
|
||
|
afterEach(() => {
|
||
|
sandboxEl.remove();
|
||
|
});
|
||
|
|
||
|
it('returns false for elements with no -webkit-app-region property in the heirarchy', () => {
|
||
|
const root = crel('div');
|
||
|
const outer = crel('span');
|
||
|
const inner = crel('div');
|
||
|
root.appendChild(outer);
|
||
|
outer.appendChild(inner);
|
||
|
sandboxEl.appendChild(root);
|
||
|
|
||
|
assert.isFalse(isWindowDragElement(root));
|
||
|
assert.isFalse(isWindowDragElement(outer));
|
||
|
assert.isFalse(isWindowDragElement(inner));
|
||
|
});
|
||
|
|
||
|
it('returns false for elements with -webkit-app-region: drag on a sub-element', () => {
|
||
|
const parent = crel('div');
|
||
|
const child = crel('div', 'drag');
|
||
|
parent.appendChild(child);
|
||
|
sandboxEl.appendChild(parent);
|
||
|
|
||
|
assert.isFalse(isWindowDragElement(parent));
|
||
|
});
|
||
|
|
||
|
it('returns false if any element up the chain is found to be -webkit-app-region: no-drag', () => {
|
||
|
const root = crel('div', 'drag');
|
||
|
const outer = crel('div', 'no-drag');
|
||
|
const inner = crel('div');
|
||
|
root.appendChild(outer);
|
||
|
outer.appendChild(inner);
|
||
|
sandboxEl.appendChild(root);
|
||
|
|
||
|
assert.isFalse(isWindowDragElement(outer));
|
||
|
assert.isFalse(isWindowDragElement(inner));
|
||
|
});
|
||
|
|
||
|
it('returns true if any element up the chain is found to be -webkit-app-region: drag', () => {
|
||
|
const root = crel('div', 'drag');
|
||
|
const outer = crel('div');
|
||
|
const inner = crel('div');
|
||
|
root.appendChild(outer);
|
||
|
outer.appendChild(inner);
|
||
|
sandboxEl.appendChild(root);
|
||
|
|
||
|
assert.isTrue(isWindowDragElement(root));
|
||
|
assert.isTrue(isWindowDragElement(outer));
|
||
|
assert.isTrue(isWindowDragElement(inner));
|
||
|
});
|
||
|
});
|