@@ -266,15 +266,41 @@ test("can be nested", async () => {
266
266
} )
267
267
268
268
test ( "Async.Resolved renders only after the promise is resolved" , async ( ) => {
269
- const promiseFn = ( ) => resolveTo ( "done" )
269
+ const promiseFn = ( ) => resolveTo ( "ok" )
270
+ const deferFn = ( ) => rejectTo ( "fail" )
270
271
const { getByText, queryByText } = render (
271
- < Async promiseFn = { promiseFn } >
272
- < Async . Resolved > { data => data } </ Async . Resolved >
272
+ < Async promiseFn = { promiseFn } deferFn = { deferFn } >
273
+ < Async . Resolved > { ( data , { run } ) => < button onClick = { run } > { data } </ button > } </ Async . Resolved >
274
+ < Async . Rejected > { error => error } </ Async . Rejected >
273
275
</ Async >
274
276
)
275
- expect ( queryByText ( "done" ) ) . toBeNull ( )
276
- await waitForElement ( ( ) => getByText ( "done" ) )
277
- expect ( queryByText ( "done" ) ) . toBeInTheDocument ( )
277
+ expect ( queryByText ( "ok" ) ) . toBeNull ( )
278
+ await waitForElement ( ( ) => getByText ( "ok" ) )
279
+ expect ( queryByText ( "ok" ) ) . toBeInTheDocument ( )
280
+ expect ( queryByText ( "fail" ) ) . toBeNull ( )
281
+ fireEvent . click ( getByText ( "ok" ) )
282
+ await waitForElement ( ( ) => getByText ( "fail" ) )
283
+ expect ( queryByText ( "ok" ) ) . toBeNull ( )
284
+ expect ( queryByText ( "fail" ) ) . toBeInTheDocument ( )
285
+ } )
286
+
287
+ test ( "Async.Resolved with persist renders old data on error" , async ( ) => {
288
+ const promiseFn = ( ) => resolveTo ( "ok" )
289
+ const deferFn = ( ) => rejectTo ( "fail" )
290
+ const { getByText, queryByText } = render (
291
+ < Async promiseFn = { promiseFn } deferFn = { deferFn } >
292
+ < Async . Resolved persist > { ( data , { run } ) => < button onClick = { run } > { data } </ button > } </ Async . Resolved >
293
+ < Async . Rejected > { error => error } </ Async . Rejected >
294
+ </ Async >
295
+ )
296
+ expect ( queryByText ( "ok" ) ) . toBeNull ( )
297
+ await waitForElement ( ( ) => getByText ( "ok" ) )
298
+ expect ( queryByText ( "ok" ) ) . toBeInTheDocument ( )
299
+ expect ( queryByText ( "fail" ) ) . toBeNull ( )
300
+ fireEvent . click ( getByText ( "ok" ) )
301
+ await waitForElement ( ( ) => getByText ( "fail" ) )
302
+ expect ( queryByText ( "ok" ) ) . toBeInTheDocument ( )
303
+ expect ( queryByText ( "fail" ) ) . toBeInTheDocument ( )
278
304
} )
279
305
280
306
test ( "Async.Loading renders only while the promise is loading" , async ( ) => {
@@ -373,43 +399,3 @@ test("An unrelated change in props does not update the Context", async () => {
373
399
)
374
400
expect ( one ) . toBe ( two )
375
401
} )
376
-
377
- test ( "Async.Resolved does not render after deferFn rejection" , async ( ) => {
378
- const promiseFn = ( ) => resolveTo ( "ok" )
379
- const deferFn = ( ) => rejectTo ( "notok" )
380
- const { getByText, queryByText } = render (
381
- < Async promiseFn = { promiseFn } deferFn = { deferFn } >
382
- < Async . Rejected > fail</ Async . Rejected >
383
- < Async . Resolved > { ( data , { run } ) => < button onClick = { run } > next</ button > } </ Async . Resolved >
384
- </ Async >
385
- )
386
-
387
- expect ( queryByText ( "next" ) ) . toBeNull ( )
388
- await waitForElement ( ( ) => getByText ( "next" ) )
389
- expect ( queryByText ( "next" ) ) . toBeInTheDocument ( )
390
- expect ( queryByText ( "fail" ) ) . toBeNull ( )
391
- fireEvent . click ( getByText ( "next" ) )
392
- await waitForElement ( ( ) => getByText ( "fail" ) )
393
- expect ( queryByText ( "next" ) ) . toBeNull ( )
394
- expect ( queryByText ( "fail" ) ) . toBeInTheDocument ( )
395
- } )
396
-
397
- test ( "Async.Resolved renders after deferFn rejection with persist" , async ( ) => {
398
- const promiseFn = ( ) => resolveTo ( "ok" )
399
- const deferFn = ( ) => rejectTo ( "notok" )
400
- const { getByText, queryByText } = render (
401
- < Async promiseFn = { promiseFn } deferFn = { deferFn } >
402
- < Async . Rejected > fail</ Async . Rejected >
403
- < Async . Resolved persist > { ( data , { run } ) => < button onClick = { run } > next</ button > } </ Async . Resolved >
404
- </ Async >
405
- )
406
-
407
- expect ( queryByText ( "next" ) ) . toBeNull ( )
408
- await waitForElement ( ( ) => getByText ( "next" ) )
409
- expect ( queryByText ( "next" ) ) . toBeInTheDocument ( )
410
- expect ( queryByText ( "fail" ) ) . toBeNull ( )
411
- fireEvent . click ( getByText ( "next" ) )
412
- await waitForElement ( ( ) => getByText ( "fail" ) )
413
- expect ( queryByText ( "next" ) ) . toBeInTheDocument ( )
414
- expect ( queryByText ( "fail" ) ) . toBeInTheDocument ( )
415
- } )
0 commit comments