[api test] Update nconf.Provider
to create a new instance of the store if the options are different
This commit is contained in:
parent
1b0f34793b
commit
7e4623ec46
2 changed files with 45 additions and 1 deletions
|
@ -26,9 +26,21 @@ var Provider = exports.Provider = function (options) {
|
|||
// specified `type`.
|
||||
//
|
||||
Provider.prototype.use = function (type, options) {
|
||||
if (!this.store || type.toLowerCase() !== this.store.type) {
|
||||
var self = this;
|
||||
options = options || {};
|
||||
|
||||
function sameOptions () {
|
||||
return Object.keys(options).every(function (key) {
|
||||
return options[key] === self.store[key];
|
||||
});
|
||||
}
|
||||
|
||||
if (!this.store || type.toLowerCase() !== this.store.type
|
||||
|| !sameOptions()) {
|
||||
this.store = stores.create(type, options);
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
//
|
||||
|
|
32
test/provider-test.js
Normal file
32
test/provider-test.js
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* file-store-test.js: Tests for the nconf File store.
|
||||
*
|
||||
* (C) 2011, Charlie Robbins
|
||||
*
|
||||
*/
|
||||
|
||||
var fs = require('fs'),
|
||||
path = require('path'),
|
||||
vows = require('vows'),
|
||||
assert = require('assert'),
|
||||
nconf = require('../lib/nconf')
|
||||
|
||||
var first = '/path/to/file1',
|
||||
second = '/path/to/file2';
|
||||
|
||||
vows.describe('nconf/provider').addBatch({
|
||||
"When using an instance of nconf.Provier": {
|
||||
"calling the use() method with the same store type and different options": {
|
||||
topic: new nconf.Provider().use('file', { file: first }),
|
||||
"should use a new instance of the store type": function (provider) {
|
||||
var old = provider.store;
|
||||
|
||||
assert.equal(provider.store.file, first);
|
||||
provider.use('file', { file: second });
|
||||
|
||||
assert.notStrictEqual(old, provider.store);
|
||||
assert.equal(provider.store.file, second);
|
||||
}
|
||||
}
|
||||
}
|
||||
}).export(module);
|
Loading…
Reference in a new issue