wix-style-react
Version:
wix-style-react
1,048 lines (904 loc) • 34.4 kB
JavaScript
;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _eventually = require('../../test/utils/eventually');
var _eventually2 = _interopRequireDefault(_eventually);
var _react3 = require('../../test/utils/react');
var _Tooltip = require('./Tooltip.driver');
var _Tooltip2 = _interopRequireDefault(_Tooltip);
var _Tooltip3 = require('./Tooltip');
var _Tooltip4 = _interopRequireDefault(_Tooltip3);
var _testkit = require('../../testkit');
var _Button = require('../Button');
var _Button2 = _interopRequireDefault(_Button);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
describe('Tooltip', function () {
afterEach(function () {
return (0, _react3.cleanup)();
});
var render = (0, _react3.createRendererWithDriver)(_Tooltip2.default);
var createDriver = function createDriver(jsx) {
return render(jsx).driver;
};
var _props = {
showDelay: 5,
hideDelay: 5,
content: "I'm the content"
};
var children = _react2.default.createElement(
'div',
null,
'Here there is a children'
);
it('should be hidden by default', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
children
));
expect(driver.isShown()).toBeFalsy();
});
it('should show a tooltip once hovering', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
children
));
driver.mouseEnter();
expect(driver.isShown()).toBeFalsy();
return resolveIn(30).then(function () {
expect(driver.isShown()).toBeTruthy();
});
});
it('should hide when mouse leaving', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
children
));
driver.mouseEnter();
expect(driver.isShown()).toBeFalsy();
return resolveIn(30).then(function () {
expect(driver.isShown()).toBeTruthy();
driver.mouseLeave();
return resolveIn(30).then(function () {
expect(driver.isShown()).toBeFalsy();
});
});
});
it('should test inner component', function () {
var dataHook = 'button_data_hook';
var buttonContent = _react2.default.createElement(
'div',
null,
'Custom Content...\xA0',
_react2.default.createElement(
_Button2.default,
{ dataHook: dataHook, id: 'inner-button', height: 'small' },
'Button content'
)
);
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
{ showDelay: 5, hideDelay: 5, content: buttonContent },
children
));
driver.mouseEnter();
expect(driver.isShown()).toBeFalsy();
return resolveIn(30).then(function () {
expect(driver.isShown()).toBeTruthy();
var buttonTestkit = (0, _testkit.buttonTestkitFactory)({
wrapper: driver.getTooltipWrapper(),
dataHook: dataHook
});
expect(buttonTestkit.getButtonTextContent()).toBe('Button content');
});
});
it('should not override focus event', function () {
var onFocus = jest.fn();
var onFocusedChild = _react2.default.createElement(
'div',
{ onFocus: onFocus },
'Here there is a children'
);
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
onFocusedChild
));
driver.focus();
expect(onFocus).toBeCalled();
});
it('should not override blur event', function () {
var onBlur = jest.fn();
var onBluredChild = _react2.default.createElement(
'div',
{ onBlur: onBlur },
'Here there is a children'
);
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
onBluredChild
));
driver.blur();
expect(onBlur).toBeCalled();
});
it('should not override click event', function () {
var onClick = jest.fn();
var onClickedChild = _react2.default.createElement(
'div',
{ onClick: onClick },
'Here there is a children'
);
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
onClickedChild
));
driver.click();
expect(onClick).toBeCalled();
});
it('should not override mouse enter event', function () {
var onMouseEnter = jest.fn();
var onMouseEnteredChild = _react2.default.createElement(
'div',
{ onMouseEnter: onMouseEnter },
'Here there is a children'
);
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
onMouseEnteredChild
));
driver.mouseEnter();
expect(onMouseEnter).toBeCalled();
});
it('should not override mouse leave event', function () {
var onMouseLeave = jest.fn();
var onMouseLeavedChild = _react2.default.createElement(
'div',
{ onMouseLeave: onMouseLeave },
'Here there is a children'
);
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
onMouseLeavedChild
));
driver.mouseLeave();
expect(onMouseLeave).toBeCalled();
});
it('should support error theme', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({ theme: 'error' }, _props),
children
));
driver.mouseEnter();
expect(driver.hasErrorTheme()).toBeFalsy();
return resolveIn(30).then(function () {
expect(driver.hasErrorTheme()).toBeTruthy();
});
});
it('should support dark theme', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({ theme: 'dark' }, _props),
children
));
driver.mouseEnter();
expect(driver.hasDarkTheme()).toBeFalsy();
return resolveIn(30).then(function () {
expect(driver.hasDarkTheme()).toBeTruthy();
});
});
it('should support light theme', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({ theme: 'light' }, _props),
children
));
driver.mouseEnter();
expect(driver.hasLightTheme()).toBeFalsy();
return resolveIn(30).then(function () {
expect(driver.hasLightTheme()).toBeTruthy();
});
});
it('should have a children', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
children
));
expect(driver.getChildren()).toBe('Here there is a children');
});
it('should have a content', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getContent()).toBe("I'm the content");
});
});
it('should cancel mouse leave, when followed by mouse enter immediately', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
children
));
driver.mouseEnter();
driver.mouseLeave();
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.isShown()).toBe(true);
});
});
it('should call onShow when tooltip is shown', function () {
var onShow = jest.fn();
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _props, { onShow: onShow }),
children
));
driver.mouseEnter();
expect(onShow).not.toHaveBeenCalled();
return resolveIn(30).then(function () {
expect(onShow).toHaveBeenCalled();
expect(driver.isShown()).toBeTruthy();
});
});
it('should call onHide when tooltip is hidden', function () {
var onHide = jest.fn();
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _props, { onHide: onHide }),
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.isShown()).toBeTruthy();
driver.mouseLeave();
return resolveIn(30).then(function () {
expect(driver.isShown()).toBeFalsy();
expect(onHide).toHaveBeenCalled();
});
});
});
it('should append to element selected', function () {
var el = document.createElement('div');
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _props, { appendTo: el }),
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(el.childElementCount).toEqual(1);
});
});
describe('custom triggers', function () {
it('should hide tooltip', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
var props, _render, driver, rerender;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
props = _extends({}, _props, {
hideTrigger: 'custom',
showTrigger: 'custom',
children: children
});
_render = render(_react2.default.createElement(_Tooltip4.default, props)), driver = _render.driver, rerender = _render.rerender;
driver.mouseEnter();
_context.next = 5;
return (0, _eventually2.default)(function () {
return expect(driver.isShown()).toBeFalsy();
});
case 5:
rerender(_react2.default.createElement(_Tooltip4.default, _extends({}, props, { active: true })));
_context.next = 8;
return (0, _eventually2.default)(function () {
return expect(driver.isShown()).toBeTruthy();
});
case 8:
rerender(_react2.default.createElement(_Tooltip4.default, _extends({}, props, { active: false })));
_context.next = 11;
return (0, _eventually2.default)(function () {
return expect(driver.isShown()).toBeFalsy();
});
case 11:
case 'end':
return _context.stop();
}
}
}, _callee, undefined);
})));
it('should not show tooltip when transitioned to both active and disabled', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
var props, _render2, driver, rerender;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
props = _extends({}, _props, {
hideTrigger: 'custom',
showTrigger: 'custom',
active: false,
disabled: false,
children: children
});
_render2 = render(_react2.default.createElement(_Tooltip4.default, props)), driver = _render2.driver, rerender = _render2.rerender;
expect(driver.isShown()).toBeFalsy();
_context2.next = 5;
return (0, _eventually2.default)(function () {
return expect(driver.isShown()).toBeFalsy();
});
case 5:
rerender(_react2.default.createElement(_Tooltip4.default, _extends({}, props, { active: true, disabled: true })));
expect(driver.isShown()).toBeFalsy();
case 7:
case 'end':
return _context2.stop();
}
}
}, _callee2, undefined);
})));
it('should close tooltip when disabled changed to true when was active true before', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
var props, _render3, driver, rerender;
return regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
props = _extends({}, _props, {
hideTrigger: 'custom',
showTrigger: 'custom',
active: true,
disabled: false,
children: children
});
_render3 = render(_react2.default.createElement(_Tooltip4.default, props)), driver = _render3.driver, rerender = _render3.rerender;
_context3.next = 4;
return (0, _eventually2.default)(function () {
return expect(driver.isShown()).toBeTruthy();
});
case 4:
rerender(_react2.default.createElement(_Tooltip4.default, _extends({}, props, { disabled: true })));
_context3.next = 7;
return (0, _eventually2.default)(function () {
return expect(driver.isShown()).toBeFalsy();
});
case 7:
case 'end':
return _context3.stop();
}
}
}, _callee3, undefined);
})));
});
describe('placement attribute', function () {
it('should be top by default', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _props),
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getPlacement()).toBe('top');
});
});
it('should be bottom', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _extends({}, _props), { placement: 'bottom' }),
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getPlacement()).toBe('bottom');
});
});
it('should be top', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _extends({}, _props), { placement: 'top' }),
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getPlacement()).toBe('top');
});
});
it('should be left', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _extends({}, _props), { placement: 'left' }),
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getPlacement()).toBe('left');
});
});
it('should be right', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _extends({}, _props), { placement: 'right' }),
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getPlacement()).toBe('right');
});
});
});
describe('maxWidth attribute', function () {
it('should set default maxWidth 204', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getMaxWidth()).toBe('204px');
});
});
it('should set custom maxWidth', function () {
var props = _extends({}, _props, { maxWidth: '400px' });
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
props,
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getMaxWidth()).toBe('400px');
});
});
});
describe('minWidth attribute', function () {
it('should not have any min-width as default', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getMinWidth()).toBe(undefined);
});
});
it('should set custom min-width', function () {
var props = _extends({}, _props, { minWidth: '150px' });
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
props,
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getMinWidth()).toBe('150px');
});
});
});
describe('alignment attribute', function () {
it('should set default left', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getAlignment()).toBe('left');
});
});
});
describe('padding attribute', function () {
it('should set default to none', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_props,
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getPadding()).toBe(undefined);
});
});
it('should set custom padding', function () {
var props = _extends({}, _props, { padding: '5px' });
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
props,
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.getPadding()).toBe('5px');
});
});
});
describe('showArrow prop', function () {
var props = _extends({}, _props, {
content: 'This is the content'
});
it('should have an arrow by default', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
props,
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.hasArrow()).toBeTruthy();
});
});
it('should not show an arrow if `showArrow` is set to false', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, props, { showArrow: false }),
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.hasArrow()).toBeFalsy();
});
});
});
describe('popover', function () {
it('should show a tooltip on click', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({ popover: true }, _props),
children
));
driver.click();
expect(driver.isShown()).toBeFalsy();
return resolveIn(30).then(function () {
expect(driver.isShown()).toBeTruthy();
});
});
it('should hide a tooltip on click', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({ popover: true }, _props),
children
));
driver.click();
expect(driver.isShown()).toBeFalsy();
return resolveIn(30).then(function () {
expect(driver.isShown()).toBeTruthy();
driver.click();
return resolveIn(30).then(function () {
expect(driver.isShown()).toBeFalsy();
});
});
});
});
it('should exist with default props when appendToParent', function () {
var _render4 = render(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _props, { appendToParent: true }),
children
)),
driver = _render4.driver;
driver.mouseEnter();
expect(driver.isShown()).toBeFalsy();
return resolveIn(30).then(function () {
expect(driver.isShown()).toBeTruthy();
expect(driver.getContent()).toBe("I'm the content");
expect(driver.hasLightTheme()).toBeTruthy();
expect(driver.getPlacement()).toBe('top');
});
});
describe('themse', function () {
it('should have dark theme when appendToParent', function () {
var _render5 = render(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _props, { appendToParent: true, theme: 'dark' }),
children
)),
driver = _render5.driver;
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.hasDarkTheme()).toBeTruthy();
});
});
it('should have error theme when appendToParent', function () {
var _render6 = render(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _props, { appendToParent: true, theme: 'error' }),
children
)),
driver = _render6.driver;
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.hasErrorTheme()).toBeTruthy();
});
});
});
describe('contentHook', function () {
var defaultProps = {
showDelay: 5,
hideDelay: 5,
content: "I'm the content",
children: children
};
it('isShown should work when child is a Custom Component', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {
var _render7, driver;
return regeneratorRuntime.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_render7 = render(_react2.default.createElement(
_Tooltip4.default,
{ showDelay: 5, dataHook: 'my-tooltip', content: 'I\'m the content' },
_react2.default.createElement(_Button2.default, null)
)), driver = _render7.driver;
driver.mouseEnter();
_context4.next = 4;
return (0, _eventually2.default)(function () {
expect(driver.isShown()).toBeTruthy();
});
case 4:
case 'end':
return _context4.stop();
}
}
}, _callee4, undefined);
})));
it('isShown should differentiate between different tooltips given dataHooks provided', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() {
var _render8, firstTooltipDriver, _render9, secondTooltipDriver;
return regeneratorRuntime.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_render8 = render(_react2.default.createElement(_Tooltip4.default, _extends({}, defaultProps, { dataHook: 'firstTooltip' }))), firstTooltipDriver = _render8.driver;
_render9 = render(_react2.default.createElement(_Tooltip4.default, _extends({}, defaultProps, { dataHook: 'secondTooltip' }))), secondTooltipDriver = _render9.driver;
firstTooltipDriver.mouseEnter();
_context5.next = 5;
return (0, _eventually2.default)(function () {
expect(firstTooltipDriver.isShown()).toBeTruthy();
expect(secondTooltipDriver.isShown()).toBeFalsy();
});
case 5:
case 'end':
return _context5.stop();
}
}
}, _callee5, undefined);
})));
it('isShown should differentiate between different tooltips given dataHooks NOT provided', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() {
var _render10, firstTooltipDriver, _render11, secondTooltipDriver;
return regeneratorRuntime.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_render10 = render(_react2.default.createElement(_Tooltip4.default, defaultProps)), firstTooltipDriver = _render10.driver;
_render11 = render(_react2.default.createElement(_Tooltip4.default, defaultProps)), secondTooltipDriver = _render11.driver;
firstTooltipDriver.mouseEnter();
_context6.next = 5;
return (0, _eventually2.default)(function () {
expect(firstTooltipDriver.isShown()).toBeTruthy();
expect(secondTooltipDriver.isShown()).toBeFalsy();
});
case 5:
case 'end':
return _context6.stop();
}
}
}, _callee6, undefined);
})));
it('should keep contentHook when re-rendered', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7() {
var _render12, container, rerender, contentHook1, contentHook2;
return regeneratorRuntime.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
_render12 = render(_react2.default.createElement(_Tooltip4.default, defaultProps)), container = _render12.container, rerender = _render12.rerender;
contentHook1 = container.querySelector('[data-content-hook]').getAttribute('data-content-hook');
rerender(_react2.default.createElement(_Tooltip4.default, _extends({}, defaultProps, { showDelay: 6 })));
contentHook2 = container.querySelector('[data-content-hook]').getAttribute('data-content-hook');
expect(contentHook1).toBe(contentHook2);
case 5:
case 'end':
return _context7.stop();
}
}
}, _callee7, undefined);
})));
it('should update contentHook when dataHook changes', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8() {
var _render13, container, rerender, driver, contentHook1, contentHook2;
return regeneratorRuntime.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
_render13 = render(_react2.default.createElement(_Tooltip4.default, _extends({}, defaultProps, { dataHook: 'firstDataHook' }))), container = _render13.container, rerender = _render13.rerender, driver = _render13.driver;
driver.mouseEnter();
_context8.next = 4;
return (0, _eventually2.default)(function () {
return expect(driver.isShown()).toBeTruthy();
});
case 4:
contentHook1 = container.querySelector('[data-content-hook]').getAttribute('data-content-hook');
expect(contentHook1).toContain('firstDataHook');
expect(document.body.querySelector('[data-hook="' + contentHook1 + '"]')).toBeTruthy();
driver.mouseLeave();
_context8.next = 10;
return (0, _eventually2.default)(function () {
return expect(driver.isShown()).toBeFalsy();
});
case 10:
rerender(_react2.default.createElement(_Tooltip4.default, _extends({}, defaultProps, { dataHook: 'secondDataHook' })));
driver.mouseEnter();
_context8.next = 14;
return (0, _eventually2.default)(function () {
return expect(driver.isShown()).toBeTruthy();
});
case 14:
contentHook2 = container.querySelector('[data-content-hook]').getAttribute('data-content-hook');
expect(contentHook2).toContain('secondDataHook');
expect(document.body.querySelector('[data-hook="' + contentHook2 + '"]')).toBeTruthy();
case 17:
case 'end':
return _context8.stop();
}
}
}, _callee8, undefined);
})));
it('should differentiate between different tooltips for all related driver methods', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9() {
var _render14, firstDriver, _render15, secondDriver, _render16, thirdDriver;
return regeneratorRuntime.wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
_render14 = render(_react2.default.createElement(_Tooltip4.default, _extends({}, defaultProps, {
theme: 'error',
showTrigger: 'click',
placement: 'top'
}))), firstDriver = _render14.driver;
_render15 = render(_react2.default.createElement(_Tooltip4.default, _extends({}, defaultProps, {
theme: 'dark',
showTrigger: 'click',
placement: 'bottom'
}))), secondDriver = _render15.driver;
_render16 = render(_react2.default.createElement(_Tooltip4.default, _extends({}, defaultProps, {
theme: 'light',
showTrigger: 'click',
showImmediately: true,
showArrow: false
}))), thirdDriver = _render16.driver;
firstDriver.click();
secondDriver.click();
thirdDriver.click();
_context9.next = 8;
return (0, _eventually2.default)(function () {
expect(firstDriver.isShown()).toBeTruthy();
expect(secondDriver.isShown()).toBeTruthy();
expect(thirdDriver.isShown()).toBeTruthy();
});
case 8:
expect(firstDriver.hasErrorTheme()).toBeTruthy();
expect(firstDriver.hasDarkTheme()).toBeFalsy();
expect(firstDriver.hasLightTheme()).toBeFalsy();
expect(firstDriver.hasAnimationClass()).toBeTruthy();
expect(firstDriver.hasArrow()).toBeTruthy();
expect(firstDriver.getPlacement()).toBe('top');
expect(secondDriver.hasErrorTheme()).toBeFalsy();
expect(secondDriver.hasDarkTheme()).toBeTruthy();
expect(secondDriver.hasLightTheme()).toBeFalsy();
expect(secondDriver.getPlacement()).toBe('bottom');
expect(thirdDriver.hasErrorTheme()).toBeFalsy();
expect(thirdDriver.hasDarkTheme()).toBeFalsy();
expect(thirdDriver.hasLightTheme()).toBeTruthy();
expect(thirdDriver.hasAnimationClass()).toBeFalsy();
expect(thirdDriver.hasArrow()).toBeFalsy();
case 23:
case 'end':
return _context9.stop();
}
}
}, _callee9, undefined);
})));
});
describe('enzyme testkit', function () {
it('should remove a tooltip immediately once the component is destroyed', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10() {
var _render17, driver;
return regeneratorRuntime.wrap(function _callee10$(_context10) {
while (1) {
switch (_context10.prev = _context10.next) {
case 0:
_render17 = render(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _props, { hideDelay: 1000 }),
children
)), driver = _render17.driver;
driver.mouseEnter();
_context10.next = 4;
return (0, _eventually2.default)(function () {
return expect(driver.isShown()).toBeTruthy();
});
case 4:
(0, _react3.cleanup)();
expect(driver.isShown()).toBeFalsy();
case 6:
case 'end':
return _context10.stop();
}
}
}, _callee10, undefined);
})));
it('should have fadeIn class and delay when showImmediately is unspecified', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _props, { content: _react2.default.createElement(
'div',
null,
'HELLO WORLD'
) }),
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.hasAnimationClass()).toBeTruthy();
});
});
it('should have fadeIn class and delay when showImmediately is false', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _props, {
content: _react2.default.createElement(
'div',
null,
'HELLO WORLD'
),
showImmediately: false
}),
children
));
driver.mouseEnter();
return resolveIn(30).then(function () {
expect(driver.hasAnimationClass()).toBeTruthy();
});
});
it('should not have fadeIn class and no delay when showImmediately is true', function () {
var driver = createDriver(_react2.default.createElement(
_Tooltip4.default,
_extends({}, _props, { content: _react2.default.createElement(
'div',
null,
'HELLO WORLD'
), showImmediately: true }),
children
));
driver.mouseEnter();
expect(driver.hasAnimationClass()).toBeFalsy();
});
});
describe('assertExistsWrapper', function () {
it('should return exists false', function () {
var driver = (0, _Tooltip2.default)({ element: null });
expect(driver.exists()).toBeFalsy();
});
it('should throw error', function () {
var driver = (0, _Tooltip2.default)({ element: null });
expect(function () {
return driver.isShown();
}).toThrowError('Tooltip');
});
});
});
function resolveIn(timeout) {
return new Promise(function (resolve) {
setTimeout(function () {
resolve({});
}, timeout);
});
}