lru-memoizer.sync.clone.test.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. const memoizer = require('./..');
  2. const assert = require('chai').assert;
  3. describe('lru-memoizer sync (clone)', () => {
  4. describe('call', () => {
  5. let loadTimes = 0, memoized;
  6. beforeEach(() => {
  7. loadTimes = 0;
  8. memoized = memoizer.sync({
  9. load: (key) => {
  10. loadTimes++;
  11. return { foo: key , buffer: Buffer.from('1234') };
  12. },
  13. hash: (key) => {
  14. return key;
  15. },
  16. clone: true
  17. });
  18. });
  19. it('should return a clone every time with the same cached structure', () => {
  20. const r1 = memoized('bar');
  21. assert.strictEqual(loadTimes, 1);
  22. assert.equal(r1.foo, 'bar');
  23. r1.foo = 'bax';
  24. const r2 = memoized('bar');
  25. assert.strictEqual(loadTimes, 1);
  26. assert.equal(r2.foo, 'bar');
  27. assert.notStrictEqual(r1, r2);
  28. assert.notEqual(r1, r2);
  29. });
  30. });
  31. describe('Promise', () => {
  32. let loadTimes = 0, memoized;
  33. beforeEach(() => {
  34. loadTimes = 0;
  35. memoized = memoizer.sync({
  36. load: (key) => {
  37. loadTimes++;
  38. return Promise.resolve({ foo: key, buffer: Buffer.from('1234') });
  39. },
  40. hash: (key) => {
  41. return key;
  42. },
  43. clone: true
  44. });
  45. });
  46. it('should return a clone every time with the same cached structure', (done) => {
  47. memoized('bar').then(r1 => {
  48. assert.strictEqual(loadTimes, 1);
  49. assert.equal(r1.foo, 'bar');
  50. r1.foo = 'bax';
  51. memoized('bar').then(r2 => {
  52. assert.strictEqual(loadTimes, 1);
  53. assert.equal(r2.foo, 'bar');
  54. assert.notStrictEqual(r1, r2);
  55. assert.notEqual(r1, r2);
  56. done();
  57. });
  58. })
  59. .catch(done);
  60. });
  61. });
  62. });