diff --git a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx
index 8f9d30646..d9eead540 100644
--- a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx
+++ b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx
@@ -667,23 +667,23 @@ describe('shallow', () => {
});
});
- describe('shallow() on Provider and Consumer through .contextType', () => {
-
- const { Provider } = React.createContext('howdy!');
+ describeIf(is('>= 16.3'), 'shallow() on Provider and Consumer through .contextType', () => {
+ const { Provider } = createContext('howdy!');
class OuterComponent extends React.Component {
render() {
+ const { value } = this.props;
return (
-
+
);
}
}
class WrappingComponent extends React.Component {
render() {
- const { children } = this.props;
+ const { children, value } = this.props;
return (
- { children }
+ { children }
);
}
}
@@ -696,16 +696,45 @@ describe('shallow', () => {
InnerComponent.contextType = Provider;
- it('works on a Provider', () => {
- const wrapper = shallow();
- const provides = wrapper.find(Provider).dive();
- const provider = provides.find(InnerComponent).shallow();
- expect(provider.text()).to.equal('foo');
+ describe('rendering the Provider directly', () => {
+ it('renders initial context value', () => {
+ const wrapper = shallow();
+ const provides = wrapper.find(Provider).shallow();
+ const provider = provides.find(InnerComponent).dive();
+
+ expect(provider.text()).to.equal('foo');
+ });
+
+ it('renders updated context value', () => {
+ const wrapper = shallow();
+ wrapper.setProps({ value: 'bar' });
+ const provides = wrapper.find(Provider).shallow();
+ const provider = provides.find(InnerComponent).dive();
+
+ expect(provider.text()).to.equal('bar');
+ });
});
- it('works with wrappingComponent', () => {
- const wrapper = shallow(, { wrappingComponent: WrappingComponent });
- expect(wrapper.text()).to.equal('foo');
+ describe('rendering the Provider through wrappingComponent', () => {
+ it('renders initial context value', () => {
+ const wrapper = shallow(, {
+ wrappingComponent: WrappingComponent,
+ wrappingComponentProps: { value: 'foo' },
+ });
+
+ expect(wrapper.text()).to.equal('foo');
+ });
+
+ it('renders updated context value', () => {
+ const wrapper = shallow(, {
+ wrappingComponent: WrappingComponent,
+ wrappingComponentProps: { value: 'foo' },
+ });
+ const wrappingComponent = wrapper.getWrappingComponent();
+ wrappingComponent.setProps({ value: 'bar' });
+ wrapper.update();
+ expect(wrapper.text()).to.equal('bar');
+ });
});
});
});