@@ -115,26 +115,73 @@ describe('ErrorBoundary component', () => {
115
115
} ) ;
116
116
117
117
describe ( 'and a custom fallback component is provided' , ( ) => {
118
- it ( 'renders it pass error-related props' , ( ) => {
119
- const CustomFallbackComponent = ( ) => < div > foo</ div > ;
120
-
121
- const wrapper = mount (
122
- < ErrorBoundaryProvider reporter = { reporter } >
123
- < ErrorBoundary FallbackComponent = { CustomFallbackComponent } >
124
- < TestComponent value = { 0 } />
125
- </ ErrorBoundary >
126
- </ ErrorBoundaryProvider > ,
127
- ) ;
118
+ describe ( 'at the props level' , ( ) => {
119
+ it ( 'renders it pass error-related props' , ( ) => {
120
+ const CustomFallbackComponent = ( ) => < div > foo</ div > ;
121
+
122
+ const wrapper = mount (
123
+ < ErrorBoundaryProvider reporter = { reporter } >
124
+ < ErrorBoundary FallbackComponent = { CustomFallbackComponent } >
125
+ < TestComponent value = { 0 } />
126
+ </ ErrorBoundary >
127
+ </ ErrorBoundaryProvider > ,
128
+ ) ;
129
+
130
+ expect ( wrapper . find ( FallbackComponent ) ) . not . toExist ( ) ; // makes sure we don't render the original one
131
+ expect ( wrapper . find ( CustomFallbackComponent ) ) . toExist ( ) ;
132
+ expect ( wrapper . find ( CustomFallbackComponent ) ) . toHaveProp ( {
133
+ error : ex ,
134
+ componentStack : expect . stringContaining ( 'in TestComponent' ) ,
135
+ tryRecovering : ( wrapper . find ( ErrorBoundary ) . instance ( ) as any ) . recover ,
136
+ } ) ;
137
+
138
+ wrapper . unmount ( ) ;
139
+ } ) ;
140
+ } ) ;
128
141
129
- expect ( wrapper . find ( FallbackComponent ) ) . not . toExist ( ) ; // makes sure we don't render the original one
130
- expect ( wrapper . find ( CustomFallbackComponent ) ) . toExist ( ) ;
131
- expect ( wrapper . find ( CustomFallbackComponent ) ) . toHaveProp ( {
132
- error : ex ,
133
- componentStack : expect . stringContaining ( 'in TestComponent' ) ,
134
- tryRecovering : ( wrapper . find ( ErrorBoundary ) . instance ( ) as any ) . recover ,
142
+ describe ( 'at the provider level' , ( ) => {
143
+ it ( 'renders it pass error-related props' , ( ) => {
144
+ const CustomFallbackComponent = ( ) => < div > foo</ div > ;
145
+
146
+ const wrapper = mount (
147
+ < ErrorBoundaryProvider reporter = { reporter } FallbackComponent = { CustomFallbackComponent } >
148
+ >
149
+ < ErrorBoundary >
150
+ < TestComponent value = { 0 } />
151
+ </ ErrorBoundary >
152
+ </ ErrorBoundaryProvider > ,
153
+ ) ;
154
+
155
+ expect ( wrapper . find ( FallbackComponent ) ) . not . toExist ( ) ; // makes sure we don't render the original one
156
+ expect ( wrapper . find ( CustomFallbackComponent ) ) . toExist ( ) ;
157
+ expect ( wrapper . find ( CustomFallbackComponent ) ) . toHaveProp ( {
158
+ error : ex ,
159
+ componentStack : expect . stringContaining ( 'in TestComponent' ) ,
160
+ tryRecovering : ( wrapper . find ( ErrorBoundary ) . instance ( ) as any ) . recover ,
161
+ } ) ;
162
+
163
+ wrapper . unmount ( ) ;
135
164
} ) ;
165
+ } ) ;
136
166
137
- wrapper . unmount ( ) ;
167
+ describe ( 'at both the provider and props level' , ( ) => {
168
+ it ( 'prefers the props one' , ( ) => {
169
+ const CustomFallbackContextComponent = ( ) => < div > context!</ div > ;
170
+ const CustomFallbackPropsComponent = ( ) => < div > level!</ div > ;
171
+
172
+ const wrapper = mount (
173
+ < ErrorBoundaryProvider reporter = { reporter } FallbackComponent = { CustomFallbackContextComponent } >
174
+ < ErrorBoundary FallbackComponent = { CustomFallbackPropsComponent } >
175
+ < TestComponent value = { 0 } />
176
+ </ ErrorBoundary >
177
+ </ ErrorBoundaryProvider > ,
178
+ ) ;
179
+
180
+ expect ( wrapper . find ( FallbackComponent ) ) . not . toExist ( ) ; // makes sure we don't render the original one
181
+ expect ( wrapper . find ( CustomFallbackContextComponent ) ) . not . toExist ( ) ;
182
+ expect ( wrapper . find ( CustomFallbackPropsComponent ) ) . toExist ( ) ;
183
+ wrapper . unmount ( ) ;
184
+ } ) ;
138
185
} ) ;
139
186
140
187
it ( 'fallback component can try to recover' , ( ) => {
0 commit comments