@@ -521,6 +521,82 @@ describe("client.refetchQueries", () => {
521
521
resolve ( ) ;
522
522
} ) ;
523
523
524
+ itAsync ( 'includes queries named in refetchQueries even if they have no observers' , async ( resolve , reject ) => {
525
+ const client = makeClient ( ) ;
526
+
527
+ const aObs = client . watchQuery ( { query : aQuery } ) ;
528
+ const bObs = client . watchQuery ( { query : bQuery } ) ;
529
+ const abObs = client . watchQuery ( { query : abQuery } ) ;
530
+
531
+ // These ObservableQuery objects have no observers yet, but should
532
+ // nevertheless be refetched if identified explicitly in an options.include
533
+ // array passed to client.refetchQueries.
534
+ expect ( aObs . hasObservers ( ) ) . toBe ( false ) ;
535
+ expect ( bObs . hasObservers ( ) ) . toBe ( false ) ;
536
+ expect ( abObs . hasObservers ( ) ) . toBe ( false ) ;
537
+
538
+ const activeResults = await client . refetchQueries ( {
539
+ include : [ "A" , abQuery ] ,
540
+
541
+ onQueryUpdated ( obs , diff ) {
542
+ if ( obs === aObs ) {
543
+ expect ( diff . complete ) . toBe ( false ) ;
544
+ expect ( diff . result ) . toEqual ( { } ) ;
545
+ } else if ( obs === abObs ) {
546
+ expect ( diff . complete ) . toBe ( false ) ;
547
+ expect ( diff . result ) . toEqual ( { } ) ;
548
+ } else {
549
+ reject ( `unexpected ObservableQuery ${
550
+ obs . queryId
551
+ } with name ${ obs . queryName } `) ;
552
+ }
553
+ return Promise . resolve ( diff . result ) ;
554
+ } ,
555
+ } ) ;
556
+
557
+ sortObjects ( activeResults ) ;
558
+ expect ( activeResults ) . toEqual ( [
559
+ { } ,
560
+ { } ,
561
+ ] ) ;
562
+
563
+ subs . push ( abObs . subscribe ( {
564
+ next ( result ) {
565
+ expect ( result . data ) . toEqual ( { a : "A" , b : "B" } ) ;
566
+
567
+ client . refetchQueries ( {
568
+ include : [ aQuery , "B" ] ,
569
+
570
+ onQueryUpdated ( obs , diff ) {
571
+ if ( obs === aObs ) {
572
+ expect ( diff . result ) . toEqual ( { a : "A" } ) ;
573
+ } else if ( obs === bObs ) {
574
+ expect ( diff . result ) . toEqual ( { b : "B" } ) ;
575
+ } else if ( obs === abObs ) {
576
+ expect ( diff . result ) . toEqual ( { a : "A" , b : "B" } ) ;
577
+ } else {
578
+ reject ( `unexpected ObservableQuery ${
579
+ obs . queryId
580
+ } with name ${ obs . queryName } `) ;
581
+ }
582
+ return Promise . resolve ( diff . result ) ;
583
+ } ,
584
+
585
+ } ) . then ( resultsAfterSubscribe => {
586
+ sortObjects ( resultsAfterSubscribe ) ;
587
+ expect ( resultsAfterSubscribe ) . toEqual ( [
588
+ { a : "A" } ,
589
+ { b : "B" } ,
590
+ ] ) ;
591
+
592
+ unsubscribe ( ) ;
593
+ } ) . then ( resolve , reject ) ;
594
+ } ,
595
+ } ) ) ;
596
+
597
+ expect ( abObs . hasObservers ( ) ) . toBe ( true ) ;
598
+ } ) ;
599
+
524
600
itAsync ( 'should not include unwatched single queries' , async ( resolve , reject ) => {
525
601
const client = makeClient ( ) ;
526
602
const [
0 commit comments