@vigosan/react-copy-to-clipboard
Version:
React library for building declarative copy to clipboard buttons
97 lines (77 loc) • 2.63 kB
JavaScript
;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _enzyme = require('enzyme');
var _copyToClipboard = require('copy-to-clipboard');
var _copyToClipboard2 = _interopRequireDefault(_copyToClipboard);
var _index = require('./index');
var _index2 = _interopRequireDefault(_index);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
jest.mock('copy-to-clipboard', function () {
return jest.fn();
});
describe('CopyToClipboard', function () {
it('renders its children', function () {
var Children = function Children() {
return null;
};
var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(
_index2.default,
null,
function () {
return _react2.default.createElement(Children, null);
}
));
expect(wrapper.contains(_react2.default.createElement(Children, null))).toBe(true);
});
describe('render prop', function () {
it('renders its children', function () {
var Children = function Children() {
return null;
};
var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(_index2.default, { render: function render() {
return _react2.default.createElement(Children, null);
} }));
expect(wrapper.contains(_react2.default.createElement(Children, null))).toBe(true);
});
});
it('copies text', function () {
var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(_index2.default, {
render: function render(_ref) {
var copy = _ref.copy;
return _react2.default.createElement(
'button',
{ onClick: function onClick() {
return copy('some text');
} },
'Copy'
);
}
}));
wrapper.find('button').simulate('click');
expect(_copyToClipboard2.default).toHaveBeenCalledWith('some text');
});
it('calls onCopy callback', function () {
_copyToClipboard2.default.mockReturnValue(true);
var onCopy = jest.fn();
var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(_index2.default, {
onCopy: onCopy,
render: function render(_ref2) {
var copy = _ref2.copy;
return _react2.default.createElement(
'button',
{ onClick: function onClick() {
return copy('some text');
} },
'Copy'
);
}
}));
wrapper.find('button').simulate('click');
expect(onCopy).toHaveBeenCalledWith({
success: true,
error: false,
text: 'some text'
});
});
});