multiple-redis
Advanced tools
Comparing version 0.0.2 to 0.0.3
@@ -10,2 +10,3 @@ <a name="MultiRedisClient"></a> | ||
* [new MultiRedisClient(params)](#new_MultiRedisClient_new) | ||
* [#resetState()](#MultiRedisClient+resetState) ℗ | ||
* [.setupPrototype()](#MultiRedisClient.setupPrototype) ℗ | ||
@@ -30,2 +31,7 @@ * _static_ | ||
<a name="MultiRedisClient+resetState"></a> | ||
### MultiRedisClient#resetState() ℗ | ||
Resets the redis attributes based on the status of the internal redis clients. | ||
**Access:** private | ||
<a name="MultiRedisClient.setupPrototype"></a> | ||
@@ -32,0 +38,0 @@ ### MultiRedisClient.setupPrototype() ℗ |
@@ -36,2 +36,4 @@ 'use strict'; | ||
} | ||
self.resetState(); | ||
} else { | ||
@@ -60,2 +62,9 @@ var options = params.options || {}; | ||
}); | ||
var onStateChange = function () { | ||
self.resetState(); | ||
}; | ||
self.on('connect', onStateChange); | ||
self.on('error', onStateChange); | ||
self.on('end', onStateChange); | ||
} | ||
@@ -67,2 +76,30 @@ | ||
/** | ||
* Resets the redis attributes based on the status of the internal redis clients. | ||
* | ||
* @function | ||
* @memberof! MultiRedisClient | ||
* @private | ||
*/ | ||
MultiRedisClient.prototype.resetState = function () { | ||
this.connected = false; | ||
var index; | ||
for (index = 0; index < this.clients.length; index++) { | ||
if (this.clients[index].connected) { | ||
this.connected = true; | ||
/*jshint camelcase: false*/ | ||
//jscs:disable requireCamelCaseOrUpperCaseIdentifiers | ||
/*eslint-disable camelcase*/ | ||
this.server_info = this.clients[index].server_info; | ||
/*eslint-enable camelcase*/ | ||
//jscs:enable requireCamelCaseOrUpperCaseIdentifiers | ||
/*jshint camelcase: true*/ | ||
break; | ||
} | ||
} | ||
}; | ||
/** | ||
* Adds all functions with proxy capabilities. | ||
@@ -69,0 +106,0 @@ * |
{ | ||
"name": "multiple-redis", | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"description": "Run redis commands against multiple redis instances.", | ||
@@ -30,2 +30,3 @@ "main": "index.js", | ||
"chai": "latest", | ||
"event-emitter-enhancer": "latest", | ||
"grunt": "latest", | ||
@@ -32,0 +33,0 @@ "grunt-blanket": "latest", |
@@ -127,2 +127,3 @@ # multiple-redis | ||
| ----------- | ------- | ----------- | | ||
| 2015-09-03 | v0.0.3 | Added support for connected and server_info attributes. | | ||
| 2015-09-03 | v0.0.2 | Initial release. | | ||
@@ -129,0 +130,0 @@ |
@@ -10,2 +10,3 @@ 'use strict'; | ||
var EventEmitter = events.EventEmitter; | ||
var EventEmitterEnhancer = require('event-emitter-enhancer'); | ||
var MultipleRedis = require('../../'); | ||
@@ -177,2 +178,73 @@ | ||
describe('connect tests', function () { | ||
it('connect existing clients', function () { | ||
var client1 = new EventEmitter(); | ||
client1.connected = false; | ||
client1.server_info = 'server1'; | ||
var client2 = new EventEmitter(); | ||
client2.connected = true; | ||
client2.server_info = 'server2'; | ||
var client = MultipleRedis.createClient([client1, client2]); | ||
assert.isTrue(client.connected); | ||
assert.equal(client.server_info, 'server2'); | ||
}); | ||
it('connect existing not connected clients', function () { | ||
var client1 = new EventEmitter(); | ||
client1.connected = false; | ||
client1.server_info = 'server1'; | ||
var client2 = new EventEmitter(); | ||
client2.connected = false; | ||
client2.server_info = 'server2'; | ||
var client = MultipleRedis.createClient([client1, client2]); | ||
assert.isFalse(client.connected); | ||
assert.isUndefined(client.server_info); | ||
}); | ||
it('connect via event', function (done) { | ||
var client1 = new EventEmitter(); | ||
client1.connected = false; | ||
client1.server_info = 'server1'; | ||
var client2 = new EventEmitter(); | ||
client2.connected = false; | ||
client2.server_info = 'server2'; | ||
var client = MultipleRedis.createClient([client1, client2]); | ||
assert.isFalse(client.connected); | ||
assert.isUndefined(client.server_info); | ||
EventEmitterEnhancer.modifyInstance(client); | ||
var unbind = client.onAsync('connect', function () { | ||
assert.isTrue(client.connected); | ||
assert.equal(client.server_info, 'server1'); | ||
unbind(); | ||
client.onAsync('end', function () { | ||
assert.isFalse(client.connected); | ||
assert.equal(client.server_info, 'server1'); | ||
client.onAsync('connect', function () { | ||
assert.isTrue(client.connected); | ||
assert.equal(client.server_info, 'server2'); | ||
done(); | ||
}); | ||
client2.connected = true; | ||
client2.emit('connect'); | ||
}); | ||
client1.connected = false; | ||
client1.emit('end'); | ||
}); | ||
client1.connected = true; | ||
client1.emit('connect'); | ||
}); | ||
}); | ||
describe('command tests', function () { | ||
@@ -179,0 +251,0 @@ describe('set tests', function () { |
65146
1045
133
20