active-enzyme
Advanced tools
Comparing version 1.2.1 to 2.0.0
@@ -1,2 +0,2 @@ | ||
'use strict';Object.defineProperty(exports,'__esModule',{value:true});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};exports.shallow=shallow;exports.mount=mount;exports.render=render;exports.makeAnalyzer=makeAnalyzer;var _react=require('react');var _enzyme=require('enzyme');function shallow(){var wrapper=_enzyme.shallow.apply(undefined,arguments);return activate(function(){return wrapper})}function mount(){var wrapper=_enzyme.mount.apply(undefined,arguments);return activate(function(){return wrapper})}function render(){var wrapper=_enzyme.render.apply(undefined,arguments);return activate(function(){return wrapper})}function makeAnalyzer(component,styles){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var transform=function(transform){return function(props){return removeUndefined(transform(props))}}(opts.transform||function(props){return props});var render=opts.type||shallow;return function(){var props=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return render((0,_react.createElement)(component,transform(props))).lookup(styles)}}function activate(findMyself){return new Proxy(findMyself(),{get:function get(target,key){var find=function find(){for(var _len=arguments.length,findArgs=Array(_len),_key=0;_key<_len;_key++){findArgs[_key]=arguments[_key]}return activate(function(){var _findMyself;return(_findMyself=findMyself()).find.apply(_findMyself,findArgs)})};switch(key){case'find':return find;case'lookup':return function(classMap){return new Proxy({},{get:function get(target,name){if(classMap)name=classMap[name].split(' ')[0];return find('.'+name)}})};default:return findMyself()[key];}}})}function removeUndefined(obj){var result=_extends({},obj);for(var key in result){if(result[key]===undefined)delete result[key]}return result} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjdGl2ZS1lbnp5bWUuanMiXSwibmFtZXMiOlsic2hhbGxvdyIsIm1vdW50IiwicmVuZGVyIiwibWFrZUFuYWx5emVyIiwid3JhcHBlciIsImFjdGl2YXRlIiwiY29tcG9uZW50Iiwic3R5bGVzIiwib3B0cyIsInRyYW5zZm9ybSIsInJlbW92ZVVuZGVmaW5lZCIsInByb3BzIiwidHlwZSIsImxvb2t1cCIsImZpbmRNeXNlbGYiLCJQcm94eSIsImdldCIsInRhcmdldCIsImtleSIsImZpbmQiLCJmaW5kQXJncyIsIm5hbWUiLCJjbGFzc01hcCIsInNwbGl0Iiwib2JqIiwicmVzdWx0IiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiNFNBUWdCQSxPLENBQUFBLE8sU0FLQUMsSyxDQUFBQSxLLFNBS0FDLE0sQ0FBQUEsTSxTQUtBQyxZLENBQUFBLFksQ0F2QmhCLDRCQUVBLDhCQU1PLFFBQVNILFFBQVQsRUFBMEIsQ0FDL0IsR0FBTUksU0FBVSwwQ0FBaEIsQ0FDQSxNQUFPQyxVQUFTLGlCQUFNRCxRQUFOLENBQVQsQ0FDUixDQUVNLFFBQVNILE1BQVQsRUFBd0IsQ0FDN0IsR0FBTUcsU0FBVSx3Q0FBaEIsQ0FDQSxNQUFPQyxVQUFTLGlCQUFNRCxRQUFOLENBQVQsQ0FDUixDQUVNLFFBQVNGLE9BQVQsRUFBeUIsQ0FDOUIsR0FBTUUsU0FBVSx5Q0FBaEIsQ0FDQSxNQUFPQyxVQUFTLGlCQUFNRCxRQUFOLENBQVQsQ0FDUixDQUVNLFFBQVNELGFBQVQsQ0FBc0JHLFNBQXRCLENBQWlDQyxNQUFqQyxDQUFvRCxJQUFYQyxLQUFXLDJEQUFKLEVBQUksQ0FDdkQsR0FBTUMsV0FBYSwwQkFBYSx1QkFBU0MsaUJBQWdCRCxVQUFVRSxLQUFWLENBQWhCLENBQVQsQ0FBYixDQUFELENBQTBESCxLQUFLQyxTQUFMLEVBQW1CLHNCQUFTRSxNQUFULENBQTdFLENBQWxCLENBRUEsR0FBTVQsUUFBU00sS0FBS0ksSUFBTCxFQUFhWixPQUE1QixDQUVBLE1BQU8sZUFBQ1csTUFBRCwyREFBUyxFQUFULE9BQWdCVCxRQUFPLHlCQUFjSSxTQUFkLENBQXlCRyxVQUFVRSxLQUFWLENBQXpCLENBQVAsRUFBbURFLE1BQW5ELENBQTBETixNQUExRCxDQUFoQixDQUNWLENBRUQsUUFBU0YsU0FBVCxDQUFrQlMsVUFBbEIsQ0FBOEIsQ0FDNUIsTUFBTyxJQUFJQyxNQUFKLENBQVVELFlBQVYsQ0FBd0IsQ0FDN0JFLEdBRDZCLGNBQ3pCQyxNQUR5QixDQUNqQkMsR0FEaUIsQ0FDWixDQUNmLEdBQU1DLE1BQU8sUUFBUEEsS0FBTyxpQ0FBSUMsUUFBSixzQ0FBSUEsUUFBSiw2QkFBaUJmLFVBQVMsaUNBQU0sMkJBQWFjLElBQWIsbUJBQXFCQyxRQUFyQixDQUFOLENBQVQsQ0FBakIsQ0FBYixDQUNBLE9BQVFGLEdBQVIsRUFDRSxJQUFLLE1BQUwsQ0FDRSxNQUFPQyxLQUFQLENBQ0YsSUFBSyxRQUFMLENBQ0UsTUFBTywwQkFBWSxJQUFJSixNQUFKLENBQVUsRUFBVixDQUFjLENBQy9CQyxHQUQrQixjQUMzQkMsTUFEMkIsQ0FDbkJJLElBRG1CLENBQ2IsQ0FDaEIsR0FBSUMsUUFBSixDQUNFRCxLQUFPQyxTQUFTRCxJQUFULEVBQWVFLEtBQWYsQ0FBcUIsR0FBckIsRUFBMEIsQ0FBMUIsQ0FBUCxDQUNGLE1BQU9KLFVBQVNFLElBQVQsQ0FDUixDQUw4QixDQUFkLENBQVosQ0FBUCxDQU9GLFFBQ0UsTUFBT1AsY0FBYUksR0FBYixDQUFQLENBWkosQ0FjRCxDQWpCNEIsQ0FBeEIsQ0FtQlIsQ0FFRCxRQUFTUixnQkFBVCxDQUF5QmMsR0FBekIsQ0FBOEIsQ0FDMUIsR0FBTUMsb0JBQWNELEdBQWQsQ0FBTixDQUNBLElBQUssR0FBTU4sSUFBWCxHQUFrQk8sT0FBbEIsQ0FBMEIsQ0FDdEIsR0FBSUEsT0FBT1AsR0FBUCxJQUFnQlEsU0FBcEIsQ0FDSSxNQUFPRCxRQUFPUCxHQUFQLENBQ2QsQ0FDRCxNQUFPTyxPQUNWIiwiZmlsZSI6ImFjdGl2ZS1lbnp5bWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVFbGVtZW50IH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7XG4gIHNoYWxsb3cgYXMgZW56eW1lU2hhbGxvdyxcbiAgbW91bnQgYXMgZW56eW1lTW91bnQsXG4gIHJlbmRlciBhcyBlbnp5bWVSZW5kZXIsXG59IGZyb20gJ2VuenltZSdcblxuZXhwb3J0IGZ1bmN0aW9uIHNoYWxsb3coLi4uYXJncykge1xuICBjb25zdCB3cmFwcGVyID0gZW56eW1lU2hhbGxvdyguLi5hcmdzKVxuICByZXR1cm4gYWN0aXZhdGUoKCkgPT4gd3JhcHBlcilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdW50KC4uLmFyZ3MpIHtcbiAgY29uc3Qgd3JhcHBlciA9IGVuenltZU1vdW50KC4uLmFyZ3MpXG4gIHJldHVybiBhY3RpdmF0ZSgoKSA9PiB3cmFwcGVyKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyKC4uLmFyZ3MpIHtcbiAgY29uc3Qgd3JhcHBlciA9IGVuenltZVJlbmRlciguLi5hcmdzKVxuICByZXR1cm4gYWN0aXZhdGUoKCkgPT4gd3JhcHBlcilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VBbmFseXplcihjb21wb25lbnQsIHN0eWxlcywgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gKHRyYW5zZm9ybSA9PiBwcm9wcyA9PiByZW1vdmVVbmRlZmluZWQodHJhbnNmb3JtKHByb3BzKSkpKG9wdHMudHJhbnNmb3JtIHx8IChwcm9wcyA9PiBwcm9wcykpXG5cbiAgICBjb25zdCByZW5kZXIgPSBvcHRzLnR5cGUgfHwgc2hhbGxvd1xuXG4gICAgcmV0dXJuIChwcm9wcyA9IHt9KSA9PiByZW5kZXIoY3JlYXRlRWxlbWVudChjb21wb25lbnQsIHRyYW5zZm9ybShwcm9wcykpKS5sb29rdXAoc3R5bGVzKVxufVxuXG5mdW5jdGlvbiBhY3RpdmF0ZShmaW5kTXlzZWxmKSB7XG4gIHJldHVybiBuZXcgUHJveHkoZmluZE15c2VsZigpLCB7XG4gICAgZ2V0KHRhcmdldCwga2V5KSB7XG4gICAgICBjb25zdCBmaW5kID0gKC4uLmZpbmRBcmdzKSA9PiBhY3RpdmF0ZSgoKSA9PiBmaW5kTXlzZWxmKCkuZmluZCguLi5maW5kQXJncykpXG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICdmaW5kJzpcbiAgICAgICAgICByZXR1cm4gZmluZFxuICAgICAgICBjYXNlICdsb29rdXAnOlxuICAgICAgICAgIHJldHVybiBjbGFzc01hcCA9PiBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgICAgIGdldCh0YXJnZXQsIG5hbWUpIHtcbiAgICAgICAgICAgICAgaWYgKGNsYXNzTWFwKVxuICAgICAgICAgICAgICAgIG5hbWUgPSBjbGFzc01hcFtuYW1lXS5zcGxpdCgnICcpWzBdXG4gICAgICAgICAgICAgIHJldHVybiBmaW5kKGAuJHtuYW1lfWApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZmluZE15c2VsZigpW2tleV1cbiAgICAgIH1cbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZChvYmopIHtcbiAgICBjb25zdCByZXN1bHQgPSB7IC4uLm9iaiB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gcmVzdWx0KSB7XG4gICAgICAgIGlmIChyZXN1bHRba2V5XSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgZGVsZXRlIHJlc3VsdFtrZXldXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbn1cbiJdfQ== | ||
'use strict';Object.defineProperty(exports,'__esModule',{value:true});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};exports.shallow=shallow;exports.mount=mount;exports.render=render;exports.makeRenderer=makeRenderer;var _react=require('react');var _enzyme=require('enzyme');function shallow(){var wrapper=_enzyme.shallow.apply(undefined,arguments);return activate(function(){return wrapper})}function mount(){var wrapper=_enzyme.mount.apply(undefined,arguments);return activate(function(){return wrapper})}function render(){var wrapper=_enzyme.render.apply(undefined,arguments);return activate(function(){return wrapper})}function makeRenderer(component){var _ref=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var _ref$method=_ref.method;var method=_ref$method===undefined?shallow:_ref$method;var _ref$transform=_ref.transform;var transform=_ref$transform===undefined?function(props){return props}:_ref$transform;var enzymeOptions=_ref.enzymeOptions;var doTransform=function doTransform(props){return removeUndefined(transform(props))};return function(){var props=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return method((0,_react.createElement)(component,doTransform(props)),enzymeOptions)}}function activate(findMyself){var find=function find(){for(var _len=arguments.length,findArgs=Array(_len),_key=0;_key<_len;_key++){findArgs[_key]=arguments[_key]}return activate(function(){var _findMyself;return(_findMyself=findMyself()).find.apply(_findMyself,findArgs)})};var classes=new Proxy({},{get:function get(target,name){return find('.'+name)}});var overrides={find:find,classes:classes};return new Proxy(findMyself(),{get:function get(target,key){return overrides[key]||findMyself()[key]}})}function removeUndefined(obj){var result=_extends({},obj);for(var key in result){if(result[key]===undefined)delete result[key]}return result} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjdGl2ZS1lbnp5bWUuanMiXSwibmFtZXMiOlsic2hhbGxvdyIsIm1vdW50IiwicmVuZGVyIiwibWFrZVJlbmRlcmVyIiwid3JhcHBlciIsImFjdGl2YXRlIiwiY29tcG9uZW50IiwibWV0aG9kIiwidHJhbnNmb3JtIiwicHJvcHMiLCJlbnp5bWVPcHRpb25zIiwiZG9UcmFuc2Zvcm0iLCJyZW1vdmVVbmRlZmluZWQiLCJmaW5kTXlzZWxmIiwiZmluZCIsImZpbmRBcmdzIiwiY2xhc3NlcyIsIlByb3h5IiwiZ2V0IiwidGFyZ2V0IiwibmFtZSIsIm92ZXJyaWRlcyIsImtleSIsIm9iaiIsInJlc3VsdCIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6IjRTQVFnQkEsTyxDQUFBQSxPLFNBS0FDLEssQ0FBQUEsSyxTQUtBQyxNLENBQUFBLE0sU0FLQUMsWSxDQUFBQSxZLENBdkJoQiw0QkFFQSw4QkFNTyxRQUFTSCxRQUFULEVBQTBCLENBQy9CLEdBQU1JLFNBQVUsMENBQWhCLENBQ0EsTUFBT0MsVUFBUyxpQkFBTUQsUUFBTixDQUFULENBQ1IsQ0FFTSxRQUFTSCxNQUFULEVBQXdCLENBQzdCLEdBQU1HLFNBQVUsd0NBQWhCLENBQ0EsTUFBT0MsVUFBUyxpQkFBTUQsUUFBTixDQUFULENBQ1IsQ0FFTSxRQUFTRixPQUFULEVBQXlCLENBQzlCLEdBQU1FLFNBQVUseUNBQWhCLENBQ0EsTUFBT0MsVUFBUyxpQkFBTUQsUUFBTixDQUFULENBQ1IsQ0FFTSxRQUFTRCxhQUFULENBQXNCRyxTQUF0QixDQUlDLG9FQUFKLEVBQUksc0JBSE5DLE1BR00sSUFITkEsT0FHTSx5QkFIR1AsT0FHSCxxQ0FGTlEsU0FFTSxJQUZOQSxVQUVNLDRCQUZNLHNCQUFTQyxNQUFULENBRU4sbUJBRE5DLGNBQ00sTUFETkEsYUFDTSxDQUNOLEdBQU1DLGFBQWMsUUFBZEEsWUFBYyxjQUFTQyxpQkFBZ0JKLFVBQVVDLEtBQVYsQ0FBaEIsQ0FBVCxDQUFwQixDQUNBLE1BQU8sZUFBQ0EsTUFBRCwyREFBUyxFQUFULE9BQWdCRixRQUFPLHlCQUFjRCxTQUFkLENBQXlCSyxZQUFZRixLQUFaLENBQXpCLENBQVAsQ0FBcURDLGFBQXJELENBQWhCLENBQ1IsQ0FFRCxRQUFTTCxTQUFULENBQWtCUSxVQUFsQixDQUE4QixDQUM1QixHQUFNQyxNQUFPLFFBQVBBLEtBQU8saUNBQUlDLFFBQUosc0NBQUlBLFFBQUosNkJBQWlCVixVQUFTLGlDQUFNLDJCQUFhUyxJQUFiLG1CQUFxQkMsUUFBckIsQ0FBTixDQUFULENBQWpCLENBQWIsQ0FDQSxHQUFNQyxTQUFVLEdBQUlDLE1BQUosQ0FBVSxFQUFWLENBQWMsQ0FDNUJDLEdBRDRCLGNBQ3hCQyxNQUR3QixDQUNoQkMsSUFEZ0IsQ0FDVixDQUNoQixNQUFPTixVQUFTTSxJQUFULENBQ1IsQ0FIMkIsQ0FBZCxDQUFoQixDQUtBLEdBQU1DLFdBQVksQ0FBRVAsU0FBRixDQUFRRSxlQUFSLENBQWxCLENBQ0EsTUFBTyxJQUFJQyxNQUFKLENBQVVKLFlBQVYsQ0FBd0IsQ0FDN0JLLEdBRDZCLGNBQ3pCQyxNQUR5QixDQUNqQkcsR0FEaUIsQ0FDWixDQUNmLE1BQU9ELFdBQVVDLEdBQVYsR0FBa0JULGFBQWFTLEdBQWIsQ0FDMUIsQ0FINEIsQ0FBeEIsQ0FLUixDQUVELFFBQVNWLGdCQUFULENBQXlCVyxHQUF6QixDQUE4QixDQUMxQixHQUFNQyxvQkFBY0QsR0FBZCxDQUFOLENBQ0EsSUFBSyxHQUFNRCxJQUFYLEdBQWtCRSxPQUFsQixDQUEwQixDQUN0QixHQUFJQSxPQUFPRixHQUFQLElBQWdCRyxTQUFwQixDQUNJLE1BQU9ELFFBQU9GLEdBQVAsQ0FDZCxDQUNELE1BQU9FLE9BQ1YiLCJmaWxlIjoiYWN0aXZlLWVuenltZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHtcbiAgc2hhbGxvdyBhcyBlbnp5bWVTaGFsbG93LFxuICBtb3VudCBhcyBlbnp5bWVNb3VudCxcbiAgcmVuZGVyIGFzIGVuenltZVJlbmRlcixcbn0gZnJvbSAnZW56eW1lJ1xuXG5leHBvcnQgZnVuY3Rpb24gc2hhbGxvdyguLi5hcmdzKSB7XG4gIGNvbnN0IHdyYXBwZXIgPSBlbnp5bWVTaGFsbG93KC4uLmFyZ3MpXG4gIHJldHVybiBhY3RpdmF0ZSgoKSA9PiB3cmFwcGVyKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW91bnQoLi4uYXJncykge1xuICBjb25zdCB3cmFwcGVyID0gZW56eW1lTW91bnQoLi4uYXJncylcbiAgcmV0dXJuIGFjdGl2YXRlKCgpID0+IHdyYXBwZXIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXIoLi4uYXJncykge1xuICBjb25zdCB3cmFwcGVyID0gZW56eW1lUmVuZGVyKC4uLmFyZ3MpXG4gIHJldHVybiBhY3RpdmF0ZSgoKSA9PiB3cmFwcGVyKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZVJlbmRlcmVyKGNvbXBvbmVudCwge1xuICBtZXRob2QgPSBzaGFsbG93LFxuICB0cmFuc2Zvcm0gPSBwcm9wcyA9PiBwcm9wcyxcbiAgZW56eW1lT3B0aW9uc1xufSA9IHt9KSB7XG4gIGNvbnN0IGRvVHJhbnNmb3JtID0gcHJvcHMgPT4gcmVtb3ZlVW5kZWZpbmVkKHRyYW5zZm9ybShwcm9wcykpXG4gIHJldHVybiAocHJvcHMgPSB7fSkgPT4gbWV0aG9kKGNyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCBkb1RyYW5zZm9ybShwcm9wcykpLCBlbnp5bWVPcHRpb25zKVxufVxuXG5mdW5jdGlvbiBhY3RpdmF0ZShmaW5kTXlzZWxmKSB7XG4gIGNvbnN0IGZpbmQgPSAoLi4uZmluZEFyZ3MpID0+IGFjdGl2YXRlKCgpID0+IGZpbmRNeXNlbGYoKS5maW5kKC4uLmZpbmRBcmdzKSlcbiAgY29uc3QgY2xhc3NlcyA9IG5ldyBQcm94eSh7fSwge1xuICAgIGdldCh0YXJnZXQsIG5hbWUpIHtcbiAgICAgIHJldHVybiBmaW5kKGAuJHtuYW1lfWApXG4gICAgfVxuICB9KVxuICBjb25zdCBvdmVycmlkZXMgPSB7IGZpbmQsIGNsYXNzZXMgfVxuICByZXR1cm4gbmV3IFByb3h5KGZpbmRNeXNlbGYoKSwge1xuICAgIGdldCh0YXJnZXQsIGtleSkge1xuICAgICAgcmV0dXJuIG92ZXJyaWRlc1trZXldIHx8IGZpbmRNeXNlbGYoKVtrZXldXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiByZW1vdmVVbmRlZmluZWQob2JqKSB7XG4gICAgY29uc3QgcmVzdWx0ID0geyAuLi5vYmogfVxuICAgIGZvciAoY29uc3Qga2V5IGluIHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0W2tleV0gPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIGRlbGV0ZSByZXN1bHRba2V5XVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG59XG4iXX0= |
{ | ||
"name": "active-enzyme", | ||
"version": "1.2.1", | ||
"version": "2.0.0", | ||
"description": "Boilerplate-free Enzyme testing", | ||
@@ -5,0 +5,0 @@ "main": "build.js", |
@@ -46,3 +46,3 @@ # active-enzyme [![Build Status](https://travis-ci.org/pelotom/active-enzyme.svg?branch=master)](https://travis-ci.org/pelotom/active-enzyme) | ||
switchLanguage | ||
} = shallow(<Greeting name={name} />).lookup() | ||
} = shallow(<Greeting name={name} />).classes | ||
@@ -61,61 +61,18 @@ expect(greeting.text()).toBe(`Hello, ${name}!`) | ||
1. Enzyme wrapper objects acquire a special `lookup()` method which allows you to query based on a class names. This is nice because it allows you to use ES2015 destructuring syntax as above to select all the rendered elements you care about for a given test. | ||
1. Enzyme wrapper objects acquire a special `classes` property which allows you to query based on a class names. This is nice because it allows you to use ES2015 destructuring syntax as above to select all the rendered elements you care about for a given test. | ||
1. The first feature wouldn't be very useful with regular Enzyme if your test triggers re-renders of the element tree (as is happening here implicitly as a result of the `'click'` events), because the `greeting` and `switchLanguage` wrappers are normally immutable. This library instead returns *active* wrappers, which change in response to the element tree being re-rendered. | ||
You may provide a custom mapping object to the `lookup()` method which shows which properties should be mapped to which `className`s: | ||
Since the most common usage pattern is that you have a bunch of tests all testing the same component, there is a `makeRenderer()` utility which allows the individual tests to simply vary the props they're going to render it with: | ||
```javascript | ||
const { | ||
foo | ||
} = shallow(<Greeting name={name} />).lookup({ | ||
foo: 'greeting' | ||
}) | ||
``` | ||
this would be equivalent to | ||
```javascript | ||
const foo = shallow(<Greeting name={name} />).find('.greeting') | ||
``` | ||
This might not seem all that useful at first blush, but it is intended to support [CSS Modules](https://github.com/css-modules/css-modules), where `className`s get munged so as to be globally unique. Going back to our `Greeting` component test example, if we were using CSS Modules it would look something like this: | ||
```javascript | ||
import React from 'react' | ||
import { shallow } from 'active-enzyme' | ||
import { makeRenderer } from 'active-enzyme' | ||
import Greeting from './Greeting' | ||
import styles from './Greeting.css' | ||
it('greets in multiple languages', () => { | ||
const name = 'John' | ||
const render = makeRenderer(Greeting) | ||
const { | ||
greeting, | ||
switchLanguage | ||
} = shallow(<Greeting name={name} />).lookup(styles) | ||
expect(greeting.text()).toBe(`Hello, ${name}!`) | ||
switchLanguage.simulate('click') | ||
expect(greeting.text()).toBe(`Bonjour, ${name}!`) | ||
switchLanguage.simulate('click') | ||
expect(greeting.text()).toBe(`Hello, ${name}!`) | ||
}) | ||
``` | ||
Finally, since the most common usage pattern is that you have a bunch of tests all testing the same component, possibly with associated CSS Modules, there is a `makeAnalyzer()` utility which allows the individual tests to simply vary the props they're going to pass to it when rendering: | ||
```javascript | ||
import React from 'react' | ||
import { makeAnalyzer } from 'active-enzyme' | ||
import Greeting from './Greeting' | ||
import styles from './Greeting.css' | ||
const analyze = makeAnalyzer(Greeting, styles) | ||
it('greets in multiple languages', () => { | ||
const name = 'John' | ||
const { greeting, switchLanguage } = analyze({ name }) | ||
const { greeting, switchLanguage } = render({ name }).classes | ||
@@ -122,0 +79,0 @@ expect(greeting.text()).toBe(`Hello, ${name}!`) |
@@ -24,28 +24,22 @@ import { createElement } from 'react' | ||
export function makeAnalyzer(component, styles, opts = {}) { | ||
const transform = (transform => props => removeUndefined(transform(props)))(opts.transform || (props => props)) | ||
const render = opts.type || shallow | ||
return (props = {}) => render(createElement(component, transform(props))).lookup(styles) | ||
export function makeRenderer(component, { | ||
method = shallow, | ||
transform = props => props, | ||
enzymeOptions | ||
} = {}) { | ||
const doTransform = props => removeUndefined(transform(props)) | ||
return (props = {}) => method(createElement(component, doTransform(props)), enzymeOptions) | ||
} | ||
function activate(findMyself) { | ||
const find = (...findArgs) => activate(() => findMyself().find(...findArgs)) | ||
const classes = new Proxy({}, { | ||
get(target, name) { | ||
return find(`.${name}`) | ||
} | ||
}) | ||
const overrides = { find, classes } | ||
return new Proxy(findMyself(), { | ||
get(target, key) { | ||
const find = (...findArgs) => activate(() => findMyself().find(...findArgs)) | ||
switch (key) { | ||
case 'find': | ||
return find | ||
case 'lookup': | ||
return classMap => new Proxy({}, { | ||
get(target, name) { | ||
if (classMap) | ||
name = classMap[name].split(' ')[0] | ||
return find(`.${name}`) | ||
} | ||
}) | ||
default: | ||
return findMyself()[key] | ||
} | ||
return overrides[key] || findMyself()[key] | ||
} | ||
@@ -52,0 +46,0 @@ }) |
import React, { Component } from 'react' | ||
import * as renderers from './active-enzyme' | ||
import * as activeEnzyme from './active-enzyme' | ||
describe('shallow wrapper', () => { | ||
it('is active', () => { | ||
['shallow', 'mount'].forEach(method => { | ||
['shallow', 'mount'].forEach(methodName => { | ||
const render = activeEnzyme.makeRenderer(Greeting, { method: activeEnzyme[methodName] }) | ||
const name = 'John' | ||
@@ -13,3 +15,3 @@ | ||
switchLanguage | ||
} = renderers[method](<Greeting name={name} />).lookup() | ||
} = render({ name }).classes | ||
@@ -27,26 +29,2 @@ expect(greeting.text()).toBe(`Hello, ${name}!`) | ||
describe('selector mapping', () => { | ||
it('works', () => { | ||
['shallow', 'mount'].forEach(method => { | ||
const name = 'John' | ||
const { | ||
greetingRenamed, | ||
switchLanguageRenamed | ||
} = renderers[method](<Greeting name={name} />).lookup({ | ||
greetingRenamed: 'greeting', | ||
switchLanguageRenamed: 'switchLanguage', | ||
}) | ||
expect(greetingRenamed.text()).toBe(`Hello, ${name}!`) | ||
switchLanguageRenamed.simulate('click') | ||
expect(greetingRenamed.text()).toBe(`Bonjour, ${name}!`) | ||
switchLanguageRenamed.simulate('click') | ||
expect(greetingRenamed.text()).toBe(`Hello, ${name}!`) | ||
}) | ||
}) | ||
}) | ||
// Test component | ||
@@ -53,0 +31,0 @@ |
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
15386
114
86