Skip to content

Commit 3344a07

Browse files
committed
Add tests with dynamic context
1 parent bbe1c52 commit 3344a07

File tree

1 file changed

+43
-14
lines changed

1 file changed

+43
-14
lines changed

packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -667,23 +667,23 @@ describe('shallow', () => {
667667
});
668668
});
669669

670-
describe('shallow() on Provider and Consumer through .contextType', () => {
671-
672-
const { Provider } = React.createContext('howdy!');
670+
describeIf(is('>= 16.3'), 'shallow() on Provider and Consumer through .contextType', () => {
671+
const { Provider } = createContext('howdy!');
673672

674673
class OuterComponent extends React.Component {
675674
render() {
675+
const { value } = this.props;
676676
return (
677-
<Provider value="foo"><InnerComponent /></Provider>
677+
<Provider value={value}><InnerComponent /></Provider>
678678
);
679679
}
680680
}
681681

682682
class WrappingComponent extends React.Component {
683683
render() {
684-
const { children } = this.props;
684+
const { children, value } = this.props;
685685
return (
686-
<Provider value="foo">{ children }</Provider>
686+
<Provider value={value}>{ children }</Provider>
687687
);
688688
}
689689
}
@@ -696,16 +696,45 @@ describe('shallow', () => {
696696

697697
InnerComponent.contextType = Provider;
698698

699-
it('works on a Provider', () => {
700-
const wrapper = shallow(<OuterComponent />);
701-
const provides = wrapper.find(Provider).dive();
702-
const provider = provides.find(InnerComponent).shallow();
703-
expect(provider.text()).to.equal('foo');
699+
describe('rendering the Provider directly', () => {
700+
it('renders initial context value', () => {
701+
const wrapper = shallow(<OuterComponent value="foo" />);
702+
const provides = wrapper.find(Provider).shallow();
703+
const provider = provides.find(InnerComponent).dive();
704+
705+
expect(provider.text()).to.equal('foo');
706+
});
707+
708+
it('renders updated context value', () => {
709+
const wrapper = shallow(<OuterComponent value="foo" />);
710+
wrapper.setProps({ value: 'bar' });
711+
const provides = wrapper.find(Provider).shallow();
712+
const provider = provides.find(InnerComponent).dive();
713+
714+
expect(provider.text()).to.equal('bar');
715+
});
704716
});
705717

706-
it('works with wrappingComponent', () => {
707-
const wrapper = shallow(<InnerComponent />, { wrappingComponent: WrappingComponent });
708-
expect(wrapper.text()).to.equal('foo');
718+
describe('rendering the Provider through wrappingComponent', () => {
719+
it('renders initial context value', () => {
720+
const wrapper = shallow(<InnerComponent />, {
721+
wrappingComponent: WrappingComponent,
722+
wrappingComponentProps: { value: 'foo' },
723+
});
724+
725+
expect(wrapper.text()).to.equal('foo');
726+
});
727+
728+
it('renders updated context value', () => {
729+
const wrapper = shallow(<InnerComponent />, {
730+
wrappingComponent: WrappingComponent,
731+
wrappingComponentProps: { value: 'foo' },
732+
});
733+
const wrappingComponent = wrapper.getWrappingComponent();
734+
wrappingComponent.setProps({ value: 'bar' });
735+
wrapper.update();
736+
expect(wrapper.text()).to.equal('bar');
737+
});
709738
});
710739
});
711740
});

0 commit comments

Comments
 (0)