diff --git a/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx b/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx index e4042bff0..833b37b46 100644 --- a/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx +++ b/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx @@ -274,14 +274,15 @@ describeWithDOM('mount', () => { wrap() .withOverrides(() => getAdapter(), () => ({ + isCustomComponent: undefined, RootFinder: undefined, + wrapWithWrappingComponent: undefined, createMountRenderer: (...args) => { const renderer = realCreateMountRenderer(...args); delete renderer.getWrappingComponentRenderer; renderer.getNode = () => null; return renderer; }, - isCustomComponent: undefined, })) .describe('with an old adapter', () => { it('renders fine when wrappingComponent is not passed', () => { @@ -297,15 +298,16 @@ describeWithDOM('mount', () => { }); }); - itIf(is('<=0.13'), 'throws an error if wrappingComponent is passed', () => { - class WrappingComponent extends React.Component { - render() { - const { children } = this.props; - return children; - } + class RendersChildren extends React.Component { + render() { + const { children } = this.props; + return children; } + } + + itIf(is('<=0.13'), 'throws an error if wrappingComponent is passed', () => { expect(() => mount(
, { - wrappingComponent: WrappingComponent, + wrappingComponent: RendersChildren, })).to.throw('your adapter does not support `wrappingComponent`. Try upgrading it!'); }); diff --git a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx index a999689be..831f711bb 100644 --- a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx +++ b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx @@ -283,14 +283,19 @@ describe('shallow', () => { wrap() .withOverrides(() => getAdapter(), () => ({ + isCustomComponent: undefined, RootFinder: undefined, wrapWithWrappingComponent: undefined, - isCustomComponent: undefined, })) .describe('with an old adapter', () => { it('renders fine when wrappingComponent is not passed', () => { const wrapper = shallow(); - expect(wrapper.type()).to.equal('div'); + expect(wrapper.debug()).to.equal(`
+
+ Context says:${' '} +
+ +
`); }); it('throws an error if wrappingComponent is passed', () => { @@ -300,6 +305,32 @@ describe('shallow', () => { }); }); }); + + class RendersChildren extends React.Component { + render() { + const { children } = this.props; + return children; + } + } + + itIf.skip(is('<=0.13'), 'throws an error if wrappingComponent is passed', () => { + expect(() => shallow(
, { + wrappingComponent: RendersChildren, + })).to.throw('your adapter does not support `wrappingComponent`. Try upgrading it!'); + }); + + describeIf.skip(is('>= 16.3'), 'uses the isValidElementType from the Adapter to validate the prop type of Component', () => { + const Foo = () => null; + const Bar = () => null; + wrap() + .withConsoleThrows() + .withOverride(() => getAdapter(), 'isValidElementType', () => val => val === Foo) + .it('with isValidElementType defined on the Adapter', () => { + expect(() => { + shallow(); + }).to.throw('Warning: Failed prop type: Component must be a valid element type!\n in WrapperComponent'); + }); + }); }); describe('context', () => { diff --git a/packages/enzyme-test-suite/test/_helpers/index.jsx b/packages/enzyme-test-suite/test/_helpers/index.jsx index e4ffe8465..61512fa7d 100644 --- a/packages/enzyme-test-suite/test/_helpers/index.jsx +++ b/packages/enzyme-test-suite/test/_helpers/index.jsx @@ -30,6 +30,14 @@ describeIf.only = (test, a, b) => { } }; +describeIf.skip = (test, a, b) => { + if (typeof test !== 'boolean') { + throw new TypeError(`a boolean is required, you passed a ${typeof test}`); + } + + describeIf(false, a, b); +}; + /** * Simple wrapper around mocha it which allows a boolean to be passed in first which * determines whether or not the test will be run @@ -58,6 +66,14 @@ itIf.only = (test, a, b) => { } }; +itIf.skip = (test, a, b) => { + if (typeof test !== 'boolean') { + throw new TypeError(`a boolean is required, you passed a ${typeof test}`); + } + + itIf(false, a, b); +}; + /** * Simple wrapper around mocha it which allows an array of possible values to test against. * Each test will be wrapped in a try/catch block to handle any errors.