enzyme-adapter-react-16
Advanced tools
Comparing version 1.5.0 to 1.6.0
@@ -258,2 +258,36 @@ 'use strict'; | ||
function getEmptyStateValue() { | ||
// this handles a bug in React 16.0 - 16.2 | ||
// see https://github.com/facebook/react/commit/39be83565c65f9c522150e52375167568a2a1459 | ||
// also see https://github.com/facebook/react/pull/11965 | ||
// eslint-disable-next-line react/prefer-stateless-function | ||
var EmptyState = function (_React$Component) { | ||
_inherits(EmptyState, _React$Component); | ||
function EmptyState() { | ||
_classCallCheck(this, EmptyState); | ||
return _possibleConstructorReturn(this, (EmptyState.__proto__ || Object.getPrototypeOf(EmptyState)).apply(this, arguments)); | ||
} | ||
_createClass(EmptyState, [{ | ||
key: 'render', | ||
value: function () { | ||
function render() { | ||
return null; | ||
} | ||
return render; | ||
}() | ||
}]); | ||
return EmptyState; | ||
}(_react2['default'].Component); | ||
var testRenderer = new _shallow2['default'](); | ||
testRenderer.render(_react2['default'].createElement(EmptyState)); | ||
return testRenderer._instance.state; | ||
} | ||
var ReactSixteenAdapter = function (_EnzymeAdapter) { | ||
@@ -265,7 +299,7 @@ _inherits(ReactSixteenAdapter, _EnzymeAdapter); | ||
var _this = _possibleConstructorReturn(this, (ReactSixteenAdapter.__proto__ || Object.getPrototypeOf(ReactSixteenAdapter)).call(this)); | ||
var _this2 = _possibleConstructorReturn(this, (ReactSixteenAdapter.__proto__ || Object.getPrototypeOf(ReactSixteenAdapter)).call(this)); | ||
var lifecycles = _this.options.lifecycles; | ||
var lifecycles = _this2.options.lifecycles; | ||
_this.options = (0, _object2['default'])({}, _this.options, { | ||
_this2.options = (0, _object2['default'])({}, _this2.options, { | ||
enableComponentDidUpdateOnSetState: true, // TODO: remove, semver-major | ||
@@ -283,3 +317,3 @@ lifecycles: (0, _object2['default'])({}, lifecycles, { | ||
}); | ||
return _this; | ||
return _this2; | ||
} | ||
@@ -412,2 +446,34 @@ | ||
} | ||
if (isStateful) { | ||
// fix react bug; see implementation of `getEmptyStateValue` | ||
var emptyStateValue = getEmptyStateValue(); | ||
if (emptyStateValue) { | ||
Object.defineProperty(Component.prototype, 'state', { | ||
configurable: true, | ||
enumerable: true, | ||
get: function () { | ||
function get() { | ||
return null; | ||
} | ||
return get; | ||
}(), | ||
set: function () { | ||
function set(value) { | ||
if (value !== emptyStateValue) { | ||
Object.defineProperty(this, 'state', { | ||
configurable: true, | ||
enumerable: true, | ||
value: value, | ||
writable: true | ||
}); | ||
} | ||
return true; | ||
} | ||
return set; | ||
}() | ||
}); | ||
} | ||
} | ||
return (0, _enzymeAdapterUtils.withSetStateAllowed)(function () { | ||
@@ -605,2 +671,5 @@ return renderer.render(el, context); | ||
{ | ||
if (type.displayName) { | ||
return type.displayName; | ||
} | ||
var name = type.render.displayName || (0, _functionPrototype2['default'])(type.render); | ||
@@ -644,2 +713,14 @@ return name ? 'ForwardRef(' + String(name) + ')' : 'ForwardRef'; | ||
}, { | ||
key: 'isCustomComponentElement', | ||
value: function () { | ||
function isCustomComponentElement(inst) { | ||
if (!inst || !this.isValidElement(inst)) { | ||
return false; | ||
} | ||
return typeof inst.type === 'function' || (0, _reactIs.isForwardRef)(inst); | ||
} | ||
return isCustomComponentElement; | ||
}() | ||
}, { | ||
key: 'createElement', | ||
@@ -646,0 +727,0 @@ value: function () { |
{ | ||
"name": "enzyme-adapter-react-16", | ||
"version": "1.5.0", | ||
"version": "1.6.0", | ||
"description": "JavaScript Testing utilities for React", | ||
@@ -42,3 +42,3 @@ "homepage": "http://airbnb.io/enzyme/", | ||
"prop-types": "^15.6.2", | ||
"react-is": "^16.4.2", | ||
"react-is": "^16.5.2", | ||
"react-test-renderer": "^16.0.0-0" | ||
@@ -54,5 +54,5 @@ }, | ||
"babel-plugin-transform-replace-object-assign": "^1.0.0", | ||
"babel-preset-airbnb": "^2.5.3", | ||
"babel-preset-airbnb": "^2.6.0", | ||
"enzyme": "^3.0.0", | ||
"eslint": "^5.4.0", | ||
"eslint": "^5.6.1", | ||
"eslint-config-airbnb": "^17.1.0", | ||
@@ -59,0 +59,0 @@ "eslint-plugin-import": "^2.14.0", |
@@ -14,2 +14,3 @@ /* eslint no-use-before-define: 0 */ | ||
isPortal, | ||
isForwardRef, | ||
isValidElementType, | ||
@@ -230,2 +231,18 @@ AsyncMode, | ||
function getEmptyStateValue() { | ||
// this handles a bug in React 16.0 - 16.2 | ||
// see https://github.com/facebook/react/commit/39be83565c65f9c522150e52375167568a2a1459 | ||
// also see https://github.com/facebook/react/pull/11965 | ||
// eslint-disable-next-line react/prefer-stateless-function | ||
class EmptyState extends React.Component { | ||
render() { | ||
return null; | ||
} | ||
} | ||
const testRenderer = new ShallowRenderer(); | ||
testRenderer.render(React.createElement(EmptyState)); | ||
return testRenderer._instance.state; | ||
} | ||
class ReactSixteenAdapter extends EnzymeAdapter { | ||
@@ -346,2 +363,26 @@ constructor() { | ||
} | ||
if (isStateful) { | ||
// fix react bug; see implementation of `getEmptyStateValue` | ||
const emptyStateValue = getEmptyStateValue(); | ||
if (emptyStateValue) { | ||
Object.defineProperty(Component.prototype, 'state', { | ||
configurable: true, | ||
enumerable: true, | ||
get() { | ||
return null; | ||
}, | ||
set(value) { | ||
if (value !== emptyStateValue) { | ||
Object.defineProperty(this, 'state', { | ||
configurable: true, | ||
enumerable: true, | ||
value, | ||
writable: true, | ||
}); | ||
} | ||
return true; | ||
}, | ||
}); | ||
} | ||
} | ||
return withSetStateAllowed(() => renderer.render(el, context)); | ||
@@ -469,2 +510,5 @@ } | ||
case ForwardRef || NaN: { | ||
if (type.displayName) { | ||
return type.displayName; | ||
} | ||
const name = type.render.displayName || functionName(type.render); | ||
@@ -489,2 +533,9 @@ return name ? `ForwardRef(${name})` : 'ForwardRef'; | ||
isCustomComponentElement(inst) { | ||
if (!inst || !this.isValidElement(inst)) { | ||
return false; | ||
} | ||
return typeof inst.type === 'function' || isForwardRef(inst); | ||
} | ||
createElement(...args) { | ||
@@ -491,0 +542,0 @@ return React.createElement(...args); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
66232
1486
Updatedreact-is@^16.5.2