Comparing version 2.2.0 to 2.2.1
@@ -32,7 +32,6 @@ // Load modules | ||
} | ||
else if (typeof engine === 'function') { | ||
else { | ||
Hoek.assert(typeof engine === 'function', 'Invalid engine configuration'); | ||
this.connection = new engine(settings); | ||
} | ||
Hoek.assert(this.connection, 'Invalid engine configuration'); | ||
}; | ||
@@ -74,3 +73,3 @@ | ||
if (key === null) { | ||
if (!key) { | ||
// null key not allowed | ||
@@ -80,3 +79,3 @@ return callback(null, null); | ||
if (!key || !key.id || !key.segment) { | ||
if (!key.id || !key.segment) { | ||
return callback(new Error('Invalid key')); | ||
@@ -83,0 +82,0 @@ } |
@@ -111,6 +111,3 @@ // Load modules | ||
if (!cached || | ||
cached.item === undefined || | ||
cached.item === null) { | ||
if (!cached) { | ||
report = { msec: timer.elapsed() }; | ||
@@ -146,14 +143,14 @@ return validate(); | ||
var timerFunc = function () { | ||
cached.ttl -= self.rule.staleTimeout; // Adjust TTL for when the timeout is invoked (staleTimeout must be valid if isStale is true) | ||
if (cached.ttl > 0) { | ||
var timerFunc = function () { | ||
if (wasCallbackCalled) { | ||
return; | ||
} | ||
if (wasCallbackCalled) { | ||
return; | ||
} | ||
wasCallbackCalled = true; | ||
return callback(null, cached.item, cached, report); | ||
}; | ||
cached.ttl -= self.rule.staleTimeout; // Adjust TTL for when the timeout is invoked (staleTimeout must be valid if isStale is true) | ||
if (cached.ttl > 0) { | ||
wasCallbackCalled = true; | ||
return callback(null, cached.item, cached, report); | ||
}; | ||
setTimeout(timerFunc, self.rule.staleTimeout); | ||
@@ -160,0 +157,0 @@ } |
{ | ||
"name": "catbox", | ||
"description": "Multi-strategy object caching service", | ||
"version": "2.2.0", | ||
"version": "2.2.1", | ||
"author": "Eran Hammer <eran@hueniverse.com> (http://hueniverse.com)", | ||
@@ -18,6 +18,6 @@ "contributors": [ | ||
"dependencies": { | ||
"hoek": "1.x.x" | ||
"hoek": "2.x.x" | ||
}, | ||
"devDependencies": { | ||
"lab": "1.x.x" | ||
"lab": "3.x.x" | ||
}, | ||
@@ -24,0 +24,0 @@ "scripts": { |
@@ -226,2 +226,28 @@ // Load modules | ||
it('returns nothing when item is not found (undefined item)', function (done) { | ||
var engine = { | ||
start: function (callback) { | ||
callback(); | ||
}, | ||
isReady: function () { | ||
return true; | ||
}, | ||
get: function (key, callback) { | ||
callback(null, { item: undefined }); | ||
} | ||
}; | ||
var client = new Catbox.Client(engine); | ||
client.get({ id: 'id', segment: 'segment' }, function (err, cached) { | ||
expect(err).to.equal(null); | ||
expect(cached).to.equal(null); | ||
done(); | ||
}); | ||
}); | ||
it('returns falsey items', function (done) { | ||
@@ -287,2 +313,18 @@ | ||
}); | ||
it('errors on empty key', function (done) { | ||
var client = new Catbox.Client('../test/import'); | ||
client.start(function (err) { | ||
expect(err).to.not.exist; | ||
client.get({}, function (err) { | ||
expect(err).to.exist; | ||
expect(err.message).to.equal('Invalid key'); | ||
done(); | ||
}); | ||
}); | ||
}); | ||
}); | ||
@@ -289,0 +331,0 @@ |
@@ -833,3 +833,3 @@ // Load modules | ||
describe('Stale', function () { | ||
describe('getOrGenerate', function () { | ||
@@ -1077,4 +1077,36 @@ it('bypasses cache when not configured', function (done) { | ||
}); | ||
it('returns new object when stale has less than staleTimeout time left', function (done) { | ||
var rule = { | ||
expiresIn: 23, | ||
staleIn: 15, | ||
staleTimeout: 4 | ||
}; | ||
setup(rule, 0, false, null, function (get) { | ||
get('test', function (err, value1, cached) { | ||
expect(value1.gen).to.equal(1); // Fresh | ||
setTimeout(function () { | ||
get('test', function (err, value2, cached) { | ||
expect(value2.gen).to.equal(1); // Fresh | ||
setTimeout(function () { | ||
get('test', function (err, value3, cached) { | ||
expect(value3.gen).to.equal(2); // Fresh | ||
done(); | ||
}); | ||
}, 10); | ||
}); | ||
}, 10); | ||
}); | ||
}); | ||
}); | ||
}); | ||
}); | ||
Sorry, the diff of this file is not supported yet
124932
1739
+ Addedhoek@2.16.3(transitive)
- Removedhoek@1.5.2(transitive)
Updatedhoek@2.x.x