UNPKG

wix-style-react

Version:
323 lines (248 loc) • 11.7 kB
'use strict'; 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 _testUtils = require('react-dom/test-utils'); var _testUtils2 = _interopRequireDefault(_testUtils); var _driverFactory = require('wix-ui-test-utils/driver-factory'); var _enzyme = require('enzyme'); var _wixEventually = require('wix-eventually'); var _wixEventually2 = _interopRequireDefault(_wixEventually); var _TableActionCell = require('./TableActionCell'); var _TableActionCell2 = _interopRequireDefault(_TableActionCell); var _TableActionCell3 = require('./TableActionCell.driver'); var _TableActionCell4 = _interopRequireDefault(_TableActionCell3); var _testkit = require('../../testkit'); var _enzyme2 = require('../../testkit/enzyme'); var _privateDrivers = require('../../test/utils/private-drivers'); 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"); }); }; } var primaryActionProps = function primaryActionProps() { var actionTrigger = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {}; return { primaryAction: { text: 'primary action', theme: 'whiteblue', onClick: actionTrigger } }; }; var secondaryActionsProps = function secondaryActionsProps() { var actionTriggers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var createAction = function createAction(n) { return { text: 'Action ' + n, icon: _react2.default.createElement( 'span', null, 'Icon ' + n ), // simulate the icon as <span> elements onClick: actionTriggers[n] || function () {} }; }; return { secondaryActions: Array(4).fill().map(function (val, idx) { return createAction(idx); }), numOfVisibleSecondaryActions: 2 }; }; describe('Table Action Cell', function () { var createDriver = function createDriver() { return (0, _privateDrivers.flattenInternalDriver)((0, _driverFactory.createDriverFactory)(_TableActionCell4.default).apply(undefined, arguments)); }; it("should have a placeholder when there's only a primary action", function () { var driver = createDriver(_react2.default.createElement(_TableActionCell2.default, primaryActionProps())); expect(driver.primaryActionPlaceholderExists()).toBeTruthy(); }); it('should display the primary action button', function () { var onPrimaryActionTrigger = jest.fn(); var driver = createDriver(_react2.default.createElement(_TableActionCell2.default, primaryActionProps(onPrimaryActionTrigger))); expect(driver.getPrimaryActionButtonDriver().exists()).toBeTruthy(); expect(driver.getPrimaryActionButtonDriver().getButtonTextContent()).toEqual('primary action'); }); it('should trigger the primary action on primary button click', function () { var onPrimaryActionTrigger = jest.fn(); var driver = createDriver(_react2.default.createElement(_TableActionCell2.default, primaryActionProps(onPrimaryActionTrigger))); driver.clickPrimaryActionButton(); expect(onPrimaryActionTrigger).toHaveBeenCalledTimes(1); }); it('should not have a primary action placeholder when there are also secondary actions', function () { var driver = createDriver(_react2.default.createElement(_TableActionCell2.default, _extends({}, primaryActionProps(), secondaryActionsProps()))); expect(driver.primaryActionPlaceholderExists()).toBeFalsy(); }); it('should put visible secondary actions in the cell', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { var driver, tooltipDriver1, tooltipDriver2; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: driver = createDriver(_react2.default.createElement(_TableActionCell2.default, _extends({}, primaryActionProps(), secondaryActionsProps()))); expect(driver.getVisibleActionsCount()).toEqual(2); expect(driver.getVisibleActionButtonDriver(0).getButtonTextContent()).toEqual('Icon 0'); expect(driver.getVisibleActionButtonDriver(1).getButtonTextContent()).toEqual('Icon 1'); tooltipDriver1 = driver.getVisibleActionTooltipDriver(0); tooltipDriver2 = driver.getVisibleActionTooltipDriver(1); tooltipDriver1.mouseEnter(); _context.next = 9; return (0, _wixEventually2.default)(function () { return expect(tooltipDriver1.getContent()).toEqual('Action 0'); }); case 9: tooltipDriver1.mouseLeave(); tooltipDriver2.mouseEnter(); _context.next = 13; return (0, _wixEventually2.default)(function () { return expect(tooltipDriver2.getContent()).toEqual('Action 1'); }); case 13: tooltipDriver2.mouseLeave(); case 14: case 'end': return _context.stop(); } } }, _callee, undefined); }))); it('should put hidden secondary action in a PopoverMenu', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { var driver, popoverMenuDriver; return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: driver = createDriver(_react2.default.createElement(_TableActionCell2.default, _extends({}, primaryActionProps(), secondaryActionsProps()))); popoverMenuDriver = driver.getHiddenActionsPopoverMenuDriver(0); expect(popoverMenuDriver.exists()).toEqual(true); popoverMenuDriver.click(); _context2.next = 6; return (0, _wixEventually2.default)(function () { expect(popoverMenuDriver.menu.itemsLength()).toEqual(2); expect(popoverMenuDriver.menu.itemContentAt(0)).toEqual('Action 2'); expect(popoverMenuDriver.menu.itemContentAt(1)).toEqual('Action 3'); }); case 6: case 'end': return _context2.stop(); } } }, _callee2, undefined); }))); it('should trigger secondary action on click', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { var actionTriggers, driver; return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: actionTriggers = Array(4).fill().map(function () { return jest.fn(); }); driver = createDriver(_react2.default.createElement(_TableActionCell2.default, _extends({}, primaryActionProps(), secondaryActionsProps(actionTriggers)))); driver.clickVisibleAction(0); driver.clickVisibleAction(1); driver.clickPopoverMenu(); _context3.next = 7; return (0, _wixEventually2.default)(function () { return driver.clickHiddenAction(0); }); case 7: driver.clickPopoverMenu(); _context3.next = 10; return (0, _wixEventually2.default)(function () { return driver.clickHiddenAction(1); }); case 10: actionTriggers.forEach(function (actionTrigger) { expect(actionTrigger).toHaveBeenCalledTimes(1); }); case 11: case 'end': return _context3.stop(); } } }, _callee3, undefined); }))); it('should render disabled hidden actions', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { var actionTrigger, disabledAction, driver; return regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: actionTrigger = jest.fn(); disabledAction = { text: 'Disabled Action', icon: _react2.default.createElement( 'span', null, 'Icon' ), onClick: actionTrigger, disabled: true }; driver = createDriver(_react2.default.createElement(_TableActionCell2.default, _extends({}, primaryActionProps(), { secondaryActions: [disabledAction], numOfVisibleSecondaryActions: 0 }))); driver.clickPopoverMenu(); _context4.next = 6; return (0, _wixEventually2.default)(function () { return driver.clickHiddenAction(0); }); case 6: expect(actionTrigger).toHaveBeenCalledTimes(0); case 7: case 'end': return _context4.stop(); } } }, _callee4, undefined); }))); it('should allow to change the number of visible secondary actions', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { var driver; return regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: driver = createDriver(_react2.default.createElement(_TableActionCell2.default, _extends({}, primaryActionProps(), secondaryActionsProps(), { numOfVisibleSecondaryActions: 3 }))); expect(driver.getVisibleActionsCount()).toEqual(3); driver.clickPopoverMenu(); _context5.next = 5; return (0, _wixEventually2.default)(function () { return expect(driver.getHiddenActionsCount()).toEqual(1); }); case 5: case 'end': return _context5.stop(); } } }, _callee5, undefined); }))); }); describe('testkit', function () { it('should exist', function () { var div = document.createElement('div'); var dataHook = 'table-action-cell'; var wrapper = div.appendChild(_testUtils2.default.renderIntoDocument(_react2.default.createElement( 'div', null, _react2.default.createElement(_TableActionCell2.default, _extends({ dataHook: dataHook }, primaryActionProps())) ))); var actionCellTextkit = (0, _testkit.tableActionCellTestkitFactory)({ wrapper: wrapper, dataHook: dataHook }); expect(actionCellTextkit.getPrimaryActionButtonDriver()).toBeTruthy(); }); }); describe('enzyme testkit', function () { it('should exist', function () { var dataHook = 'table-action-cell'; var wrapper = (0, _enzyme.mount)(_react2.default.createElement(_TableActionCell2.default, _extends({ dataHook: dataHook }, primaryActionProps()))); var actionCellTextkit = (0, _enzyme2.tableActionCellTestkitFactory)({ wrapper: wrapper, dataHook: dataHook }); expect(actionCellTextkit.getPrimaryActionButtonDriver()).toBeTruthy(); }); });