Skip to content

Commit

Permalink
[enzyme-adapter-react-{16,16.1,16.2,16.3}] [new] add checkPropTypes
Browse files Browse the repository at this point in the history
  • Loading branch information
minznerjosh authored and ljharb committed Jan 7, 2019
1 parent 3ecf054 commit 8294b79
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 0 deletions.
11 changes: 11 additions & 0 deletions packages/enzyme-adapter-react-16.1/src/ReactSixteenOneAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import ReactDOMServer from 'react-dom/server';
import ShallowRenderer from 'react-test-renderer/shallow';
// eslint-disable-next-line import/no-unresolved
import TestUtils from 'react-dom/test-utils';
import checkPropTypes from 'prop-types/checkPropTypes';
import {
isElement,
isPortal,
Expand All @@ -30,6 +31,7 @@ import {
simulateError,
wrap,
getMaskedContext,
getComponentStack,
} from 'enzyme-adapter-utils';
import { findCurrentFiberUsingSlowPath } from 'react-reconciler/reflection';

Expand Down Expand Up @@ -415,6 +417,15 @@ class ReactSixteenOneAdapter extends EnzymeAdapter {
return fn();
// return ReactDOM.unstable_batchedUpdates(fn);
},
checkPropTypes(typeSpecs, values, location, hierarchy) {
return checkPropTypes(
typeSpecs,
values,
location,
displayNameOfNode(cachedNode),
() => getComponentStack(hierarchy.concat([cachedNode])),
);
},
};
}

Expand Down
11 changes: 11 additions & 0 deletions packages/enzyme-adapter-react-16.2/src/ReactSixteenTwoAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import ReactDOMServer from 'react-dom/server';
import ShallowRenderer from 'react-test-renderer/shallow';
// eslint-disable-next-line import/no-unresolved
import TestUtils from 'react-dom/test-utils';
import checkPropTypes from 'prop-types/checkPropTypes';
import {
isElement,
isPortal,
Expand All @@ -31,6 +32,7 @@ import {
simulateError,
wrap,
getMaskedContext,
getComponentStack,
} from 'enzyme-adapter-utils';
import { findCurrentFiberUsingSlowPath } from 'react-reconciler/reflection';

Expand Down Expand Up @@ -417,6 +419,15 @@ class ReactSixteenTwoAdapter extends EnzymeAdapter {
return fn();
// return ReactDOM.unstable_batchedUpdates(fn);
},
checkPropTypes(typeSpecs, values, location, hierarchy) {
return checkPropTypes(
typeSpecs,
values,
location,
displayNameOfNode(cachedNode),
() => getComponentStack(hierarchy.concat([cachedNode])),
);
},
};
}

Expand Down
11 changes: 11 additions & 0 deletions packages/enzyme-adapter-react-16.3/src/ReactSixteenThreeAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import ReactDOMServer from 'react-dom/server';
import ShallowRenderer from 'react-test-renderer/shallow';
// eslint-disable-next-line import/no-unresolved
import TestUtils from 'react-dom/test-utils';
import checkPropTypes from 'prop-types/checkPropTypes';
import {
isElement,
isPortal,
Expand Down Expand Up @@ -37,6 +38,7 @@ import {
ensureKeyOrUndefined,
simulateError,
wrap,
getComponentStack,
} from 'enzyme-adapter-utils';
import { findCurrentFiberUsingSlowPath } from 'react-reconciler/reflection';

Expand Down Expand Up @@ -395,6 +397,15 @@ class ReactSixteenThreeAdapter extends EnzymeAdapter {
return fn();
// return ReactDOM.unstable_batchedUpdates(fn);
},
checkPropTypes(typeSpecs, values, location, hierarchy) {
return checkPropTypes(
typeSpecs,
values,
location,
displayNameOfNode(cachedNode),
() => getComponentStack(hierarchy.concat([cachedNode])),
);
},
};
}

Expand Down
11 changes: 11 additions & 0 deletions packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import ReactDOMServer from 'react-dom/server';
import ShallowRenderer from 'react-test-renderer/shallow';
// eslint-disable-next-line import/no-unresolved
import TestUtils from 'react-dom/test-utils';
import checkPropTypes from 'prop-types/checkPropTypes';
import {
isElement,
isPortal,
Expand Down Expand Up @@ -40,6 +41,7 @@ import {
simulateError,
wrap,
getMaskedContext,
getComponentStack,
} from 'enzyme-adapter-utils';
import findCurrentFiberUsingSlowPath from './findCurrentFiberUsingSlowPath';
import detectFiberTags from './detectFiberTags';
Expand Down Expand Up @@ -443,6 +445,15 @@ class ReactSixteenAdapter extends EnzymeAdapter {
return fn();
// return ReactDOM.unstable_batchedUpdates(fn);
},
checkPropTypes(typeSpecs, values, location, hierarchy) {
return checkPropTypes(
typeSpecs,
values,
location,
displayNameOfNode(cachedNode),
() => getComponentStack(hierarchy.concat([cachedNode])),
);
},
};
}

Expand Down
59 changes: 59 additions & 0 deletions packages/enzyme-test-suite/test/Adapter-spec.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import inspect from 'object-inspect';
import {
Portal,
} from 'react-is';
import PropTypes from 'prop-types';
import wrap from 'mocha-wrap';

import './_helpers/setupAdapters';
import Adapter from './_helpers/adapter';
Expand Down Expand Up @@ -1033,4 +1035,61 @@ describe('Adapter', () => {
expect(wrapped.props).to.contain.keys({ children: element });
});
});

describeIf(is('>= 16'), 'checkPropTypes', () => {
let renderer;

class Root extends React.Component {
render() {
return <A />;
}
}
function A() {
return <B />;
}
class B extends React.Component {
render() {
return <C />;
}
}
class C extends React.Component {
render() {
return null;
}
}
const typeSpecs = {
foo: PropTypes.number,
};
const values = {
foo: 'foo',
};
const location = 'Adapter-spec';
const hierarchy = [
<A />,
<div />,
<span />,
<B />,
<C />,
];

beforeEach(() => {
renderer = adapter.createRenderer({ mode: 'shallow' });
renderer.render(<Root />, {});
});

wrap()
.withConsoleThrows()
.it('checks prop types', () => {
expect(() => renderer.checkPropTypes(typeSpecs, values, location, hierarchy)).to.throw(`
Warning: Failed Adapter-spec type: Invalid Adapter-spec \`foo\` of type \`string\` supplied to \`Root\`, expected \`number\`.
in A (created by B)
in div (created by B)
in span (created by B)
in B (created by C)
in C (created by Root)
in Root (created by WrapperComponent)
in WrapperComponent
`.trim());
});
});
});

0 comments on commit 8294b79

Please sign in to comment.