@@ -442,9 +442,9 @@ describe('useLazyLoadQueryNode', () => {
442
442
expect ( release ) . toBeCalledTimes ( 2 ) ;
443
443
444
444
// Assert request in flight is cancelled
445
- expect ( environment . mock . isLoading ( query . request . node , variables ) ) . toEqual (
446
- false ,
447
- ) ;
445
+ expect (
446
+ environment . mock . isLoading ( query . request . node , variables , { force : true } ) ,
447
+ ) . toEqual ( false ) ;
448
448
} ) ;
449
449
450
450
it ( 'disposes ongoing network request when component unmounts after committing' , ( ) => {
@@ -477,9 +477,40 @@ describe('useLazyLoadQueryNode', () => {
477
477
// Assert data is released
478
478
expect ( release ) . toBeCalledTimes ( 1 ) ;
479
479
// Assert request in flight is cancelled
480
- expect ( environment . mock . isLoading ( query . request . node , variables ) ) . toEqual (
481
- false ,
482
- ) ;
480
+ expect (
481
+ environment . mock . isLoading ( query . request . node , variables , { force : true } ) ,
482
+ ) . toEqual ( false ) ;
483
+ } ) ;
484
+
485
+ it ( 'cancels network request when temporarily retained component that never commits is disposed of after timeout' , ( ) => {
486
+ const instance = render ( environment , < Container variables = { variables } /> ) ;
487
+
488
+ expect ( instance . toJSON ( ) ) . toEqual ( 'Fallback' ) ;
489
+ expectToHaveFetched ( environment , query ) ;
490
+ expect ( renderFn ) . not . toBeCalled ( ) ;
491
+ expect ( environment . retain ) . toHaveBeenCalledTimes ( 1 ) ;
492
+ ReactTestRenderer . act ( ( ) => {
493
+ instance . unmount ( ) ;
494
+ } ) ;
495
+ // Resolve a payload but don't complete the network request
496
+ environment . mock . nextValue ( gqlQuery , {
497
+ data : {
498
+ node : {
499
+ __typename : 'User' ,
500
+ id : variables . id ,
501
+ name : 'Alice' ,
502
+ } ,
503
+ } ,
504
+ } ) ;
505
+
506
+ // Trigger releasing of the temporary retain
507
+ jest . runAllTimers ( ) ;
508
+ // Assert data is released
509
+ expect ( release ) . toBeCalledTimes ( 1 ) ;
510
+ // Assert request in flight is cancelled
511
+ expect (
512
+ environment . mock . isLoading ( query . request . node , variables , { force : true } ) ,
513
+ ) . toEqual ( false ) ;
483
514
} ) ;
484
515
485
516
describe ( 'partial rendering' , ( ) => {
0 commit comments