35088a3313
* Added nconf.any method Fixes #126 Implemented on the Provider class Takes an array of keys, or a variable argument list Supports both callback and non-callback invocations * Use an explicit search base in file store test Fixes #224 Test file was created under process.env.HOME, but test was searching in the current working directory. If the cwd was not on the same drive as the home directory, the test would fail. * Added some API documentation to README for 'any' * Tweak `.any` documentation
143 lines
4.4 KiB
JavaScript
143 lines
4.4 KiB
JavaScript
/*
|
|
* file-store-test.js: Tests for the nconf File store.
|
|
*
|
|
* (C) 2011, Charlie Robbins and the Contributors.
|
|
*
|
|
*/
|
|
|
|
var fs = require('fs'),
|
|
path = require('path'),
|
|
vows = require('vows'),
|
|
assert = require('assert'),
|
|
nconf = require('../lib/nconf')
|
|
|
|
vows.describe('nconf').addBatch({
|
|
"When using the nconf": {
|
|
"should have the correct methods set": function () {
|
|
assert.isFunction(nconf.key);
|
|
assert.isFunction(nconf.path);
|
|
assert.isFunction(nconf.use);
|
|
assert.isFunction(nconf.any);
|
|
assert.isFunction(nconf.get);
|
|
assert.isFunction(nconf.set);
|
|
assert.isFunction(nconf.clear);
|
|
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 () {
|
|
nconf.use('memory');
|
|
nconf.load();
|
|
assert.instanceOf(nconf.stores['memory'], nconf.Memory);
|
|
}
|
|
},
|
|
"it should": {
|
|
topic: function () {
|
|
fs.readFile(path.join(__dirname, '..', 'package.json'), this.callback);
|
|
},
|
|
"have the correct version set": function (err, data) {
|
|
assert.isNull(err);
|
|
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(nconf, ['missing', '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({
|
|
"When using the nconf": {
|
|
"with the memory store": {
|
|
"the set() method": {
|
|
"should respond with true": function () {
|
|
assert.isTrue(nconf.set('foo:bar:bazz', 'buzz'));
|
|
}
|
|
},
|
|
"the get() method": {
|
|
"without a callback": {
|
|
"should respond with the correct value": function () {
|
|
assert.equal(nconf.get('foo:bar:bazz'), 'buzz');
|
|
}
|
|
},
|
|
"with a callback": {
|
|
topic: function () {
|
|
nconf.get('foo:bar:bazz', this.callback);
|
|
},
|
|
"should respond with the correct value": function (err, value) {
|
|
assert.equal(value, 'buzz');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}).addBatch({
|
|
"When using the nconf": {
|
|
"with the memory store": {
|
|
"the get() method": {
|
|
"should respond allow access to the root": function () {
|
|
assert(nconf.get(null));
|
|
assert(nconf.get(undefined));
|
|
assert(nconf.get());
|
|
}
|
|
},
|
|
"the set() method": {
|
|
"should respond allow access to the root and complain about non-objects": function () {
|
|
assert(!nconf.set(null, null));
|
|
assert(!nconf.set(null, undefined));
|
|
assert(!nconf.set(null));
|
|
assert(!nconf.set(null, ''));
|
|
assert(!nconf.set(null, 1));
|
|
var original = nconf.get();
|
|
assert(nconf.set(null, nconf.get()));
|
|
assert.notEqual(nconf.get(), original);
|
|
assert.deepEqual(nconf.get(), original)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}).addBatch({
|
|
"When using nconf": {
|
|
"with the memory store": {
|
|
"the clear() method": {
|
|
"should respond with the true": function () {
|
|
assert.equal(nconf.get('foo:bar:bazz'), 'buzz');
|
|
assert.isTrue(nconf.clear('foo:bar:bazz'));
|
|
assert.isTrue(typeof nconf.get('foo:bar:bazz') === 'undefined');
|
|
}
|
|
},
|
|
"the load() method": {
|
|
"without a callback": {
|
|
"should respond with the merged store": function () {
|
|
assert.deepEqual(nconf.load(), {
|
|
title: 'My specific title',
|
|
color: 'green',
|
|
movie: 'Kill Bill'
|
|
});
|
|
}
|
|
},
|
|
"with a callback": {
|
|
topic: function () {
|
|
nconf.load(this.callback.bind(null, null));
|
|
},
|
|
"should respond with the merged store": function (ign, err, store) {
|
|
assert.isNull(err);
|
|
assert.deepEqual(store, {
|
|
title: 'My specific title',
|
|
color: 'green',
|
|
movie: 'Kill Bill'
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}).export(module);
|