@enact/sandstone
Version:
Large-screen/TV support library for Enact, containing a variety of UI components.
122 lines (121 loc) • 5.08 kB
JavaScript
;
require("@testing-library/jest-dom");
var _react = require("@testing-library/react");
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
var _RangePicker = require("../RangePicker");
var _jsxRuntime = require("react/jsx-runtime");
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); }); }; }
describe('RangePicker Specs', function () {
test('should render a single child with the current value', function () {
(0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangePicker.RangePicker, {
min: -10,
max: 20,
value: 10
}));
var textField = _react.screen.getByText('10');
var expected = 'item';
expect(textField).toBeInTheDocument();
expect(textField).toHaveClass(expected);
});
test('should increase by step amount on increment press', /*#__PURE__*/_asyncToGenerator(function* () {
var user = _userEvent["default"].setup();
(0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangePicker.RangePicker, {
min: 0,
max: 100,
defaultValue: 10,
step: 1,
noAnimation: true
}));
var incrementButton = _react.screen.getByText('▶');
yield user.click(incrementButton);
var textField = _react.screen.getByText('11');
var expected = 'item';
expect(textField).toBeInTheDocument();
expect(textField).toHaveClass(expected);
}));
test('should decrease by step amount on decrement press', /*#__PURE__*/_asyncToGenerator(function* () {
var user = _userEvent["default"].setup();
(0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangePicker.RangePicker, {
min: 0,
max: 100,
defaultValue: 10,
step: 1,
noAnimation: true
}));
var decrementButton = _react.screen.getByText('◀');
yield user.click(decrementButton);
var textField = _react.screen.getByText('9');
var expected = 'item';
expect(textField).toBeInTheDocument();
expect(textField).toHaveClass(expected);
}));
test('should pad the value', function () {
(0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangePicker.RangePicker, {
min: 0,
max: 100,
value: 10,
step: 1,
padded: true
}));
var textField = _react.screen.getByText('010');
var expected = 'item';
expect(textField).toBeInTheDocument();
expect(textField).toHaveClass(expected);
});
test('should pad the value when min has more digits than max', function () {
(0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangePicker.RangePicker, {
min: -1000,
max: 100,
value: 10,
step: 1,
padded: true
}));
var textField = _react.screen.getByText('0010');
var expected = 'item';
expect(textField).toBeInTheDocument();
expect(textField).toHaveClass(expected);
});
test('should be disabled when limited to a single value', function () {
(0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangePicker.RangePickerBase, {
"data-testid": "rangePicker",
min: 0,
max: 0,
value: 0
}));
var rangePicker = _react.screen.getByTestId('rangePicker');
var expectedAttribute = 'aria-disabled';
var expectedValue = 'true';
expect(rangePicker).toHaveAttribute(expectedAttribute, expectedValue);
});
test('should have an heading element when \'title\'', function () {
(0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangePicker.RangePickerBase, {
min: 0,
max: 0,
value: 0,
title: "title text"
}));
var title = _react.screen.getByText('title text');
var expected = 'heading';
var actual = title.parentElement.parentElement;
expect(title).toBeInTheDocument();
expect(actual).toHaveClass(expected);
});
test('should have an heading element with inline class when \'title\' and \'inlineTitle\'', function () {
(0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangePicker.RangePickerBase, {
inlineTitle: true,
min: 0,
max: 0,
value: 0,
title: "title text"
}));
var title = _react.screen.getByText('title text');
var expectedInline = 'inlineTitle';
var expectedHeader = 'heading';
var actual = title.parentElement.parentElement;
expect(title).toBeInTheDocument();
expect(actual).toHaveClass(expectedInline);
expect(actual).toHaveClass(expectedHeader);
});
});