UNPKG

wix-style-react

Version:
91 lines (71 loc) 3.73 kB
'use strict'; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _enzyme = require('enzyme'); var _index = require('./index'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } describe('test-utils', function () { describe('isClassExists function', function () { var classes = 'class class2 class3'; var element = { className: classes }; classes.split(' ').forEach(function (className) { return it('should return true for className ' + className, function () { expect((0, _index.isClassExists)(element, className)).toBe(true); }); }); [undefined, 'cla', 'class4'].forEach(function (className) { return it('should return false for className ' + className, function () { expect((0, _index.isClassExists)(element, className)).toBe(false); }); }); }); describe('makeControlled function', function () { var UncontrolledInput = function UncontrolledInput(props) { return _react2.default.createElement('input', props); }; it('should init uncontrolled component with initial value', function () { var ControlledInput = (0, _index.makeControlled)(UncontrolledInput); var initialValue = 'some value'; var component = (0, _enzyme.mount)(_react2.default.createElement(ControlledInput, { value: initialValue })); expect(component.find('input').instance().value).toBe(initialValue); }); it('should invoke onChange callback', function () { var onChange = jest.fn(); var ControlledInput = (0, _index.makeControlled)(UncontrolledInput); var component = (0, _enzyme.mount)(_react2.default.createElement(ControlledInput, { onChange: onChange })); var enteredValue = 'some value'; var input = component.find('input'); input.simulate('change', { target: { value: enteredValue } }); expect(onChange).toHaveBeenCalledTimes(1); expect(onChange.mock.calls[0][0].target.value).toBe(enteredValue); expect(input.instance().value).toBe(enteredValue); }); it('should bind passed prop-functions to *this*', function () { // NOTE: don't use arrow functions var onEnterListener = function onEnterListener() { this.setState({ value: '' }); }; var NotifyOnEnter = function NotifyOnEnter(_ref) { var onEnter = _ref.onEnter, passedProps = _objectWithoutProperties(_ref, ['onEnter']); return _react2.default.createElement(UncontrolledInput, _extends({}, passedProps, { onKeyPress: function onKeyPress(e) { return e.key === 'Enter' && onEnter(); } })); }; NotifyOnEnter.propTypes = { onEnter: _propTypes2.default.func }; var ControlledInput = (0, _index.makeControlled)(NotifyOnEnter); var component = (0, _enzyme.mount)(_react2.default.createElement(ControlledInput, { value: 'some value', onEnter: onEnterListener })); var input = component.find('input'); input.simulate('keypress', { key: 'Enter' }); expect(input.instance().value).toBe(''); }); }); });