@@ -667,23 +667,23 @@ describe('shallow', () => {
667
667
} ) ;
668
668
} ) ;
669
669
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!' ) ;
673
672
674
673
class OuterComponent extends React . Component {
675
674
render ( ) {
675
+ const { value } = this . props ;
676
676
return (
677
- < Provider value = "foo" > < InnerComponent /> </ Provider >
677
+ < Provider value = { value } > < InnerComponent /> </ Provider >
678
678
) ;
679
679
}
680
680
}
681
681
682
682
class WrappingComponent extends React . Component {
683
683
render ( ) {
684
- const { children } = this . props ;
684
+ const { children, value } = this . props ;
685
685
return (
686
- < Provider value = "foo" > { children } </ Provider >
686
+ < Provider value = { value } > { children } </ Provider >
687
687
) ;
688
688
}
689
689
}
@@ -696,16 +696,45 @@ describe('shallow', () => {
696
696
697
697
InnerComponent . contextType = Provider ;
698
698
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
+ } ) ;
704
716
} ) ;
705
717
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
+ } ) ;
709
738
} ) ;
710
739
} ) ;
711
740
} ) ;
0 commit comments