@wix/design-system
Version:
@wix/design-system
332 lines (331 loc) • 12.5 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _react = _interopRequireDefault(require("react"));
var _Selector = _interopRequireDefault(require("./Selector"));
var _testUtils = require("../utils/test-utils");
var _unit = require("../utils/test-utils/unit");
var _SelectorUni = require("./Selector.uni.driver");
var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/Selector/Selector.spec.tsx",
_this = void 0;
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; }
describe('Selector', () => {
var render = (0, _unit.createRendererWithUniDriver)(_SelectorUni.selectorUniDriverFactory);
afterEach(() => (0, _unit.cleanup)());
var defaultProps = {
id: 1,
title: 'title'
};
it('should be unchecked by default', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, defaultProps, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 19,
columnNumber: 31
}
})));
expect(yield driver.isChecked()).toBe(false);
}));
it('should not render the subtitle by default', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, defaultProps, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 24,
columnNumber: 31
}
})));
expect(yield driver.subtitleTextDriver().exists()).toBe(false);
}));
it('should not render the extra node', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, defaultProps, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 29,
columnNumber: 31
}
})));
expect(yield driver.hasExtraNode()).toBe(false);
}));
it('should render the title', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, defaultProps, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 34,
columnNumber: 31
}
})));
expect(yield driver.titleTextDriver().getText()).toBe(defaultProps.title);
}));
it('should render the subtitle', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var props = _objectSpread(_objectSpread({}, defaultProps), {
subtitle: 'sub title'
});
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, props, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 40,
columnNumber: 31
}
})));
expect(yield driver.subtitleTextDriver().getText()).toBe('sub title');
}));
it('should render the extra node', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var props = _objectSpread(_objectSpread({}, defaultProps), {
extraNode: 'extra text'
});
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, props, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 46,
columnNumber: 31
}
})));
expect(yield driver.hasExtraNode()).toBe(true);
expect((yield driver.getExtraNode()).textContent).toBe('extra text');
}));
it('should not render the image by default', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, defaultProps, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 52,
columnNumber: 31
}
})));
expect(yield driver.hasImage()).toBe(false);
}));
it('should render the image', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, defaultProps, {
image: /*#__PURE__*/_react.default.createElement("img", {
src: "img.png",
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 58,
columnNumber: 42
}
}),
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 58,
columnNumber: 7
}
})));
expect(yield driver.hasImage()).toBe(true);
expect(yield driver.getImage()).toBeInstanceOf(HTMLImageElement);
expect((yield driver.getImage()).src).toBe("".concat(_testUtils.ASSET_PREFIX, "img.png"));
}));
it('should render a radio toggle by default', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, defaultProps, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 66,
columnNumber: 31
}
})));
expect(yield driver.toggleType()).toBe('radio');
}));
it('should render a checkbox toggle', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var toggleType = 'checkbox';
var props = _objectSpread(_objectSpread({}, defaultProps), {
toggleType
});
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, props, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 73,
columnNumber: 31
}
})));
expect(yield driver.toggleType()).toBe(toggleType);
}));
it('should render an indeterminate checkbox toggle', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var toggleType = 'checkbox';
var indeterminate = true;
var props = _objectSpread(_objectSpread({}, defaultProps), {
toggleType,
indeterminate
});
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, props, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 81,
columnNumber: 31
}
})));
expect(yield driver.toggleType()).toBe(toggleType);
expect(yield driver.isIndeterminate()).toBe(true);
}));
it('should render a radio toggle', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var toggleType = 'radio';
var props = _objectSpread(_objectSpread({}, defaultProps), {
toggleType
});
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, props, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 89,
columnNumber: 31
}
})));
expect(yield driver.toggleType()).toBe(toggleType);
}));
it('should not propagate when selecting a disabled selector', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var onToggle = jest.fn();
var toggleType = 'radio';
var props = _objectSpread(_objectSpread({}, defaultProps), {
toggleType
});
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({
onToggle: onToggle
}, props, {
isDisabled: true,
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 98,
columnNumber: 7
}
})));
yield driver.toggle();
expect(onToggle).not.toHaveBeenCalled();
}));
it('should not render disabled tooltip by default', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, defaultProps, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 107,
columnNumber: 31
}
})));
expect(yield driver.getTooltipText()).toBe(null);
}));
it('should not render disabled tooltip when not disabled', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
toggleTooltipProps: {
content: 'Disabled for testing'
}
});
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, props, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 117,
columnNumber: 31
}
})));
expect(yield driver.getTooltipText()).toBe(null);
}));
it('should not render disabled tooltip when toggleTooltipProps is not provided', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
isDisabled: true
});
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, props, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 124,
columnNumber: 31
}
})));
expect(yield driver.getTooltipText()).toBe(null);
}));
it('should render disabled tooltip when disabled and toggleTooltipProps is provided', /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var disabledReason = 'This item is disabled for testing';
var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
isDisabled: true,
toggleTooltipProps: {
content: disabledReason
}
});
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, props, {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 136,
columnNumber: 31
}
})));
expect(yield driver.getTooltipText()).toBe(disabledReason);
}));
describe('given image size', () => {
var sizesAndTestkitMethods = [['tiny', 'isImageTiny'], ['small', 'isImageSmall'], ['portrait', 'isImagePortrait'], ['large', 'isImageLarge'], ['cinema', 'isImageCinema']];
sizesAndTestkitMethods.forEach(_ref16 => {
var [size, method] = _ref16;
it("should set correct className for \"".concat(size, "\""), /*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
var {
driver
} = render(/*#__PURE__*/_react.default.createElement(_Selector.default, (0, _extends2.default)({}, _objectSpread(_objectSpread({}, defaultProps), {}, {
imageSize: size,
image: /*#__PURE__*/_react.default.createElement("img", {
src: "img.png",
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 157,
columnNumber: 22
}
})
}), {
__self: _this,
__source: {
fileName: _jsxFileName,
lineNumber: 153,
columnNumber: 11
}
})));
expect(yield driver[method]()).toBe(true);
}));
});
});
});
//# sourceMappingURL=Selector.spec.js.map