UNPKG

@roo-ui/components

Version:

123 lines (109 loc) 4.55 kB
"use strict"; var _react = _interopRequireDefault(require("react")); var _themes = require("@roo-ui/themes"); var _testUtils = require("@roo-ui/test-utils"); var _jestAxe = require("jest-axe"); var _ = _interopRequireDefault(require(".")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } jest.mock('popper.js', function () { return ( /*#__PURE__*/ function () { function _class() { _classCallCheck(this, _class); return { destroy: function destroy() {}, scheduleUpdate: function scheduleUpdate() {} }; } return _class; }() ); }); describe('<Popover />', function () { var modifiers = { preventOverflow: { enabled: false } }; var wrapper; beforeEach(function () { // Need to wrap in div until this is solved https://github.com/Pomax/react-onclickoutside/issues/271 wrapper = (0, _testUtils.mountWithTheme)(_react.default.createElement("div", null, _react.default.createElement(_.default, { modifiers: modifiers }, _react.default.createElement(_.default.control, null, function (_ref) { var openPopover = _ref.openPopover, closePopover = _ref.closePopover, isOpen = _ref.isOpen; return _react.default.createElement("button", { disabled: isOpen, onClick: openPopover, onKeyDown: closePopover }, "Open popover"); }), _react.default.createElement("p", null, "Popover contents"))), _themes.qantas); }); it('has no accessibility errors', /*#__PURE__*/ _asyncToGenerator( /*#__PURE__*/ regeneratorRuntime.mark(function _callee() { return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.t0 = expect; _context.next = 3; return (0, _jestAxe.axe)(wrapper.html()); case 3: _context.t1 = _context.sent; (0, _context.t0)(_context.t1).toHaveNoViolations(); case 5: case "end": return _context.stop(); } } }, _callee); }))); describe('when popover is closed', function () { it('renders correctly', function () { expect(wrapper).toMatchSnapshot(); }); it('does not render the <Popper />', function () { expect(wrapper.find('Popper')).toHaveLength(0); expect(wrapper.text()).not.toContain('Popover contents'); }); it('passes down isOpen false', function () { expect(wrapper.find('button').prop('disabled')).toEqual(false); }); it('renders the <Popper /> when the button is clicked', function () { wrapper.find('button').simulate('click'); expect(wrapper.find('Popper')).toHaveLength(1); }); }); describe('when popover is open', function () { beforeEach(function () { wrapper.find('button').simulate('click'); }); it('renders correctly', function () { expect(wrapper).toMatchSnapshot(); }); it('passed modifiers to <Popper />', function () { expect(wrapper.find('Popper').prop('modifiers')).toEqual(modifiers); }); it('passes down isOpen true', function () { expect(wrapper.find('button').prop('disabled')).toEqual(true); }); it('closes the <Popper /> on key down', function () { wrapper.find('button').simulate('keydown'); expect(wrapper.find('Popper')).toHaveLength(0); }); it('hides <Popper /> when an outside element is clicked', function () { wrapper.find(_.default).instance().getInstance().handleClickOutside(); wrapper.update(); expect(wrapper.find('Popper')).toHaveLength(0); }); }); });