UNPKG

cache-storage

Version:

[ABANDONED] Advanced cache storage for node js

173 lines (163 loc) 5.46 kB
// Generated by CoffeeScript 1.6.3 (function() { var Cache, MemoryStorage, async, cache, expect, fs, path; expect = require('chai').expect; path = require('path'); async = require('async'); fs = null; Cache = require('../../../../../lib/Cache'); MemoryStorage = require('../../../../../Storage/MemoryAsyncStorage'); cache = null; describe('MemoryAsyncStorage', function() { beforeEach(function() { fs = Cache.mockFs({ 'temp': {}, 'file': '' }); return cache = new Cache(new MemoryStorage, 'test'); }); afterEach(function() { return Cache.restoreFs(); }); describe('saving/loading', function() { it('should save true and load it', function(done) { return cache.save('true', true, function() { return cache.load('true', function(err, data) { expect(data).to.be["true"]; return done(); }); }); }); it('should return null if item not exists', function(done) { return cache.load('true', function(err, data) { expect(data).to.be["null"]; return done(); }); }); it('should save true and delete it', function(done) { return cache.save('true', true, function() { return cache.remove('true', function() { return cache.load('true', function(err, data) { expect(data).to.be["null"]; return done(); }); }); }); }); return it('should save true to cache from fallback function in load', function(done) { return cache.load('true', function() { return true; }, function(err, data) { expect(data).to.be["true"]; return done(); }); }); }); return describe('expiration', function() { it('should expire "true" value after file is changed', function(done) { return cache.save('true', true, { files: ['/file'] }, function() { return setTimeout(function() { return cache.load('true', function(err, data) { expect(data).to.be["true"]; fs.writeFileSync('/file', ''); return cache.load('true', function(err, data) { expect(data).to.be["null"]; return done(); }); }); }, 100); }); }); it('should remove all items with tag "article"', function(done) { var data; data = [['one', null, ['article']], ['two', 'two', ['category']], ['three', null, ['article']]]; return async.eachSeries(data, function(item, cb) { return cache.save(item[0], item[0], { tags: item[2] }, function() { return cb(); }); }, function() { return cache.clean({ tags: ['article'] }, function() { return async.eachSeries(data, function(item, cb) { return cache.load(item[0], function(err, data) { expect(data).to.be.equal(item[1]); return cb(); }); }, function() { return done(); }); }); }); }); it('should expire "true" value after 1 second"', function(done) { return cache.save('true', true, { expire: { seconds: 1 } }, function() { return setTimeout(function() { return cache.load('true', function(err, data) { expect(data).to.be["null"]; return done(); }); }, 1100); }); }); it('should expire "true" value after "first" value expire', function(done) { return cache.save('first', 'first', function() { return cache.save('true', true, { items: ['first'] }, function() { return cache.remove('first', function() { return cache.load('true', function(err, data) { expect(data).to.be["null"]; return done(); }); }); }); }); }); it('should expire all items with priority bellow 50', function(done) { return cache.save('one', 'one', { priority: 100 }, function() { return cache.save('two', 'two', { priority: 10 }, function() { return cache.clean({ priority: 50 }, function() { return cache.load('one', function(err, data) { expect(data).to.be.equal('one'); return cache.load('two', function(err, data) { expect(data).to.be["null"]; return done(); }); }); }); }); }); }); return it('should remove all items from cache', function(done) { return cache.save('one', 'one', function() { return cache.save('two', 'two', function() { return cache.clean('all', function() { return cache.load('one', function(err, data) { expect(data).to.be["null"]; return cache.load('two', function(err, data) { expect(data).to.be["null"]; return done(); }); }); }); }); }); }); }); }); }).call(this);