@@ -373,3 +373,43 @@ test("An unrelated change in props does not update the Context", async () => {
373373 )
374374 expect ( one ) . toBe ( two )
375375} )
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