cache-storage
Version:
[ABANDONED] Advanced cache storage for node js
144 lines (134 loc) • 4.31 kB
JavaScript
// 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);