@@ -12,6 +12,15 @@ import { expect } from 'chai';
1212import { describe , it } from 'mocha' ;
1313import DataLoader from '../' ;
1414
15+ function idLoader ( options ) {
16+ var loadCalls = [ ] ;
17+ var identityLoader = new DataLoader ( keys => {
18+ loadCalls . push ( keys ) ;
19+ return Promise . resolve ( keys ) ;
20+ } , options ) ;
21+ return [ identityLoader , loadCalls ] ;
22+ }
23+
1524describe ( 'Primary API' , ( ) => {
1625
1726 it ( 'builds a really really simple data loader' , async ( ) => {
@@ -41,11 +50,7 @@ describe('Primary API', () => {
4150 } ) ;
4251
4352 it ( 'batches multiple requests' , async ( ) => {
44- var loadCalls = [ ] ;
45- var identityLoader = new DataLoader ( keys => {
46- loadCalls . push ( keys ) ;
47- return Promise . resolve ( keys ) ;
48- } ) ;
53+ var [ identityLoader , loadCalls ] = idLoader ( ) ;
4954
5055 var promise1 = identityLoader . load ( 1 ) ;
5156 var promise2 = identityLoader . load ( 2 ) ;
@@ -58,11 +63,7 @@ describe('Primary API', () => {
5863 } ) ;
5964
6065 it ( 'coalesces identical requests' , async ( ) => {
61- var loadCalls = [ ] ;
62- var identityLoader = new DataLoader ( keys => {
63- loadCalls . push ( keys ) ;
64- return Promise . resolve ( keys ) ;
65- } ) ;
66+ var [ identityLoader , loadCalls ] = idLoader ( ) ;
6667
6768 var promise1a = identityLoader . load ( 1 ) ;
6869 var promise1b = identityLoader . load ( 1 ) ;
@@ -77,11 +78,7 @@ describe('Primary API', () => {
7778 } ) ;
7879
7980 it ( 'caches repeated requests' , async ( ) => {
80- var loadCalls = [ ] ;
81- var identityLoader = new DataLoader ( keys => {
82- loadCalls . push ( keys ) ;
83- return Promise . resolve ( keys ) ;
84- } ) ;
81+ var [ identityLoader , loadCalls ] = idLoader ( ) ;
8582
8683 var [ a , b ] = await Promise . all ( [
8784 identityLoader . load ( 'A' ) ,
@@ -117,11 +114,7 @@ describe('Primary API', () => {
117114 } ) ;
118115
119116 it ( 'clears single value in loader' , async ( ) => {
120- var loadCalls = [ ] ;
121- var identityLoader = new DataLoader ( keys => {
122- loadCalls . push ( keys ) ;
123- return Promise . resolve ( keys ) ;
124- } ) ;
117+ var [ identityLoader , loadCalls ] = idLoader ( ) ;
125118
126119 var [ a , b ] = await Promise . all ( [
127120 identityLoader . load ( 'A' ) ,
@@ -147,11 +140,7 @@ describe('Primary API', () => {
147140 } ) ;
148141
149142 it ( 'clears all values in loader' , async ( ) => {
150- var loadCalls = [ ] ;
151- var identityLoader = new DataLoader ( keys => {
152- loadCalls . push ( keys ) ;
153- return Promise . resolve ( keys ) ;
154- } ) ;
143+ var [ identityLoader , loadCalls ] = idLoader ( ) ;
155144
156145 var [ a , b ] = await Promise . all ( [
157146 identityLoader . load ( 'A' ) ,
@@ -334,15 +323,11 @@ describe('Represents Errors', () => {
334323describe ( 'Accepts any kind of key' , ( ) => {
335324
336325 it ( 'Accepts objects as keys' , async ( ) => {
326+ var [ identityLoader , loadCalls ] = idLoader ( ) ;
327+
337328 var keyA = { } ;
338329 var keyB = { } ;
339330
340- var identityLoadCalls = [ ] ;
341- var identityLoader = new DataLoader ( keys => {
342- identityLoadCalls . push ( keys ) ;
343- return Promise . resolve ( keys ) ;
344- } ) ;
345-
346331 // Fetches as expected
347332
348333 var [ valueA , valueB ] = await Promise . all ( [
@@ -353,10 +338,10 @@ describe('Accepts any kind of key', () => {
353338 expect ( valueA ) . to . equal ( keyA ) ;
354339 expect ( valueB ) . to . equal ( keyB ) ;
355340
356- expect ( identityLoadCalls ) . to . have . length ( 1 ) ;
357- expect ( identityLoadCalls [ 0 ] ) . to . have . length ( 2 ) ;
358- expect ( identityLoadCalls [ 0 ] [ 0 ] ) . to . equal ( keyA ) ;
359- expect ( identityLoadCalls [ 0 ] [ 1 ] ) . to . equal ( keyB ) ;
341+ expect ( loadCalls ) . to . have . length ( 1 ) ;
342+ expect ( loadCalls [ 0 ] ) . to . have . length ( 2 ) ;
343+ expect ( loadCalls [ 0 ] [ 0 ] ) . to . equal ( keyA ) ;
344+ expect ( loadCalls [ 0 ] [ 1 ] ) . to . equal ( keyB ) ;
360345
361346 // Caching
362347
@@ -370,9 +355,9 @@ describe('Accepts any kind of key', () => {
370355 expect ( valueA2 ) . to . equal ( keyA ) ;
371356 expect ( valueB2 ) . to . equal ( keyB ) ;
372357
373- expect ( identityLoadCalls ) . to . have . length ( 2 ) ;
374- expect ( identityLoadCalls [ 1 ] ) . to . have . length ( 1 ) ;
375- expect ( identityLoadCalls [ 1 ] [ 0 ] ) . to . equal ( keyA ) ;
358+ expect ( loadCalls ) . to . have . length ( 2 ) ;
359+ expect ( loadCalls [ 1 ] ) . to . have . length ( 1 ) ;
360+ expect ( loadCalls [ 1 ] [ 0 ] ) . to . equal ( keyA ) ;
376361
377362 } ) ;
378363
@@ -382,11 +367,7 @@ describe('Accepts options', () => {
382367
383368 // Note: mirrors 'batches multiple requests' above.
384369 it ( 'May disable batching' , async ( ) => {
385- var loadCalls = [ ] ;
386- var identityLoader = new DataLoader ( keys => {
387- loadCalls . push ( keys ) ;
388- return Promise . resolve ( keys ) ;
389- } , { batch : false } ) ;
370+ var [ identityLoader , loadCalls ] = idLoader ( { batch : false } ) ;
390371
391372 var promise1 = identityLoader . load ( 1 ) ;
392373 var promise2 = identityLoader . load ( 2 ) ;
@@ -400,11 +381,7 @@ describe('Accepts options', () => {
400381
401382 // Note: mirror's 'caches repeated requests' above.
402383 it ( 'May disable caching' , async ( ) => {
403- var loadCalls = [ ] ;
404- var identityLoader = new DataLoader ( keys => {
405- loadCalls . push ( keys ) ;
406- return Promise . resolve ( keys ) ;
407- } , { cache : false } ) ;
384+ var [ identityLoader , loadCalls ] = idLoader ( { cache : false } ) ;
408385
409386 var [ a , b ] = await Promise . all ( [
410387 identityLoader . load ( 'A' ) ,
@@ -446,11 +423,7 @@ describe('Accepts options', () => {
446423describe ( 'It is resilient to job queue ordering' , ( ) => {
447424
448425 it ( 'batches loads occuring within promises' , async ( ) => {
449- var loadCalls = [ ] ;
450- var identityLoader = new DataLoader ( keys => {
451- loadCalls . push ( keys ) ;
452- return Promise . resolve ( keys ) ;
453- } ) ;
426+ var [ identityLoader , loadCalls ] = idLoader ( ) ;
454427
455428 await Promise . all ( [
456429 identityLoader . load ( 'A' ) ,
0 commit comments