lru-memoizer.sync.freeze.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const memoizer = require('./..');
  2. const assert = require('chai').assert;
  3. describe('lru-memoizer sync (freeze)', () => {
  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. freeze: true
  17. });
  18. });
  19. it('should return a freeze every time with the same cached structure', () => {
  20. const r1 = memoized('bar');
  21. assert.strictEqual(loadTimes, 1);
  22. assert.equal(r1.foo, 'bar');
  23. assert.isFrozen(r1);
  24. const r2 = memoized('bar');
  25. assert.strictEqual(loadTimes, 1);
  26. assert.equal(r2.foo, 'bar');
  27. assert.isFrozen(r2);
  28. });
  29. });
  30. describe('Promise', () => {
  31. let loadTimes = 0, memoized;
  32. beforeEach(() => {
  33. loadTimes = 0;
  34. memoized = memoizer.sync({
  35. load: (key) => {
  36. loadTimes++;
  37. return Promise.resolve({ foo: key, buffer: Buffer.from('1234') });
  38. },
  39. hash: (key) => {
  40. return key;
  41. },
  42. freeze: true
  43. });
  44. });
  45. it('should return a freeze every time with the same cached structure', (done) => {
  46. memoized('bar').then(r1 => {
  47. assert.strictEqual(loadTimes, 1);
  48. assert.equal(r1.foo, 'bar');
  49. assert.isFrozen(r1);
  50. memoized('bar').then(r2 => {
  51. assert.strictEqual(loadTimes, 1);
  52. assert.equal(r2.foo, 'bar');
  53. assert.isFrozen(r2);
  54. done();
  55. });
  56. })
  57. .catch(done);
  58. });
  59. });
  60. });