Skip to content

Commit 03fa45a

Browse files
committed
test utility
1 parent d20ddbf commit 03fa45a

File tree

1 file changed

+26
-53
lines changed

1 file changed

+26
-53
lines changed

src/__tests__/dataloader-test.js

Lines changed: 26 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@ import { expect } from 'chai';
1212
import { describe, it } from 'mocha';
1313
import 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+
1524
describe('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', () => {
334323
describe('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', () => {
446423
describe('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

Comments
 (0)