'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.describeWithDOM = describeWithDOM;
exports.useSetStateHack = useSetStateHack;
exports.spySetup = spySetup;
exports.spyTearDown = spyTearDown;
exports.useSinon = useSinon;
exports.spyLifecycle = spyLifecycle;
exports.spyMethods = spyMethods;
exports.mount = mount;
exports.shallow = shallow;
exports.render = render;
// istanbul ignore next
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _cheerio = require('cheerio');
var _cheerio2 = _interopRequireDefault(_cheerio);
var _sinon = require('sinon');
var _sinon2 = _interopRequireDefault(_sinon);
var _ReactWrapper = require('./ReactWrapper');
var _ReactWrapper2 = _interopRequireDefault(_ReactWrapper);
var _ShallowWrapper = require('./ShallowWrapper');
var _ShallowWrapper2 = _interopRequireDefault(_ShallowWrapper);
var _Utils = require('./Utils');
var _reactCompat = require('./react-compat');
/**
* @class Enzyme
*/
var jsdom = undefined;
try {
require('jsdom'); // could throw
jsdom = require('mocha-jsdom');
} catch (e) {
// jsdom is not supported...
}
var sinon = _sinon2['default'].sandbox.create();
exports.sinon = sinon;
function describeWithDOM(a, b) {
describe('<< uses jsdom >>', function () {
Eif (typeof jsdom === 'function') {
jsdom();
describe(a, b);
} else {
// if jsdom isn't available, skip every test in this describe context
describe.skip(a, b);
}
});
}
function useSetStateHack() {
var cleanup = false;
before(function () {
if (typeof global.document === 'undefined') {
cleanup = true;
global.document = {};
}
});
after(function () {
if (cleanup) {
delete global.document;
}
});
}
function spySetup() {
exports.sinon = sinon = _sinon2['default'].sandbox.create();
}
function spyTearDown() {
sinon.restore();
}
function useSinon() {
beforeEach(spySetup);
afterEach(spyTearDown);
}
function spyLifecycle(Component) {
(0, _Utils.onPrototype)(Component, function (proto, name) {
return sinon.spy(proto, name);
});
}
function spyMethods(Component) {
(0, _Utils.onPrototype)(Component, null, function (proto, name) {
return sinon.spy(proto, name);
});
}
/**
* Mounts and renders a react component into the document and provides a testing wrapper around it.
*
* @param node
* @returns {ReactWrapper}
*/
function mount(node) {
return new _ReactWrapper2['default'](node);
}
/**
* Shallow renders a react component and provides a testing wrapper around it.
*
* @param node
* @returns {ShallowWrapper}
*/
function shallow(node) {
return new _ShallowWrapper2['default'](node);
}
/**
* Renders a react component into static HTML and provides a cheerio wrapper around it. This is
* somewhat asymmetric with `mount` and `shallow`, which don't use any external libraries, but
* Cheerio's API is pretty close to what we actually want and has a significant amount of utility
* that would be recreating the wheel if we didn't use it.
*
* I think there are a lot of good use cases to use `render` instead of `shallow` or `mount`, and
* thus I'd like to keep this API in here even though it's not really "ours".
*
* @param node
* @returns {Cheerio}
*/
function render(node) {
var html = (0, _reactCompat.renderToStaticMarkup)(node);
return _cheerio2['default'].load(html).root();
}
exports.ShallowWrapper = _ShallowWrapper2['default'];
exports.ReactWrapper = _ReactWrapper2['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9sZWxhbmRfcmljaGFyZHNvbi9jb2RlL3JlYWdlbnQvc3JjL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUJBQW9CLFNBQVM7Ozs7cUJBQ1gsT0FBTzs7Ozs0QkFDQSxnQkFBZ0I7Ozs7OEJBQ2Qsa0JBQWtCOzs7O3FCQUNqQixTQUFTOzsyQkFDQSxnQkFBZ0I7Ozs7OztBQU1yRCxJQUFJLEtBQUssWUFBQSxDQUFDO0FBQ1YsSUFBSTtBQUNGLFNBQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNqQixPQUFLLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0NBQ2hDLENBQUMsT0FBTyxDQUFDLEVBQUU7O0NBRVg7O0FBRU0sSUFBSSxLQUFLLEdBQUcsbUJBQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDOzs7O0FBRW5DLFNBQVMsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDcEMsVUFBUSxDQUFDLGtCQUFrQixFQUFFLFlBQU07QUFDakMsUUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7QUFDL0IsV0FBSyxFQUFFLENBQUM7QUFDUixjQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ2hCLE1BQU07O0FBRUwsY0FBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDckI7R0FDRixDQUFDLENBQUM7Q0FDSjs7QUFFTSxTQUFTLGVBQWUsR0FBRztBQUNoQyxNQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDcEIsUUFBTSxDQUFDLFlBQU07QUFDWCxRQUFJLE9BQU8sTUFBTSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUU7QUFDMUMsYUFBTyxHQUFHLElBQUksQ0FBQztBQUNmLFlBQU0sQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0tBQ3RCO0dBQ0YsQ0FBQyxDQUFDO0FBQ0gsT0FBSyxDQUFDLFlBQU07QUFDVixRQUFJLE9BQU8sRUFBRTtBQUNYLGFBQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQztLQUN4QjtHQUNGLENBQUMsQ0FBQztDQUNKOztBQUVNLFNBQVMsUUFBUSxHQUFHO0FBQ3pCLFVBOUJTLEtBQUssR0E4QmQsS0FBSyxHQUFHLG1CQUFNLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztDQUNoQzs7QUFFTSxTQUFTLFdBQVcsR0FBRztBQUM1QixPQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDakI7O0FBRU0sU0FBUyxRQUFRLEdBQUc7QUFDekIsWUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLFdBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztDQUN4Qjs7QUFFTSxTQUFTLFlBQVksQ0FBQyxTQUFTLEVBQUU7QUFDdEMsMEJBQVksU0FBUyxFQUFFLFVBQUMsS0FBSyxFQUFFLElBQUk7V0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7R0FBQSxDQUFDLENBQUM7Q0FDakU7O0FBRU0sU0FBUyxVQUFVLENBQUMsU0FBUyxFQUFFO0FBQ3BDLDBCQUFZLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBQyxLQUFLLEVBQUUsSUFBSTtXQUFLLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztHQUFBLENBQUMsQ0FBQztDQUN2RTs7Ozs7Ozs7O0FBUU0sU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQzFCLFNBQU8sOEJBQWlCLElBQUksQ0FBQyxDQUFDO0NBQy9COzs7Ozs7Ozs7QUFRTSxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDNUIsU0FBTyxnQ0FBbUIsSUFBSSxDQUFDLENBQUM7Q0FDakM7Ozs7Ozs7Ozs7Ozs7OztBQWNNLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRTtBQUMzQixNQUFNLElBQUksR0FBRyx1Q0FBcUIsSUFBSSxDQUFDLENBQUM7QUFDeEMsU0FBTyxxQkFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Q0FDbEM7O1FBRTBCLGNBQWM7UUFDaEIsWUFBWSIsImZpbGUiOiIvVXNlcnMvbGVsYW5kX3JpY2hhcmRzb24vY29kZS9yZWFnZW50L3NyYy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGVlcmlvIGZyb20gJ2NoZWVyaW8nO1xuaW1wb3J0IFNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCBSZWFjdFdyYXBwZXIgZnJvbSAnLi9SZWFjdFdyYXBwZXInO1xuaW1wb3J0IFNoYWxsb3dXcmFwcGVyIGZyb20gJy4vU2hhbGxvd1dyYXBwZXInO1xuaW1wb3J0IHsgb25Qcm90b3R5cGUgfSBmcm9tICcuL1V0aWxzJztcbmltcG9ydCB7IHJlbmRlclRvU3RhdGljTWFya3VwIH0gZnJvbSAnLi9yZWFjdC1jb21wYXQnO1xuXG4vKipcbiAqIEBjbGFzcyBSZWFnZW50XG4gKi9cblxubGV0IGpzZG9tO1xudHJ5IHtcbiAgcmVxdWlyZSgnanNkb20nKTsgLy8gY291bGQgdGhyb3dcbiAganNkb20gPSByZXF1aXJlKCdtb2NoYS1qc2RvbScpO1xufSBjYXRjaCAoZSkge1xuICAvLyBqc2RvbSBpcyBub3Qgc3VwcG9ydGVkLi4uXG59XG5cbmV4cG9ydCBsZXQgc2lub24gPSBTaW5vbi5zYW5kYm94LmNyZWF0ZSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVXaXRoRE9NKGEsIGIpIHtcbiAgZGVzY3JpYmUoJzw8IHVzZXMganNkb20gPj4nLCAoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBqc2RvbSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAganNkb20oKTtcbiAgICAgIGRlc2NyaWJlKGEsIGIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiBqc2RvbSBpc24ndCBhdmFpbGFibGUsIHNraXAgZXZlcnkgdGVzdCBpbiB0aGlzIGRlc2NyaWJlIGNvbnRleHRcbiAgICAgIGRlc2NyaWJlLnNraXAoYSwgYik7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNldFN0YXRlSGFjaygpIHtcbiAgbGV0IGNsZWFudXAgPSBmYWxzZTtcbiAgYmVmb3JlKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGdsb2JhbC5kb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNsZWFudXAgPSB0cnVlO1xuICAgICAgZ2xvYmFsLmRvY3VtZW50ID0ge307XG4gICAgfVxuICB9KTtcbiAgYWZ0ZXIoKCkgPT4ge1xuICAgIGlmIChjbGVhbnVwKSB7XG4gICAgICBkZWxldGUgZ2xvYmFsLmRvY3VtZW50O1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcHlTZXR1cCgpIHtcbiAgc2lub24gPSBTaW5vbi5zYW5kYm94LmNyZWF0ZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3B5VGVhckRvd24oKSB7XG4gIHNpbm9uLnJlc3RvcmUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNpbm9uKCkge1xuICBiZWZvcmVFYWNoKHNweVNldHVwKTtcbiAgYWZ0ZXJFYWNoKHNweVRlYXJEb3duKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNweUxpZmVjeWNsZShDb21wb25lbnQpIHtcbiAgb25Qcm90b3R5cGUoQ29tcG9uZW50LCAocHJvdG8sIG5hbWUpID0+IHNpbm9uLnNweShwcm90bywgbmFtZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3B5TWV0aG9kcyhDb21wb25lbnQpIHtcbiAgb25Qcm90b3R5cGUoQ29tcG9uZW50LCBudWxsLCAocHJvdG8sIG5hbWUpID0+IHNpbm9uLnNweShwcm90bywgbmFtZSkpO1xufVxuXG4vKipcbiAqIE1vdW50cyBhbmQgcmVuZGVycyBhIHJlYWN0IGNvbXBvbmVudCBpbnRvIHRoZSBkb2N1bWVudCBhbmQgcHJvdmlkZXMgYSB0ZXN0aW5nIHdyYXBwZXIgYXJvdW5kIGl0LlxuICpcbiAqIEBwYXJhbSBub2RlXG4gKiBAcmV0dXJucyB7UmVhY3RXcmFwcGVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbW91bnQobm9kZSkge1xuICByZXR1cm4gbmV3IFJlYWN0V3JhcHBlcihub2RlKTtcbn1cblxuLyoqXG4gKiBTaGFsbG93IHJlbmRlcnMgYSByZWFjdCBjb21wb25lbnQgYW5kIHByb3ZpZGVzIGEgdGVzdGluZyB3cmFwcGVyIGFyb3VuZCBpdC5cbiAqXG4gKiBAcGFyYW0gbm9kZVxuICogQHJldHVybnMge1NoYWxsb3dXcmFwcGVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hhbGxvdyhub2RlKSB7XG4gIHJldHVybiBuZXcgU2hhbGxvd1dyYXBwZXIobm9kZSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHJlYWN0IGNvbXBvbmVudCBpbnRvIHN0YXRpYyBIVE1MIGFuZCBwcm92aWRlcyBhIGNoZWVyaW8gd3JhcHBlciBhcm91bmQgaXQuIFRoaXMgaXNcbiAqIHNvbWV3aGF0IGFzeW1tZXRyaWMgd2l0aCBgbW91bnRgIGFuZCBgc2hhbGxvd2AsIHdoaWNoIGRvbid0IHVzZSBhbnkgZXh0ZXJuYWwgbGlicmFyaWVzLCBidXRcbiAqIENoZWVyaW8ncyBBUEkgaXMgcHJldHR5IGNsb3NlIHRvIHdoYXQgd2UgYWN0dWFsbHkgd2FudCBhbmQgaGFzIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHV0aWxpdHlcbiAqIHRoYXQgd291bGQgYmUgcmVjcmVhdGluZyB0aGUgd2hlZWwgaWYgd2UgZGlkbid0IHVzZSBpdC5cbiAqXG4gKiBJIHRoaW5rIHRoZXJlIGFyZSBhIGxvdCBvZiBnb29kIHVzZSBjYXNlcyB0byB1c2UgYHJlbmRlcmAgaW5zdGVhZCBvZiBgc2hhbGxvd2Agb3IgYG1vdW50YCwgYW5kXG4gKiB0aHVzIEknZCBsaWtlIHRvIGtlZXAgdGhpcyBBUEkgaW4gaGVyZSBldmVuIHRob3VnaCBpdCdzIG5vdCByZWFsbHkgXCJvdXJzXCIuXG4gKlxuICogQHBhcmFtIG5vZGVcbiAqIEByZXR1cm5zIHtDaGVlcmlvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyKG5vZGUpIHtcbiAgY29uc3QgaHRtbCA9IHJlbmRlclRvU3RhdGljTWFya3VwKG5vZGUpO1xuICByZXR1cm4gY2hlZXJpby5sb2FkKGh0bWwpLnJvb3QoKTtcbn1cblxuZXhwb3J0IHsgU2hhbGxvd1dyYXBwZXIgYXMgU2hhbGxvd1dyYXBwZXIgfTtcbmV4cG9ydCB7IFJlYWN0V3JhcHBlciBhcyBSZWFjdFdyYXBwZXIgfTtcbiJdfQ== |