@@ -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