UNPKG

@enact/sandstone

Version:

Large-screen/TV support library for Enact, containing a variety of UI components.

133 lines (132 loc) 5.88 kB
"use strict"; var _spotlight = _interopRequireDefault(require("@enact/spotlight")); var _SpotlightContainerDecorator = _interopRequireDefault(require("@enact/spotlight/SpotlightContainerDecorator")); require("@testing-library/jest-dom"); var _react = require("@testing-library/react"); var _Button = _interopRequireDefault(require("../../Button")); var _IconItem = _interopRequireDefault(require("../../IconItem")); var _Scroller = _interopRequireDefault(require("../Scroller")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } 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; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var keyDownUp = function keyDownUp(keyCode) { return function (elm) { _react.fireEvent.keyDown(elm, { keyCode: keyCode }); return _react.fireEvent.keyUp(elm, { keyCode: keyCode }); }; }; var pressEnterKey = keyDownUp(13); var populateItems = function populateItems(_ref) { var index = _ref.index; var iconItemProps = { background: '#ffffff', bordered: true, disabled: false, label: "Icon ".concat(index) }; return { index: index, iconItemProps: iconItemProps }; }; var ContainerDivWithLeaveForConfig = (0, _SpotlightContainerDecorator["default"])({ leaveFor: { left: '', right: '' } }, 'div'); describe('Editable Scroller', function () { var items; var editableScrollerContents; beforeEach(function () { items = []; for (var i = 0; i < 20; i++) { items.push(populateItems({ index: i })); } editableScrollerContents = items.map(function (item, index) { return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { "aria-label": "Icon ".concat(item.index), "data-index": item.index, style: { order: index + 1 }, children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(ContainerDivWithLeaveForConfig, { children: [item.disabled ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], { "aria-label": "Delete", icon: "trash" }), item.disabled ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], { "aria-label": "Hide", icon: "minus" }), item.disabled ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], { "aria-label": "Show", icon: "plus" }) : null] }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconItem["default"], _objectSpread(_objectSpread({}, item.iconItemProps), {}, { disabled: item.iconItemProps['disabled'] || item.hidden }))] }, item.index); }); }); afterEach(function () { items = null; editableScrollerContents = null; }); describe('Select Item', function () { test('should have selected class and custom selected class when item is selected', function () { (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_Scroller["default"], { direction: "horizontal", editable: { css: { 'selected': 'customSelected' }, onComplete: jest.fn(), removeItemFuncRef: jest.fn(), hideItemFuncRef: jest.fn(), showItemFuncRef: jest.fn(), focusItemFuncRef: jest.fn(), selectItemBy: 'press' }, children: editableScrollerContents })); var item = _react.screen.getByLabelText('Icon 0'); pressEnterKey(item); expect(item).toHaveClass('selected'); expect(item).toHaveClass('customSelected'); }); test('should not have selected class and custom selected class and should have custom focused class when item is unselected', function () { (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_Scroller["default"], { direction: "horizontal", editable: { css: { 'selected': 'customSelected', 'focused': 'customFocused' }, onComplete: jest.fn(), removeItemFuncRef: jest.fn(), hideItemFuncRef: jest.fn(), showItemFuncRef: jest.fn(), focusItemFuncRef: jest.fn(), selectItemBy: 'press' }, children: editableScrollerContents })); _spotlight["default"].setPointerMode(false); var item = _react.screen.getByLabelText('Icon 0'); pressEnterKey(item); pressEnterKey(item); expect(item).not.toHaveClass('selected'); expect(item).not.toHaveClass('customSelected'); expect(item).toHaveClass('customFocused'); }); }); });