@@ -3,10 +3,8 @@ import { createQuery, defaultFetcher, FetcherAdditional } from 'query:index'
33
44describe . concurrent ( 'query' , function ( ) {
55 it ( 'can query resources' , async ( { expect } ) => {
6- async function fetcher ( key : string ) {
7- await new Promise ( ( r ) => setTimeout ( r , 200 ) )
8-
9- return key
6+ function fetcher ( key : string ) {
7+ return Promise . resolve ( key )
108 }
119
1210 const { query } = createQuery ( { fetcher } )
@@ -52,19 +50,31 @@ describe.concurrent('query', function () {
5250 expect ( resource ) . toBe ( 'example' )
5351 } )
5452
55- it ( 'returns the same promise when resources are resolving' , async ( { expect } ) => {
53+ it ( 'returns the same promise when resources are resolving' , async ( { expect, signal } ) => {
54+ const controller = new AbortController ( )
55+ const s = AbortSignal . any ( [ controller . signal , signal ] )
56+
5657 let times = 0
57- async function fetcher ( ) {
58- await new Promise ( ( r ) => setTimeout ( r , 200 ) )
59- times ++
60- return 'example'
58+
59+ function fetcher ( ) {
60+ return new Promise ( function ( resolve ) {
61+ s . addEventListener ( 'abort' , function ( ) {
62+ times ++
63+ resolve ( 'example' )
64+ } )
65+ } )
6166 }
6267
6368 const { query } = createQuery ( { fetcher } )
6469
65- void query < string > ( 'example-key' )
66- await query < string > ( 'example-key' )
70+ const a = query < string > ( 'example-key' )
71+ const b = query < string > ( 'example-key' )
72+
73+ controller . abort ( )
74+
75+ await Promise . all ( [ a , b ] )
6776
77+ expect ( a ) . toBe ( b )
6878 expect ( times ) . toBe ( 1 )
6979 } )
7080
@@ -243,13 +253,10 @@ describe.concurrent('query', function () {
243253 const err = new Error ( 'aborted' )
244254
245255 function fetcher ( _key : string , { signal } : FetcherAdditional ) {
246- return new Promise ( function ( resolve , reject ) {
256+ return new Promise ( function ( _resolve , reject ) {
247257 signal . addEventListener ( 'abort' , function ( ) {
248258 reject ( err )
249259 } )
250- void new Promise ( ( r ) => setTimeout ( r , 200 ) ) . then ( function ( ) {
251- resolve ( 'example' )
252- } )
253260 } )
254261 }
255262
@@ -276,13 +283,10 @@ describe.concurrent('query', function () {
276283 const err = new Error ( 'aborted' )
277284
278285 function fetcher ( _key : string , { signal } : FetcherAdditional ) {
279- return new Promise ( function ( resolve , reject ) {
286+ return new Promise ( function ( _resolve , reject ) {
280287 signal . addEventListener ( 'abort' , function ( ) {
281288 reject ( err )
282289 } )
283- void new Promise ( ( r ) => setTimeout ( r , 200 ) ) . then ( function ( ) {
284- resolve ( 'example' )
285- } )
286290 } )
287291 }
288292
@@ -405,13 +409,10 @@ describe.concurrent('query', function () {
405409 const err = new Error ( 'aborted' )
406410
407411 function fetcher ( _key : string , { signal } : FetcherAdditional ) {
408- return new Promise ( function ( resolve , reject ) {
412+ return new Promise ( function ( _resolve , reject ) {
409413 signal . addEventListener ( 'abort' , function ( ) {
410414 reject ( err )
411415 } )
412- void new Promise ( ( r ) => setTimeout ( r , 200 ) ) . then ( function ( ) {
413- resolve ( 'example' )
414- } )
415416 } )
416417 }
417418
@@ -422,17 +423,14 @@ describe.concurrent('query', function () {
422423 await expect ( ( ) => result ) . rejects . toThrowError ( err )
423424 } )
424425
425- it ( 'can abort query 2 ' , async ( { expect } ) => {
426+ it ( 'can abort query with array key ' , async ( { expect } ) => {
426427 const err = new Error ( 'aborted' )
427428
428429 function fetcher ( _key : string , { signal } : FetcherAdditional ) {
429- return new Promise ( function ( resolve , reject ) {
430+ return new Promise ( function ( _resolve , reject ) {
430431 signal . addEventListener ( 'abort' , function ( ) {
431432 reject ( err )
432433 } )
433- void new Promise ( ( r ) => setTimeout ( r , 200 ) ) . then ( function ( ) {
434- resolve ( 'example' )
435- } )
436434 } )
437435 }
438436
@@ -443,17 +441,14 @@ describe.concurrent('query', function () {
443441 await expect ( ( ) => result ) . rejects . toThrowError ( err )
444442 } )
445443
446- it ( 'can abort query 3 ' , async ( { expect } ) => {
444+ it ( 'can abort all queries ' , async ( { expect } ) => {
447445 const err = new Error ( 'aborted' )
448446
449447 function fetcher ( _key : string , { signal } : FetcherAdditional ) {
450- return new Promise ( function ( resolve , reject ) {
448+ return new Promise ( function ( _resolve , reject ) {
451449 signal . addEventListener ( 'abort' , function ( ) {
452450 reject ( err )
453451 } )
454- void new Promise ( ( r ) => setTimeout ( r , 200 ) ) . then ( function ( ) {
455- resolve ( 'example' )
456- } )
457452 } )
458453 }
459454
@@ -749,24 +744,30 @@ describe.concurrent('query', function () {
749744 expect ( event ) . toBeDefined ( )
750745 } )
751746
752- it ( 'uses the same promises for the same result' , async ( { expect } ) => {
753- async function fetcher ( ) {
754- await new Promise ( ( r ) => setTimeout ( r , 100 ) )
755- return 'works'
747+ it ( 'uses the same promises for the same result' , ( { expect, signal } ) => {
748+ const controller = new AbortController ( )
749+ const s = AbortSignal . any ( [ controller . signal , signal ] )
750+
751+ function fetcher ( ) {
752+ return new Promise ( function ( resolve ) {
753+ s . addEventListener ( 'abort' , function ( ) {
754+ resolve ( 'works' )
755+ } )
756+ } )
756757 }
757758
758759 const { query } = createQuery ( { fetcher } )
759760
760761 const promise = query < string > ( '/' )
761762 const promise2 = query < string > ( '/' )
762763
763- expect ( promise === promise2 ) . toBeTruthy ( )
764+ expect ( promise ) . toBe ( promise2 )
764765
765- await new Promise ( ( r ) => setTimeout ( r , 150 ) )
766+ controller . abort ( )
766767
767768 const promise3 = query < string > ( '/' )
768769
769- expect ( promise === promise3 ) . toBeTruthy ( )
770+ expect ( promise ) . toBe ( promise3 )
770771 } )
771772
772773 it ( 'can use multiple queries' , async function ( { expect } ) {
0 commit comments