From 73609129ef7fb627bba871b0c0e6e4022a78c7c4 Mon Sep 17 00:00:00 2001 From: Josh Minzner Date: Wed, 3 Apr 2019 11:20:22 -0400 Subject: [PATCH] [Tests] Add `mount` tests for rendering `createContext()` `Consumer`/`Provider` as root --- .../test/ReactWrapper-spec.jsx | 97 +++++++++++++++++-- 1 file changed, 87 insertions(+), 10 deletions(-) diff --git a/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx b/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx index 833b37b46..ebec55c34 100644 --- a/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx +++ b/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx @@ -261,6 +261,53 @@ describeWithDOM('mount', () => { expect(wrapper.text()).to.equal('Context says: I can be set!'); }); + describeIf(is('>= 16.3'), 'with createContext()', () => { + let Context1; + let Context2; + + function WrappingComponent(props) { + const { value1, value2, children } = props; + return ( + + + {children} + + + ); + } + + function Component() { + return ( + + {value1 => ( + + {value2 => ( +
Value 1: {value1}; Value 2: {value2}
+ )} +
+ )} +
+ ); + } + + beforeEach(() => { + Context1 = createContext('default1'); + Context2 = createContext('default2'); + }); + + it('renders', () => { + const wrapper = mount(, { + wrappingComponent: WrappingComponent, + wrappingComponentProps: { + value1: 'one', + value2: 'two', + }, + }); + + expect(wrapper.text()).to.equal('Value 1: one; Value 2: two'); + }); + }); + it('throws an error if the wrappingComponent does not render its children', () => { class BadWrapper extends React.Component { render() { @@ -437,20 +484,50 @@ describeWithDOM('mount', () => { expect(wrapper.context('name')).to.equal(context.name); }); - itIf(is('>= 16.3'), 'finds elements through Context elements', () => { - const { Provider, Consumer } = createContext(''); + describeIf(is('>= 16.3'), 'createContext()', () => { + let Context; - class Foo extends React.Component { - render() { - return ( - {value => {value}} - ); + beforeEach(() => { + Context = createContext('hello'); + }); + + it('finds elements through Context elements', () => { + class Foo extends React.Component { + render() { + return ( + {value => {value}} + ); + } } - } - const wrapper = mount(
); + const wrapper = mount(
); + + expect(wrapper.find('span').text()).to.equal('foo'); + }); - expect(wrapper.find('span').text()).to.equal('foo'); + it('can render a as the root', () => { + const wrapper = mount( + + {value =>
{value}
}
+
, + ); + expect(wrapper.text()).to.equal('cool'); + + wrapper.setProps({ value: 'test' }); + expect(wrapper.text()).to.equal('test'); + }); + + it('can render a as the root', () => { + const wrapper = mount( + {value =>
{value}
}
, + ); + expect(wrapper.text()).to.equal('hello'); + + wrapper.setProps({ + children: value =>
Value is: {value}
, + }); + expect(wrapper.text()).to.equal('Value is: hello'); + }); }); describeIf(is('>= 16.3'), 'forwarded ref Components', () => {