required() method
This commit is contained in:
parent
ddee9bc8f5
commit
37a84ae8df
2 changed files with 36 additions and 0 deletions
|
@ -287,6 +287,31 @@ Provider.prototype.set = function (key, value, callback) {
|
|||
return this._execute('set', 2, key, value, callback);
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// ### function required (keys)
|
||||
// #### @keys {array} List of keys
|
||||
// Throws an error if any of `keys` has no value, otherwise returns `true`
|
||||
Provider.prototype.required = function (keys) {
|
||||
if (!Array.isArray(keys)) {
|
||||
throw new Error('Incorrect parameter, array expected');
|
||||
}
|
||||
|
||||
var missing = [];
|
||||
keys.forEach(function(key) {
|
||||
if (typeof this.get(key) === 'undefined') {
|
||||
missing.push(key);
|
||||
}
|
||||
}, this);
|
||||
|
||||
if (missing.length) {
|
||||
throw new Error('Missing required keys: ' + missing.join(', '));
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//
|
||||
// ### function reset (callback)
|
||||
// #### @callback {function} **Optional** Continuation to respond to when complete.
|
||||
|
|
|
@ -24,6 +24,7 @@ vows.describe('nconf').addBatch({
|
|||
assert.isFunction(nconf.load);
|
||||
assert.isFunction(nconf.save);
|
||||
assert.isFunction(nconf.reset);
|
||||
assert.isFunction(nconf.required);
|
||||
},
|
||||
"the use() method": {
|
||||
"should instaniate the correct store": function () {
|
||||
|
@ -41,6 +42,16 @@ vows.describe('nconf').addBatch({
|
|||
data = JSON.parse(data.toString());
|
||||
assert.equal(nconf.version, data.version);
|
||||
}
|
||||
},
|
||||
"the required() method": {
|
||||
"should throw error with missing keys": function() {
|
||||
nconf.set('foo:bar:bazz', 'buzz');
|
||||
assert.throws(nconf.required.bind(null, ['missingkey', 'foo:bar:bazz']), Error);
|
||||
},
|
||||
"should return true if all required keys exist": function() {
|
||||
nconf.set('foo:bar:bazz', 'buzz');
|
||||
assert.isTrue(nconf.required(['foo:bar:bazz']));
|
||||
}
|
||||
}
|
||||
}
|
||||
}).addBatch({
|
||||
|
|
Loading…
Reference in a new issue