Skip to content

Commit 96144f2

Browse files
committed
Improve test coverage
1 parent 06a3bf1 commit 96144f2

File tree

1 file changed

+33
-14
lines changed

1 file changed

+33
-14
lines changed

src/__tests__/dataloader-test.js

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -420,31 +420,47 @@ describe('Accepts options', () => {
420420

421421
describe('Accepts object key in custom cacheKey function', () => {
422422
function cacheKey(key) {
423-
var result;
424-
if (typeof key === 'object') {
425-
result = Object.keys(key).sort().map(k => k + ':' + key[k]).join('-');
426-
} else {
427-
result = String(key);
428-
}
429-
return result;
423+
return Object.keys(key).sort().map(k => k + ':' + key[k]).join();
430424
}
431425

432-
it('Accepts objects with simple key', async () => {
433-
var keyA = '1234';
426+
it('Accepts objects with a complex key', async () => {
434427
var identityLoadCalls = [];
435428
var identityLoader = new DataLoader(keys => {
436429
identityLoadCalls.push(keys);
437430
return Promise.resolve(keys);
438431
}, { cacheKeyFn: cacheKey });
439432

440-
var valueA = await identityLoader.load(keyA);
441-
expect(valueA).to.equal(keyA);
433+
var key1 = { id: 123 };
434+
var key2 = { id: 123 };
435+
436+
var value1 = await identityLoader.load(key1);
437+
var value2 = await identityLoader.load(key2);
438+
439+
expect(identityLoadCalls).to.deep.equal([ [ key1 ] ]);
440+
expect(value1).to.equal(key1);
441+
expect(value2).to.equal(key1);
442442
});
443443

444-
it('Accepts objects with different order of keys', async () => {
445-
var keyA = { a: 123, b: 321 };
446-
var keyB = { b: 321, a: 123 };
444+
it('Clears objects with complex key', async () => {
445+
var identityLoadCalls = [];
446+
var identityLoader = new DataLoader(keys => {
447+
identityLoadCalls.push(keys);
448+
return Promise.resolve(keys);
449+
}, { cacheKeyFn: cacheKey });
450+
451+
var key1 = { id: 123 };
452+
var key2 = { id: 123 };
453+
454+
var value1 = await identityLoader.load(key1);
455+
identityLoader.clear(key2); // clear equivalent object key
456+
var value2 = await identityLoader.load(key1);
457+
458+
expect(identityLoadCalls).to.deep.equal([ [ key1 ], [ key1 ] ]);
459+
expect(value1).to.equal(key1);
460+
expect(value2).to.equal(key1);
461+
});
447462

463+
it('Accepts objects with different order of keys', async () => {
448464
var identityLoadCalls = [];
449465
var identityLoader = new DataLoader(keys => {
450466
identityLoadCalls.push(keys);
@@ -453,6 +469,9 @@ describe('Accepts options', () => {
453469

454470
// Fetches as expected
455471

472+
var keyA = { a: 123, b: 321 };
473+
var keyB = { b: 321, a: 123 };
474+
456475
var [ valueA, valueB ] = await Promise.all([
457476
identityLoader.load(keyA),
458477
identityLoader.load(keyB),

0 commit comments

Comments
 (0)