From 4f57478bb64aefed2a91fead8df32abd225b225e Mon Sep 17 00:00:00 2001 From: Vartan Simonian Date: Sun, 23 Aug 2015 02:21:13 -0700 Subject: [PATCH] refactor: Use ioredis --- lib/RedisDocument.js | 4 ++-- package.json | 4 ++-- test/RedisDocumentIndexingSpec.coffee | 11 +++++---- test/RedisDocumentRelationshipSpec.coffee | 11 +++++---- test/RedisDocumentSpec.coffee | 14 +++++------ test/lib/multi.coffee | 29 +++++++++++++++++++++++ 6 files changed, 51 insertions(+), 22 deletions(-) create mode 100644 test/lib/multi.coffee diff --git a/lib/RedisDocument.js b/lib/RedisDocument.js index 8df1a30..59f2388 100644 --- a/lib/RedisDocument.js +++ b/lib/RedisDocument.js @@ -295,8 +295,8 @@ RedisDocument.delete = function (id, callback) { }) // execute the set of ops - multi.exec(function (err) { - if (err) { callback(err) } + multi.exec(function (err, result) { + if (err) { return callback(err) } callback(null, true) }) }) diff --git a/package.json b/package.json index 1760257..974c9b0 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,8 @@ }, "dependencies": { "async": "^1.3.0", - "modinha": "0.0.30", - "redis": "^0.12.1" + "ioredis": "^1.7.5", + "modinha": "0.0.30" }, "bugs": { "url": "https://github.com/anvilresearch/modinha-redis/issues" diff --git a/test/RedisDocumentIndexingSpec.coffee b/test/RedisDocumentIndexingSpec.coffee index e146f01..1bf1022 100644 --- a/test/RedisDocumentIndexingSpec.coffee +++ b/test/RedisDocumentIndexingSpec.coffee @@ -5,6 +5,7 @@ Faker = require 'faker' chai = require 'chai' sinon = require 'sinon' sinonChai = require 'sinon-chai' +mockMulti = require './lib/multi' expect = chai.expect @@ -25,10 +26,10 @@ RedisDocument = require path.join(cwd, 'lib/RedisDocument') # Redis lib for spying and stubbing -redis = require 'redis' -client = redis.createClient() -multi = redis.Multi.prototype -rclient = redis.RedisClient.prototype +Redis = require 'ioredis' +client = new Redis({ port: 12345 }) +rclient = Redis.prototype +multi = mockMulti(rclient) @@ -96,7 +97,7 @@ describe 'Indexing', -> field: ['$', ['nested.$', 'flag']] value: '_id' - Document.__redis = redis + Document.__redis = Redis Document.__client = client # Mock data diff --git a/test/RedisDocumentRelationshipSpec.coffee b/test/RedisDocumentRelationshipSpec.coffee index 1705c18..69e4a99 100644 --- a/test/RedisDocumentRelationshipSpec.coffee +++ b/test/RedisDocumentRelationshipSpec.coffee @@ -5,6 +5,7 @@ path = require 'path' chai = require 'chai' sinon = require 'sinon' sinonChai = require 'sinon-chai' +mockMulti = require './lib/multi' expect = chai.expect @@ -24,11 +25,11 @@ RedisDocument = require path.join(cwd, 'lib/RedisDocument') -## Redis lib for spying and stubbing -redis = require 'redis' -client = redis.createClient() -multi = redis.Multi.prototype -rclient = redis.RedisClient.prototype +# Redis lib for spying and stubbing +Redis = require 'ioredis' +client = new Redis({ port: 12345 }) +rclient = Redis.prototype +multi = mockMulti(rclient) diff --git a/test/RedisDocumentSpec.coffee b/test/RedisDocumentSpec.coffee index 71fd9ec..4ef8ce9 100644 --- a/test/RedisDocumentSpec.coffee +++ b/test/RedisDocumentSpec.coffee @@ -5,6 +5,7 @@ faker = require 'faker' chai = require 'chai' sinon = require 'sinon' sinonChai = require 'sinon-chai' +mockMulti = require './lib/multi' expect = chai.expect @@ -25,13 +26,10 @@ RedisDocument = require path.join(cwd, 'lib/RedisDocument') # Redis lib for spying and stubbing -redis = require 'redis' -multi = redis.Multi.prototype -rclient = redis.RedisClient.prototype -rclient.ready_check = -> -rclient.install_stream_listeners = -> -rclient.connection_gone = -> -client = new redis.RedisClient({}, {}) +Redis = require 'ioredis' +client = new Redis({ port: 12345 }) +rclient = Redis.prototype +multi = mockMulti(rclient) @@ -58,7 +56,7 @@ describe 'RedisDocument', -> Document.extend RedisDocument - Document.__redis = redis + Document.__redis = Redis Document.__client = client # Mock data diff --git a/test/lib/multi.coffee b/test/lib/multi.coffee new file mode 100644 index 0000000..24d8202 --- /dev/null +++ b/test/lib/multi.coffee @@ -0,0 +1,29 @@ +Redis = require 'ioredis' +client = Redis.prototype + +multi = {} +multiOld = client.multi +multiMethods = [] + +for key of client + if typeof client[key] == 'function' + multiMethods.push key + +multiMethods.forEach (prop) -> + multi[prop] = -> + multi + return + +multi.exec = -> + throw new Error('exec called without being stubbed') + return + +module.exports = (client) -> + client.multi = -> + multi + + client.multi.restore = -> + client.multi = multiOld + return + + multi