You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

136 lines
4.1 KiB

/*jshint -W072 */
var caching = require("../../index");
var assert = require("assert");
var support = require('../support');
var memoryFlag = "";
var key;
var value;
var testStore = function(args) {
args = args || {};
var self = {};
self.name = "options";
self.get = function(key, cb, options) {
if (options && options.value) {
return cb(null, options.value + "ValueOption");
} else if (options && options.fn) {
options.fn("GetFunctionOption");
return cb(null, "GetFunctionOption");
}
return cb("Error No Options");
};
self.set = function(key, value, ttl, cb, options) {
if (options && options.value) {
memoryFlag = options.value + "ValueOption";
return cb();
} else if (options && options.fn) {
options.fn("SetFunctionOption");
return cb();
}
return cb("Error No Options");
};
self.del = function(key, cb, options) {
if (options && options.value) {
memoryFlag = options.value + "ValueOption";
return cb();
} else if (options && options.fn) {
options.fn("DeleteFunctionOption");
return cb();
}
return cb("Error No Options");
};
return {
create: function() {
return self;
}
};
};
describe("Methods with options", function() {
before(function() {
key = support.random.string(20);
value = support.random.string(20);
});
describe("get with options", function() {
var testInstance = caching.caching({store: testStore()});
var testCache;
before(function() {
testCache = caching.multi_caching([testInstance]);
});
it("lets us pass options by value", function(done) {
var options = {value: value};
testCache.get(key, function(err, response) {
assert.equal(response, value + "ValueOption");
done();
}, options);
});
it("lets us pass options by function", function(done) {
var options = {
fn: function(response) {
assert.equal(response, "GetFunctionOption");
done();
}
};
testCache.get(key, function(err, response) {
assert.equal(response, "GetFunctionOption");
}, options);
});
});
describe("set with options", function() {
var testInstance = caching.caching({store: testStore()});
var testCache;
var ttl = 60;
before(function() {
testCache = caching.multi_caching([testInstance]);
});
it("lets us pass options by value", function(done) {
var options = {value: value};
testCache.set(key, value, ttl, function() {
assert.equal(memoryFlag,value + "ValueOption");
done();
}, options);
});
it("lets us pass options by function", function(done) {
var options = {
fn: function(response) {
assert.equal(response, "SetFunctionOption");
done();
}
};
testCache.set(key, value, ttl, function() {}, options);
});
});
describe("delete with options", function() {
var testInstance = caching.caching({store: testStore()});
var testCache;
before(function() {
testCache = caching.multi_caching([testInstance]);
});
it("lets us pass options by value", function(done) {
var options = {value: value};
testCache.del(key, function() {
assert.equal(memoryFlag,value + "ValueOption");
done();
}, options);
});
it("lets us pass options by function", function(done) {
var options = {
fn: function(response) {
assert.equal(response, "DeleteFunctionOption");
done();
}
};
testCache.del(key, function() {}, options);
});
});
});