UNPKG

@wix/design-system

Version:

@wix/design-system

1,148 lines (1,145 loc) 102 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _unidriverJsdomReact = require("@wix/unidriver-jsdom-react"); var _unit = require("../../utils/test-utils/unit"); var _SidebarSubMenuNext = _interopRequireDefault(require("../SidebarSubMenuNext")); var _SidebarSubMenuNextPrivateUni = require("./SidebarSubMenuNext.private.uni.driver"); var _SidebarNextContext = require("../../SidebarNext/SidebarNextContext"); var _SidebarItemNext = _interopRequireDefault(require("../../SidebarItemNext/SidebarItemNext")); var _constants = require("../constants"); var _SidebarNext = _interopRequireDefault(require("../../SidebarNext")); var _excluded = ["custom"]; var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/SidebarSubMenuNext/test/SidebarSubMenuNext.spec.jsx", _this = void 0; function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var SidebarNextContextOverride = function SidebarNextContextOverride(_ref) { var context = _ref.context, children = _ref.children; var baseContext = (0, _react.useContext)(_SidebarNextContext.SidebarNextContext); var contextWithOverride = (0, _react.useMemo)(function () { return _objectSpread(_objectSpread({}, baseContext), context); }, [baseContext, context]); return /*#__PURE__*/_react["default"].createElement(_SidebarNextContext.SidebarNextContext.Provider, { value: contextWithOverride, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 24, columnNumber: 5 } }, children); }; var render = (0, _unit.createRendererWithUniDriver)(_SidebarSubMenuNextPrivateUni.sidebarSubMenuNextPrivateDriverFactory); var createDriverFactory = function createDriverFactory(driverFactory) { var _createDriver = function createDriver(container, dataHook) { var selector = "[data-hook=\"".concat(dataHook, "\"]"); var element = container.querySelector(selector); if (!element) { var error = Error("Cannot find element ".concat(selector)); Error.captureStackTrace == null || Error.captureStackTrace(error, _createDriver); throw error; } return driverFactory((0, _unidriverJsdomReact.jsdomReactUniDriver)(element), (0, _unidriverJsdomReact.jsdomReactUniDriver)(container.ownerDocument.body)); }; return _createDriver; }; var createMenuDriver = createDriverFactory(_SidebarSubMenuNextPrivateUni.sidebarSubMenuNextPrivateDriverFactory); describe('SidebarSubMenuNext', function () { it('should render without context', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() { var _render, driver; return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _render = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { __self: _this, __source: { fileName: _jsxFileName, lineNumber: 60, columnNumber: 31 } })), driver = _render.driver; _context.t0 = expect; _context.next = 4; return driver.exists(); case 4: _context.t1 = _context.sent; (0, _context.t0)(_context.t1).toBe(true); case 6: case "end": return _context.stop(); } }, _callee); }))); describe('properties', function () { describe('title', function () { it('should render string title', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() { var _render2, driver, container, nestedDriver; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _render2 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", title: "Menu 1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 68, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1-m1", title: "Menu 2", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 69, columnNumber: 13 } }))), driver = _render2.driver, container = _render2.container; nestedDriver = createMenuDriver(container, 'm1-m1'); _context2.t0 = expect; _context2.next = 5; return driver.getTitleText(); case 5: _context2.t1 = _context2.sent; (0, _context2.t0)(_context2.t1).toEqual('Menu 1'); _context2.t2 = expect; _context2.next = 10; return nestedDriver.getTitleText(); case 10: _context2.t3 = _context2.sent; (0, _context2.t2)(_context2.t3).toEqual('Menu 2'); case 12: case "end": return _context2.stop(); } }, _callee2); }))); it('should render custom title element', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() { var _render3, driver, container, nestedDriver, titleElement1, titleElement2; return _regenerator["default"].wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: _render3 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", title: /*#__PURE__*/_react["default"].createElement("div", { "data-hook": "custom-title-1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 83, columnNumber: 20 } }, "Menu 1"), __self: _this, __source: { fileName: _jsxFileName, lineNumber: 81, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1-m1", title: /*#__PURE__*/_react["default"].createElement("div", { "data-hook": "custom-title-2", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 87, columnNumber: 22 } }, "Menu 2"), __self: _this, __source: { fileName: _jsxFileName, lineNumber: 85, columnNumber: 13 } }))), driver = _render3.driver, container = _render3.container; nestedDriver = createMenuDriver(container, 'm1-m1'); _context3.next = 4; return driver.getTitle('custom-title-1'); case 4: titleElement1 = _context3.sent; _context3.t0 = expect; _context3.next = 8; return titleElement1.text(); case 8: _context3.t1 = _context3.sent; (0, _context3.t0)(_context3.t1).toBe('Menu 1'); _context3.t2 = expect; _context3.next = 13; return driver.getTitleText(); case 13: _context3.t3 = _context3.sent; (0, _context3.t2)(_context3.t3).toEqual('Menu 1'); _context3.next = 17; return nestedDriver.getTitle('custom-title-2'); case 17: titleElement2 = _context3.sent; _context3.t4 = expect; _context3.next = 21; return titleElement2.text(); case 21: _context3.t5 = _context3.sent; (0, _context3.t4)(_context3.t5).toBe('Menu 2'); _context3.t6 = expect; _context3.next = 26; return nestedDriver.getTitleText(); case 26: _context3.t7 = _context3.sent; (0, _context3.t6)(_context3.t7).toEqual('Menu 2'); case 28: case "end": return _context3.stop(); } }, _callee3); }))); }); describe('as', function () { it('should render as anchor', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() { var _render4, getByRole, asElement; return _regenerator["default"].wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: _render4 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { itemKey: "m1", as: "a", href: "https://www.wix.com", title: "Menu 1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 107, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 113, columnNumber: 13 } }, "Item 1"))), getByRole = _render4.getByRole; asElement = getByRole('link'); expect(asElement.getAttribute('href')).toBe('https://www.wix.com'); expect(asElement.textContent).toBe('Menu 1'); case 4: case "end": return _context4.stop(); } }, _callee4); }))); it('should pass unknown props to the "as" component', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() { var CustomComponent, _render5, getByTestId, asElement; return _regenerator["default"].wrap(function _callee5$(_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: CustomComponent = function CustomComponent(_ref7) { var custom = _ref7.custom, rest = (0, _objectWithoutProperties2["default"])(_ref7, _excluded); return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, rest, { "data-custom": custom, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 124, columnNumber: 11 } })); }; _render5 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { itemKey: "m1", as: CustomComponent, custom: "prop", "data-testid": "wrapper-element", "data-custom-prop": "data prop", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 128, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 135, columnNumber: 13 } }, "Item 1"))), getByTestId = _render5.getByTestId; asElement = getByTestId('wrapper-element'); expect(asElement.getAttribute('data-custom')).toBe('prop'); expect(asElement.getAttribute('data-custom-prop')).toBe('data prop'); case 5: case "end": return _context5.stop(); } }, _callee5); }))); }); describe('disabled', function () { it('should not be disabled by default', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() { var _render6, driver; return _regenerator["default"].wrap(function _callee6$(_context6) { while (1) switch (_context6.prev = _context6.next) { case 0: _render6 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { itemKey: "m1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 147, columnNumber: 35 } })), driver = _render6.driver; _context6.t0 = expect; _context6.next = 4; return driver.isDisabled(); case 4: _context6.t1 = _context6.sent; (0, _context6.t0)(_context6.t1).toBe(false); case 6: case "end": return _context6.stop(); } }, _callee6); }))); it('should be disabled when set to disabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() { var _render7, driver; return _regenerator["default"].wrap(function _callee7$(_context7) { while (1) switch (_context7.prev = _context7.next) { case 0: _render7 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 152, columnNumber: 35 } })), driver = _render7.driver; _context7.t0 = expect; _context7.next = 4; return driver.isDisabled(); case 4: _context7.t1 = _context7.sent; (0, _context7.t0)(_context7.t1).toBe(true); case 6: case "end": return _context7.stop(); } }, _callee7); }))); it('should only count as disabled when is disabled directly', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee8() { var _render8, driver, container, nestedDriver; return _regenerator["default"].wrap(function _callee8$(_context8) { while (1) switch (_context8.prev = _context8.next) { case 0: _render8 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 158, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1-m1", itemKey: "m1-m1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 159, columnNumber: 13 } }))), driver = _render8.driver, container = _render8.container; nestedDriver = createMenuDriver(container, 'm1-m1'); _context8.t0 = expect; _context8.next = 5; return driver.isDisabled(); case 5: _context8.t1 = _context8.sent; (0, _context8.t0)(_context8.t1).toBe(true); _context8.t2 = expect; _context8.next = 10; return nestedDriver.isDisabled(); case 10: _context8.t3 = _context8.sent; (0, _context8.t2)(_context8.t3).toBe(false); case 12: case "end": return _context8.stop(); } }, _callee8); }))); it('should be collapsed when selected but is disabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee9() { var _render9, driver; return _regenerator["default"].wrap(function _callee9$(_context9) { while (1) switch (_context9.prev = _context9.next) { case 0: _render9 = render(/*#__PURE__*/_react["default"].createElement(_SidebarNext["default"], { selectedKey: "m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 171, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 172, columnNumber: 13 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 173, columnNumber: 15 } }, "Item 1"))), { dataHook: 'm1' }), driver = _render9.driver; _context9.t0 = expect; _context9.next = 4; return driver.isExpanded(); case 4: _context9.t1 = _context9.sent; (0, _context9.t0)(_context9.t1).toBe(false); case 6: case "end": return _context9.stop(); } }, _callee9); }))); it('should be collapsed when contains selected item but is disabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee0() { var _render0, driver; return _regenerator["default"].wrap(function _callee0$(_context0) { while (1) switch (_context0.prev = _context0.next) { case 0: _render0 = render(/*#__PURE__*/_react["default"].createElement(_SidebarNext["default"], { selectedKey: "m1-i1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 184, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 185, columnNumber: 13 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 186, columnNumber: 15 } }, "Item 1"))), { dataHook: 'm1' }), driver = _render0.driver; _context0.t0 = expect; _context0.next = 4; return driver.isExpanded(); case 4: _context0.t1 = _context0.sent; (0, _context0.t0)(_context0.t1).toBe(false); case 6: case "end": return _context0.stop(); } }, _callee0); }))); it('should be collapsed when contains deeply nested selected item but is disabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee1() { var _render1, driver, container, nestedMenuDriver; return _regenerator["default"].wrap(function _callee1$(_context1) { while (1) switch (_context1.prev = _context1.next) { case 0: _render1 = render(/*#__PURE__*/_react["default"].createElement(_SidebarNext["default"], { selectedKey: "m1-m1-i1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 197, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 198, columnNumber: 13 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1-m1", itemKey: "m1-m1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 199, columnNumber: 15 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 200, columnNumber: 17 } }, "Item 1-1")))), { dataHook: 'm1' }), driver = _render1.driver, container = _render1.container; nestedMenuDriver = createMenuDriver(container, 'm1-m1'); _context1.t0 = expect; _context1.next = 5; return driver.isExpanded(); case 5: _context1.t1 = _context1.sent; (0, _context1.t0)(_context1.t1).toBe(false); _context1.t2 = expect; _context1.next = 10; return nestedMenuDriver.isExpanded(); case 10: _context1.t3 = _context1.sent; (0, _context1.t2)(_context1.t3).toBe(true); case 12: case "end": return _context1.stop(); } }, _callee1); }))); it('should not be togglable when selected but is disabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee10() { var _render10, driver; return _regenerator["default"].wrap(function _callee10$(_context10) { while (1) switch (_context10.prev = _context10.next) { case 0: _render10 = render(/*#__PURE__*/_react["default"].createElement(_SidebarNext["default"], { selectedKey: "m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 215, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 216, columnNumber: 13 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 217, columnNumber: 15 } }, "Item 1"))), { dataHook: 'm1' }), driver = _render10.driver; _context10.t0 = expect; _context10.next = 4; return driver.isExpanded(); case 4: _context10.t1 = _context10.sent; (0, _context10.t0)(_context10.t1).toBe(false); _context10.next = 8; return driver.click(); case 8: _context10.t2 = expect; _context10.next = 11; return driver.isExpanded(); case 11: _context10.t3 = _context10.sent; (0, _context10.t2)(_context10.t3).toBe(false); case 13: case "end": return _context10.stop(); } }, _callee10); }))); it('should not be togglable when contains selected item but is disabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee11() { var _render11, driver; return _regenerator["default"].wrap(function _callee11$(_context11) { while (1) switch (_context11.prev = _context11.next) { case 0: _render11 = render(/*#__PURE__*/_react["default"].createElement(_SidebarNext["default"], { selectedKey: "m1-i1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 230, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 231, columnNumber: 13 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 232, columnNumber: 15 } }, "Item 1"))), { dataHook: 'm1' }), driver = _render11.driver; _context11.t0 = expect; _context11.next = 4; return driver.isExpanded(); case 4: _context11.t1 = _context11.sent; (0, _context11.t0)(_context11.t1).toBe(false); _context11.next = 8; return driver.click(); case 8: _context11.t2 = expect; _context11.next = 11; return driver.isExpanded(); case 11: _context11.t3 = _context11.sent; (0, _context11.t2)(_context11.t3).toBe(false); case 13: case "end": return _context11.stop(); } }, _callee11); }))); }); describe('onClick', function () { it('should call onClick when clicked while not selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee12() { var onClickSpy, _render12, driver; return _regenerator["default"].wrap(function _callee12$(_context12) { while (1) switch (_context12.prev = _context12.next) { case 0: onClickSpy = vi.fn(function (event) { event.persist(); }); _render12 = render(/*#__PURE__*/_react["default"].createElement(_SidebarNext["default"], { selectedKey: "not-m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 251, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", itemKey: "m1", onClick: onClickSpy, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 252, columnNumber: 13 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 253, columnNumber: 15 } }))), { dataHook: 'm1' }), driver = _render12.driver; _context12.next = 4; return driver.click(); case 4: expect(onClickSpy).toHaveBeenCalledTimes(1); // Menu button can be a link. When menu is not selected (and doesn't // have a selected item within) we want to allow the link to perform the // default action (navigate natively or via react-router). // However, when the menu is selected (or has a selected item within), // we want to prevent the default action and toggle expansion instead. // For consistency this applies to all cases, even if `as` prop isn't // used and menu button is not a link. expect(onClickSpy.mock.calls[0][0].defaultPrevented).toBe(false); case 6: case "end": return _context12.stop(); } }, _callee12); }))); it('should call onClick and prevent default when clicked while selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee13() { var onClickSpy, _render13, driver; return _regenerator["default"].wrap(function _callee13$(_context13) { while (1) switch (_context13.prev = _context13.next) { case 0: onClickSpy = vi.fn(function (event) { event.persist(); }); _render13 = render(/*#__PURE__*/_react["default"].createElement(_SidebarNext["default"], { selectedKey: "m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 278, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", itemKey: "m1", onClick: onClickSpy, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 279, columnNumber: 13 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 280, columnNumber: 15 } }))), { dataHook: 'm1' }), driver = _render13.driver; _context13.next = 4; return driver.click(); case 4: expect(onClickSpy).toHaveBeenCalledTimes(1); expect(onClickSpy.mock.calls[0][0].defaultPrevented).toBe(true); case 6: case "end": return _context13.stop(); } }, _callee13); }))); it('should call onClick and prevent default when clicked and has a selected item within', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee14() { var onClickSpy, _render14, driver; return _regenerator["default"].wrap(function _callee14$(_context14) { while (1) switch (_context14.prev = _context14.next) { case 0: onClickSpy = vi.fn(function (event) { event.persist(); }); _render14 = render(/*#__PURE__*/_react["default"].createElement(_SidebarNext["default"], { selectedKey: "m1-i1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 297, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", itemKey: "m1", onClick: onClickSpy, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 298, columnNumber: 13 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 299, columnNumber: 15 } }))), { dataHook: 'm1' }), driver = _render14.driver; _context14.next = 4; return driver.click(); case 4: expect(onClickSpy).toHaveBeenCalledTimes(1); expect(onClickSpy.mock.calls[0][0].defaultPrevented).toBe(true); case 6: case "end": return _context14.stop(); } }, _callee14); }))); it('should not call onClick while disabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee15() { var onClickSpy, _render15, driver; return _regenerator["default"].wrap(function _callee15$(_context15) { while (1) switch (_context15.prev = _context15.next) { case 0: onClickSpy = vi.fn(); _render15 = render(/*#__PURE__*/_react["default"].createElement(_SidebarNext["default"], { selectedKey: "m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 314, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", itemKey: "m1", onClick: onClickSpy, disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 315, columnNumber: 13 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 321, columnNumber: 15 } }))), { dataHook: 'm1' }), driver = _render15.driver; _context15.next = 4; return driver.click(); case 4: expect(onClickSpy).not.toHaveBeenCalled(); case 5: case "end": return _context15.stop(); } }, _callee15); }))); it('should not call onClick when clicked on a nested menu', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee16() { var onClickSpy, onNestedClickSpy, _render16, container, nestedDriver; return _regenerator["default"].wrap(function _callee16$(_context16) { while (1) switch (_context16.prev = _context16.next) { case 0: onClickSpy = vi.fn(); onNestedClickSpy = vi.fn(); _render16 = render(/*#__PURE__*/_react["default"].createElement(_SidebarNext["default"], { selectedKey: "m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 336, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1", itemKey: "m1", onClick: onClickSpy, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 337, columnNumber: 13 } }, /*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { dataHook: "m1-m1", itemKey: "m1-m1", onClick: onNestedClickSpy, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 338, columnNumber: 15 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 343, columnNumber: 17 } })))), { dataHook: 'm1' }), container = _render16.container; nestedDriver = createMenuDriver(container, 'm1-m1'); _context16.next = 6; return nestedDriver.click(); case 6: expect(onClickSpy).not.toHaveBeenCalled(); expect(onNestedClickSpy).toHaveBeenCalledTimes(1); case 8: case "end": return _context16.stop(); } }, _callee16); }))); }); describe('prefix', function () { it('should render prefix', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee17() { var _render17, driver; return _regenerator["default"].wrap(function _callee17$(_context17) { while (1) switch (_context17.prev = _context17.next) { case 0: _render17 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { itemKey: "m1", prefix: /*#__PURE__*/_react["default"].createElement("div", { "data-hook": "prefix", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 363, columnNumber: 21 } }, "Prefix"), __self: _this, __source: { fileName: _jsxFileName, lineNumber: 361, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 365, columnNumber: 13 } }))), driver = _render17.driver; _context17.t0 = expect; _context17.next = 4; return driver.elementExistsByHook('prefix'); case 4: _context17.t1 = _context17.sent; (0, _context17.t0)(_context17.t1).toBe(true); case 6: case "end": return _context17.stop(); } }, _callee17); }))); }); describe('suffix', function () { it('should render chevron suffix by default', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee18() { var _render18, driver; return _regenerator["default"].wrap(function _callee18$(_context18) { while (1) switch (_context18.prev = _context18.next) { case 0: _render18 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { itemKey: "m1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 376, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 377, columnNumber: 13 } }))), driver = _render18.driver; _context18.t0 = expect; _context18.next = 4; return driver.getSuffixCount(); case 4: _context18.t1 = _context18.sent; (0, _context18.t0)(_context18.t1).toBe(1); _context18.t2 = expect; _context18.next = 9; return driver.isChevronExists(); case 9: _context18.t3 = _context18.sent; (0, _context18.t2)(_context18.t3).toBe(true); case 11: case "end": return _context18.stop(); } }, _callee18); }))); it('should render suffix in addition to the default chevron', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee19() { var _render19, driver; return _regenerator["default"].wrap(function _callee19$(_context19) { while (1) switch (_context19.prev = _context19.next) { case 0: _render19 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { itemKey: "m1", suffix: /*#__PURE__*/_react["default"].createElement("div", { "data-hook": "suffix1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 389, columnNumber: 21 } }, "Suffix 1"), __self: _this, __source: { fileName: _jsxFileName, lineNumber: 387, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 391, columnNumber: 13 } }))), driver = _render19.driver; _context19.t0 = expect; _context19.next = 4; return driver.getSuffixCount(); case 4: _context19.t1 = _context19.sent; (0, _context19.t0)(_context19.t1).toBe(2); _context19.t2 = expect; _context19.next = 9; return driver.isChevronExists(); case 9: _context19.t3 = _context19.sent; (0, _context19.t2)(_context19.t3).toBe(true); case 11: case "end": return _context19.stop(); } }, _callee19); }))); it('should render no more than 1 additional suffix', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee20() { var _render20, driver; return _regenerator["default"].wrap(function _callee20$(_context20) { while (1) switch (_context20.prev = _context20.next) { case 0: _render20 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { itemKey: "m1", suffix: [/*#__PURE__*/_react["default"].createElement("div", { "data-hook": "suffix1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 403, columnNumber: 22 } }), /*#__PURE__*/_react["default"].createElement("div", { "data-hook": "suffix2", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 403, columnNumber: 51 } })], __self: _this, __source: { fileName: _jsxFileName, lineNumber: 401, columnNumber: 11 } }, /*#__PURE__*/_react["default"].createElement(_SidebarItemNext["default"], { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 405, columnNumber: 13 } }))), driver = _render20.driver; _context20.t0 = expect; _context20.next = 4; return driver.getSuffixCount(); case 4: _context20.t1 = _context20.sent; (0, _context20.t0)(_context20.t1).toBe(2); _context20.t2 = expect; _context20.next = 9; return driver.elementExistsByHook('suffix1'); case 9: _context20.t3 = _context20.sent; (0, _context20.t2)(_context20.t3).toBe(true); _context20.t4 = expect; _context20.next = 14; return driver.elementExistsByHook('suffix2'); case 14: _context20.t5 = _context20.sent; (0, _context20.t4)(_context20.t5).toBe(false); case 16: case "end": return _context20.stop(); } }, _callee20); }))); it('should not render any suffixes when disabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee21() { var _render21, driver; return _regenerator["default"].wrap(function _callee21$(_context21) { while (1) switch (_context21.prev = _context21.next) { case 0: _render21 = render(/*#__PURE__*/_react["default"].createElement(_SidebarSubMenuNext["default"], { itemKey: "m1", disabled: true, suffix: [/*#__PURE__*/_react["default"].createElement("div", { "data-hook": "suffix1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 419, columnNumber: 22 } }), /*#__PURE__*/_react["default"].createElement("div", { "data-hook": "suffix2", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 419, columnNumber: 51 } })], __self: _this, __source: {