signal-desktop/ts/test-electron/util/isWindowDragElement_test.ts

74 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));
});
});