Skip to content

Commit 5e1ca3c

Browse files
committed
Add tests with dynamic context
1 parent eb5c76e commit 5e1ca3c

File tree

1 file changed

+41
-11
lines changed

1 file changed

+41
-11
lines changed

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

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -673,17 +673,18 @@ describe('shallow', () => {
673673

674674
class OuterComponent extends React.Component {
675675
render() {
676+
const { value } = this.props;
676677
return (
677-
<Provider value="foo"><InnerComponent /></Provider>
678+
<Provider value={value}><InnerComponent /></Provider>
678679
);
679680
}
680681
}
681682

682683
class WrappingComponent extends React.Component {
683684
render() {
684-
const { children } = this.props;
685+
const { children, value } = this.props;
685686
return (
686-
<Provider value="foo">{ children }</Provider>
687+
<Provider value={value}>{ children }</Provider>
687688
);
688689
}
689690
}
@@ -696,16 +697,45 @@ describe('shallow', () => {
696697

697698
InnerComponent.contextType = Provider;
698699

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

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

0 commit comments

Comments
 (0)