UNPKG

cache-storage

Version:

[ABANDONED] Advanced cache storage for node js

144 lines (134 loc) 4.31 kB
// Generated by CoffeeScript 1.6.3 (function() { var Cache, Storage, cache, expect, fs, moment, storage; expect = require('chai').expect; Cache = require('../../../../../lib/Cache'); Storage = require('../../../../../lib/Storage/Async/Storage'); moment = require('moment'); cache = null; storage = null; fs = null; describe('AsyncStorage', function() { beforeEach(function() { storage = new Storage; cache = new Cache(storage); return fs = Cache.mockFs({ 'file': '' }); }); afterEach(function() { return Cache.restoreFs(); }); describe('#verify()', function() { it('should just return true', function(done) { return storage.verify('random variable', function(err, state) { expect(state).to.be["true"]; return done(); }); }); it('should return false if meta expired', function(done) { return storage.verify({ expire: (new Date).getTime() - 200 }, function(err, state) { expect(state).to.be["false"]; return done(); }); }); it('should return false if dependent meta expired', function(done) { storage.findMeta = function(key, fn) { return fn(null, { expire: (new Date).getTime() - 200 }); }; return storage.verify({ items: ['test'] }, function(err, state) { expect(state).to.be["false"]; return done(); }); }); return it('should return false if file was changed', function(done) { var meta; meta = { files: { '/file': fs.statSync('/file').mtime.getTime() } }; return setTimeout(function() { return storage.verify(meta, function(err, state) { expect(state).to.be["true"]; fs.writeFileSync('/file', ''); return storage.verify(meta, function(err, state) { expect(state).to.be["false"]; return done(); }); }); }, 100); }); }); return describe('#parseDependencies()', function() { it('should return empty object for unknown type of dependencies', function(done) { return storage.parseDependencies('random variable', function(err, dependencies) { expect(dependencies).to.be.eql({}); return done(); }); }); it('should add priority into dependencies', function(done) { return storage.parseDependencies({ priority: 100 }, function(err, dependencies) { expect(dependencies).to.be.eql({ priority: 100 }); return done(); }); }); it('should add tags into dependencies', function(done) { return storage.parseDependencies({ tags: ['comment', 'article'] }, function(err, dependencies) { expect(dependencies).to.be.eql({ tags: ['comment', 'article'] }); return done(); }); }); it('should add dependent item into dependencies', function(done) { return storage.parseDependencies({ items: ['first', 'second'] }, function(err, dependencies) { expect(dependencies).to.be.eql({ items: [cache.generateKey('first'), cache.generateKey('second')] }); return done(); }); }); it('should add date from string into dependencies', function(done) { var time; time = '2014-01-14 20:10'; return storage.parseDependencies({ expire: time }, function(err, dependencies) { expect(dependencies).to.be.eql({ expire: moment(time, Cache.TIME_FORMAT).valueOf() }); return done(); }); }); return it('should add file into dependencies', function(done) { var time; time = fs.statSync('/file').mtime.getTime(); return storage.parseDependencies({ files: ['/file'] }, function(err, dependencies) { expect(dependencies).to.be.eql({ files: { '/file': time } }); return done(); }); }); }); }); }).call(this);