API/api.medcify.app/node_modules/lru-memoizer/test/lru-memoizer.sync.clone.test.js

77 lines
1.7 KiB
JavaScript
Raw Normal View History

2022-09-26 06:11:44 +00:00
const memoizer = require('./..');
const assert = require('chai').assert;
describe('lru-memoizer sync (clone)', () => {
describe('call', () => {
let loadTimes = 0, memoized;
beforeEach(() => {
loadTimes = 0;
memoized = memoizer.sync({
load: (key) => {
loadTimes++;
return { foo: key , buffer: Buffer.from('1234') };
},
hash: (key) => {
return key;
},
clone: true
});
});
it('should return a clone every time with the same cached structure', () => {
const r1 = memoized('bar');
assert.strictEqual(loadTimes, 1);
assert.equal(r1.foo, 'bar');
r1.foo = 'bax';
const r2 = memoized('bar');
assert.strictEqual(loadTimes, 1);
assert.equal(r2.foo, 'bar');
assert.notStrictEqual(r1, r2);
assert.notEqual(r1, r2);
});
});
describe('Promise', () => {
let loadTimes = 0, memoized;
beforeEach(() => {
loadTimes = 0;
memoized = memoizer.sync({
load: (key) => {
loadTimes++;
return Promise.resolve({ foo: key, buffer: Buffer.from('1234') });
},
hash: (key) => {
return key;
},
clone: true
});
});
it('should return a clone every time with the same cached structure', (done) => {
memoized('bar').then(r1 => {
assert.strictEqual(loadTimes, 1);
assert.equal(r1.foo, 'bar');
r1.foo = 'bax';
memoized('bar').then(r2 => {
assert.strictEqual(loadTimes, 1);
assert.equal(r2.foo, 'bar');
assert.notStrictEqual(r1, r2);
assert.notEqual(r1, r2);
done();
});
})
.catch(done);
});
});
});