wix-style-react
Version:
wix-style-react
81 lines (72 loc) • 3.34 kB
JavaScript
import React from 'react';
import { TooltipContainerStrategy } from './TooltipContainerStrategy';
import { mount } from 'enzyme';
import Page from '../Page';
describe('TooltipContainerStrategy', function () {
it('should return body when element is null', function () {
var tooltipContainerStrategy = new TooltipContainerStrategy(null, false);
var container = tooltipContainerStrategy.getContainer(null);
expect(container).toBe(document.body);
});
it('should return body when no other parent is given', function () {
var tooltipContainerStrategy = new TooltipContainerStrategy(null, false);
var element = document.createElement('div');
var container = tooltipContainerStrategy.getContainer(element);
expect(container).toBe(document.body);
});
it('should return element parent when appendToParent is true', function () {
var tooltipContainerStrategy = new TooltipContainerStrategy(null, true);
var parent = document.createElement('div');
var element = document.createElement('div');
parent.appendChild(element);
var container = tooltipContainerStrategy.getContainer(element);
expect(container).toBe(parent);
});
it('should return matching ancestor by predicate when appendByPredicate has a value', function () {
var tooltipContainerStrategy = new TooltipContainerStrategy(null, null, function (el) {
return el.getAttribute('some-attr') === 'some-value';
});
var ancestor = document.createElement('div');
ancestor.setAttribute('some-attr', 'some-value');
var parent = document.createElement('div');
ancestor.appendChild(parent);
var element = document.createElement('div');
parent.appendChild(element);
var container = tooltipContainerStrategy.getContainer(element);
expect(container).toBe(ancestor);
});
it('should return appendTo element when provided and appendToParent is true', function () {
var appendToElement = document.createElement('div');
var tooltipContainerStrategy = new TooltipContainerStrategy(appendToElement, true);
var parent = document.createElement('div');
var element = document.createElement('div');
parent.appendChild(element);
var container = tooltipContainerStrategy.getContainer(element);
expect(container).toBe(appendToElement);
});
it('should return appendTo element when provided', function () {
var parent = document.createElement('div');
var tooltipContainerStrategy = new TooltipContainerStrategy(parent, false);
var element = document.createElement('div');
var container = tooltipContainerStrategy.getContainer(element);
expect(container).toBe(parent);
});
it('should return Page scrollable container when element is rendered inside a Page', function () {
var tooltipContainerStrategy = new TooltipContainerStrategy(null, false);
var element = void 0;
mount(React.createElement(
Page,
null,
React.createElement(Page.Header, { title: 'title' }),
React.createElement(
Page.Content,
null,
React.createElement('div', { ref: function ref(_ref) {
return element = _ref;
} })
)
));
var container = tooltipContainerStrategy.getContainer(element);
expect(container.getAttribute('data-class')).toBe('page-scrollable-content');
});
});