Outlook_Addin_LLM/node_modules/@fluentui/utilities/lib/dom/dom.test.js

96 lines
4.0 KiB
JavaScript

import { portalContainsElement } from './portalContainsElement';
import { DATA_PORTAL_ATTRIBUTE, setPortalAttribute } from './setPortalAttribute';
import { elementContains } from './elementContains';
import { getParent } from './getParent';
var unattachedSvg = document.createElement('svg');
var unattachedDiv = document.createElement('div');
var parentDiv = document.createElement('div');
var childDiv = document.createElement('div');
parentDiv.appendChild(childDiv);
describe('elementContains', function () {
it('can find a child', function () {
expect(elementContains(parentDiv, childDiv)).toEqual(true);
});
it('can return false on an unattached child', function () {
expect(elementContains(parentDiv, unattachedDiv)).toEqual(false);
});
it('can return false on a null child', function () {
expect(elementContains(parentDiv, null)).toEqual(false);
});
it('can return false on a null parent', function () {
expect(elementContains(null, null)).toEqual(false);
});
it('can return false when parent is an svg', function () {
expect(elementContains(unattachedSvg, unattachedDiv)).toEqual(false);
});
});
describe('getParent', function () {
it('returns correct parent for inner SVG elements', function () {
var childSvg = document.createElement('svg');
var svgRectangle = document.createElement('rect');
childSvg.appendChild(svgRectangle);
parentDiv.appendChild(childSvg);
expect(getParent(svgRectangle)).toEqual(childSvg);
expect(getParent(childSvg)).toEqual(parentDiv);
});
});
describe('setPortalAttribute', function () {
it('sets attribute', function () {
var testDiv = document.createElement('div');
expect(testDiv.getAttribute(DATA_PORTAL_ATTRIBUTE)).toBeFalsy();
setPortalAttribute(testDiv);
expect(testDiv.getAttribute(DATA_PORTAL_ATTRIBUTE)).toBeTruthy();
});
});
describe('portalContainsElement', function () {
var root;
var leaf;
var parent;
var portal;
var unlinked;
beforeEach(function () {
root = document.createElement('div');
leaf = document.createElement('div');
parent = document.createElement('div');
portal = document.createElement('div');
unlinked = document.createElement('div');
setPortalAttribute(portal);
});
it('works with and without parent specified', function () {
root.appendChild(parent);
parent.appendChild(portal);
portal.appendChild(leaf);
expect(portalContainsElement(root)).toBeFalsy();
expect(portalContainsElement(parent)).toBeFalsy();
expect(portalContainsElement(portal)).toBeTruthy();
expect(portalContainsElement(leaf)).toBeTruthy();
expect(portalContainsElement(leaf, parent)).toBeTruthy();
});
it('works correctly when parent and child are in same portal', function () {
root.appendChild(portal);
portal.appendChild(parent);
parent.appendChild(leaf);
expect(portalContainsElement(parent)).toBeTruthy();
expect(portalContainsElement(leaf, parent)).toBeFalsy();
});
it('works with hierarchically invalid parents', function () {
root.appendChild(parent);
parent.appendChild(portal);
portal.appendChild(leaf);
// When parent is invalid, searches should go to root
expect(portalContainsElement(root, leaf)).toBeFalsy();
expect(portalContainsElement(parent, leaf)).toBeFalsy();
expect(portalContainsElement(portal, leaf)).toBeTruthy();
expect(portalContainsElement(leaf, unlinked)).toBeTruthy();
});
it('works when element is parent', function () {
root.appendChild(parent);
parent.appendChild(portal);
portal.appendChild(leaf);
expect(portalContainsElement(root, root)).toBeFalsy();
expect(portalContainsElement(parent, parent)).toBeFalsy();
expect(portalContainsElement(portal, portal)).toBeTruthy();
expect(portalContainsElement(leaf, leaf)).toBeFalsy();
});
});
//# sourceMappingURL=dom.test.js.map