wix-style-react
Version:
wix-style-react
91 lines (71 loc) • 3.73 kB
JavaScript
;
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('');
});
});
});