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