required() method

master
Wojtek Turyn 2015-10-15 10:16:33 +02:00
parent ddee9bc8f5
commit 37a84ae8df
2 changed files with 36 additions and 0 deletions

View File

@ -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.

View File

@ -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({