UNPKG

@wix/design-system

Version:

@wix/design-system

1,223 lines (1,222 loc) 96.2 kB
import _extends from "@babel/runtime/helpers/extends"; import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; var _excluded = ["custom"]; var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/esm/SidebarSubMenuNext/test/SidebarSubMenuNext.spec.jsx", _this = this; import _regeneratorRuntime from "@babel/runtime/regenerator"; 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) { _defineProperty(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; } import React, { useContext, useMemo } from 'react'; import { jsdomReactUniDriver } from '@wix/unidriver-jsdom-react'; import { act, createRendererWithUniDriver } from '../../utils/test-utils/unit'; import SidebarSubMenuNext from '../SidebarSubMenuNext'; import { sidebarSubMenuNextPrivateDriverFactory } from './SidebarSubMenuNext.private.uni.driver'; import { SidebarNextContext } from '../../SidebarNext/SidebarNextContext'; import SidebarItemNext from '../../SidebarItemNext/SidebarItemNext'; import { dataHooks, SIDEBAR_SUBMENU_ANIMATION_TYPES } from '../constants'; import SidebarNext from '../../SidebarNext'; var SidebarNextContextOverride = function SidebarNextContextOverride(_ref) { var context = _ref.context, children = _ref.children; var baseContext = useContext(SidebarNextContext); var contextWithOverride = useMemo(function () { return _objectSpread(_objectSpread({}, baseContext), context); }, [baseContext, context]); return /*#__PURE__*/React.createElement(SidebarNextContext.Provider, { value: contextWithOverride, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 24, columnNumber: 5 } }, children); }; var render = createRendererWithUniDriver(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$captureStackTr; var error = Error("Cannot find element ".concat(selector)); (_Error$captureStackTr = Error.captureStackTrace) === null || _Error$captureStackTr === void 0 || _Error$captureStackTr.call(Error, error, _createDriver); throw error; } return driverFactory(jsdomReactUniDriver(element), jsdomReactUniDriver(container.ownerDocument.body)); }; return _createDriver; }; var createMenuDriver = createDriverFactory(sidebarSubMenuNextPrivateDriverFactory); describe('SidebarSubMenuNext', function () { it('should render without context', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() { var _render, driver; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _render = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { __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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() { var _render2, driver, container, nestedDriver; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _render2 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", title: "Menu 1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 68, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() { var _render3, driver, container, nestedDriver, titleElement1, titleElement2; return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: _render3 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", title: /*#__PURE__*/React.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.createElement(SidebarSubMenuNext, { dataHook: "m1-m1", title: /*#__PURE__*/React.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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() { var _render4, getByRole, asElement; return _regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: _render4 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { itemKey: "m1", as: "a", href: "https://www.wix.com", title: "Menu 1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 107, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5() { var CustomComponent, _render5, getByTestId, asElement; return _regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: CustomComponent = function CustomComponent(_ref7) { var custom = _ref7.custom, rest = _objectWithoutProperties(_ref7, _excluded); return /*#__PURE__*/React.createElement("span", _extends({}, rest, { "data-custom": custom, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 124, columnNumber: 11 } })); }; _render5 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { 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.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6() { var _render6, driver; return _regeneratorRuntime.wrap(function _callee6$(_context6) { while (1) switch (_context6.prev = _context6.next) { case 0: _render6 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7() { var _render7, driver; return _regeneratorRuntime.wrap(function _callee7$(_context7) { while (1) switch (_context7.prev = _context7.next) { case 0: _render7 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee8() { var _render8, driver, container, nestedDriver; return _regeneratorRuntime.wrap(function _callee8$(_context8) { while (1) switch (_context8.prev = _context8.next) { case 0: _render8 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 158, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee9() { var _render9, driver; return _regeneratorRuntime.wrap(function _callee9$(_context9) { while (1) switch (_context9.prev = _context9.next) { case 0: _render9 = render(/*#__PURE__*/React.createElement(SidebarNext, { selectedKey: "m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 171, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 172, columnNumber: 13 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee0() { var _render0, driver; return _regeneratorRuntime.wrap(function _callee0$(_context0) { while (1) switch (_context0.prev = _context0.next) { case 0: _render0 = render(/*#__PURE__*/React.createElement(SidebarNext, { selectedKey: "m1-i1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 184, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 185, columnNumber: 13 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee1() { var _render1, driver, container, nestedMenuDriver; return _regeneratorRuntime.wrap(function _callee1$(_context1) { while (1) switch (_context1.prev = _context1.next) { case 0: _render1 = render(/*#__PURE__*/React.createElement(SidebarNext, { selectedKey: "m1-m1-i1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 197, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 198, columnNumber: 13 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1-m1", itemKey: "m1-m1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 199, columnNumber: 15 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee10() { var _render10, driver; return _regeneratorRuntime.wrap(function _callee10$(_context10) { while (1) switch (_context10.prev = _context10.next) { case 0: _render10 = render(/*#__PURE__*/React.createElement(SidebarNext, { selectedKey: "m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 215, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 216, columnNumber: 13 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee11() { var _render11, driver; return _regeneratorRuntime.wrap(function _callee11$(_context11) { while (1) switch (_context11.prev = _context11.next) { case 0: _render11 = render(/*#__PURE__*/React.createElement(SidebarNext, { selectedKey: "m1-i1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 230, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 231, columnNumber: 13 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee12() { var onClickSpy, _render12, driver; return _regeneratorRuntime.wrap(function _callee12$(_context12) { while (1) switch (_context12.prev = _context12.next) { case 0: onClickSpy = vi.fn(function (event) { event.persist(); }); _render12 = render(/*#__PURE__*/React.createElement(SidebarNext, { selectedKey: "not-m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 251, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", onClick: onClickSpy, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 252, columnNumber: 13 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee13() { var onClickSpy, _render13, driver; return _regeneratorRuntime.wrap(function _callee13$(_context13) { while (1) switch (_context13.prev = _context13.next) { case 0: onClickSpy = vi.fn(function (event) { event.persist(); }); _render13 = render(/*#__PURE__*/React.createElement(SidebarNext, { selectedKey: "m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 278, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", onClick: onClickSpy, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 279, columnNumber: 13 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee14() { var onClickSpy, _render14, driver; return _regeneratorRuntime.wrap(function _callee14$(_context14) { while (1) switch (_context14.prev = _context14.next) { case 0: onClickSpy = vi.fn(function (event) { event.persist(); }); _render14 = render(/*#__PURE__*/React.createElement(SidebarNext, { selectedKey: "m1-i1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 297, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", onClick: onClickSpy, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 298, columnNumber: 13 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee15() { var onClickSpy, _render15, driver; return _regeneratorRuntime.wrap(function _callee15$(_context15) { while (1) switch (_context15.prev = _context15.next) { case 0: onClickSpy = vi.fn(); _render15 = render(/*#__PURE__*/React.createElement(SidebarNext, { selectedKey: "m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 314, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", onClick: onClickSpy, disabled: true, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 315, columnNumber: 13 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee16() { var onClickSpy, onNestedClickSpy, _render16, container, nestedDriver; return _regeneratorRuntime.wrap(function _callee16$(_context16) { while (1) switch (_context16.prev = _context16.next) { case 0: onClickSpy = vi.fn(); onNestedClickSpy = vi.fn(); _render16 = render(/*#__PURE__*/React.createElement(SidebarNext, { selectedKey: "m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 336, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", onClick: onClickSpy, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 337, columnNumber: 13 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1-m1", itemKey: "m1-m1", onClick: onNestedClickSpy, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 338, columnNumber: 15 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee17() { var _render17, driver; return _regeneratorRuntime.wrap(function _callee17$(_context17) { while (1) switch (_context17.prev = _context17.next) { case 0: _render17 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { itemKey: "m1", prefix: /*#__PURE__*/React.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.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee18() { var _render18, driver; return _regeneratorRuntime.wrap(function _callee18$(_context18) { while (1) switch (_context18.prev = _context18.next) { case 0: _render18 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { itemKey: "m1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 376, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee19() { var _render19, driver; return _regeneratorRuntime.wrap(function _callee19$(_context19) { while (1) switch (_context19.prev = _context19.next) { case 0: _render19 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { itemKey: "m1", suffix: /*#__PURE__*/React.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.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee20() { var _render20, driver; return _regeneratorRuntime.wrap(function _callee20$(_context20) { while (1) switch (_context20.prev = _context20.next) { case 0: _render20 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { itemKey: "m1", suffix: [/*#__PURE__*/React.createElement("div", { "data-hook": "suffix1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 403, columnNumber: 22 } }), /*#__PURE__*/React.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.createElement(SidebarItemNext, { 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__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee21() { var _render21, driver; return _regeneratorRuntime.wrap(function _callee21$(_context21) { while (1) switch (_context21.prev = _context21.next) { case 0: _render21 = render(/*#__PURE__*/React.createElement(SidebarSubMenuNext, { itemKey: "m1", disabled: true, suffix: [/*#__PURE__*/React.createElement("div", { "data-hook": "suffix1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 419, columnNumber: 22 } }), /*#__PURE__*/React.createElement("div", { "data-hook": "suffix2", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 419, columnNumber: 51 } })], __self: _this, __source: { fileName: _jsxFileName, lineNumber: 416, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 421, columnNumber: 13 } }))), driver = _render21.driver; _context21.t0 = expect; _context21.next = 4; return driver.getSuffixCount(); case 4: _context21.t1 = _context21.sent; (0, _context21.t0)(_context21.t1).toBe(0); _context21.t2 = expect; _context21.next = 9; return driver.isChevronExists(); case 9: _context21.t3 = _context21.sent; (0, _context21.t2)(_context21.t3).toBe(false); case 11: case "end": return _context21.stop(); } }, _callee21); }))); }); describe('onExpand/onCollapse', function () { it('should call onExpand on initial render if expanded', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee22() { var onExpandSpy, _render22, driver; return _regeneratorRuntime.wrap(function _callee22$(_context22) { while (1) switch (_context22.prev = _context22.next) { case 0: onExpandSpy = vi.fn(); _render22 = render(/*#__PURE__*/React.createElement(SidebarNext, { selectedKey: "m1", isLoading: false, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 435, columnNumber: 11 } }, /*#__PURE__*/React.createElement(SidebarSubMenuNext, { dataHook: "m1", itemKey: "m1", onExpand: onExpandSpy, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 436, columnNumber: 13 } }, /*#__PURE__*/React.createElement(SidebarItemNext, { itemKey: "m1-i1", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 441, columnNumber: 15 } }))), { dataHook: 'm1' }), driver = _render22.driver; _context22.t0 = expect; _context22.next = 5; return driver.isExpanded(); case 5: _context22.t1 = _context22.sent; (0, _context22.t0)(_context22.t1).toBe(true); expect(onExpandSpy).toHaveBeenCalledTimes(1); expect(onExpandSpy).toHaveBeenCalledWith('select'); case 9: case "end": return _context22.stop(