Skip to content

Commit 3f64f76

Browse files
Merge pull request #8 from anvilresearch/vsimonian-ioredis
Use ioredis
2 parents f2c4f46 + 4f57478 commit 3f64f76

6 files changed

+51
-22
lines changed

lib/RedisDocument.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,8 @@ RedisDocument.delete = function (id, callback) {
295295
})
296296

297297
// execute the set of ops
298-
multi.exec(function (err) {
299-
if (err) { callback(err) }
298+
multi.exec(function (err, result) {
299+
if (err) { return callback(err) }
300300
callback(null, true)
301301
})
302302
})

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
},
3838
"dependencies": {
3939
"async": "^1.3.0",
40-
"modinha": "0.0.30",
41-
"redis": "^0.12.1"
40+
"ioredis": "^1.7.5",
41+
"modinha": "0.0.30"
4242
},
4343
"bugs": {
4444
"url": "https://github.com/anvilresearch/modinha-redis/issues"

test/RedisDocumentIndexingSpec.coffee

+6-5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Faker = require 'faker'
55
chai = require 'chai'
66
sinon = require 'sinon'
77
sinonChai = require 'sinon-chai'
8+
mockMulti = require './lib/multi'
89
expect = chai.expect
910

1011

@@ -25,10 +26,10 @@ RedisDocument = require path.join(cwd, 'lib/RedisDocument')
2526

2627

2728
# Redis lib for spying and stubbing
28-
redis = require 'redis'
29-
client = redis.createClient()
30-
multi = redis.Multi.prototype
31-
rclient = redis.RedisClient.prototype
29+
Redis = require 'ioredis'
30+
client = new Redis({ port: 12345 })
31+
rclient = Redis.prototype
32+
multi = mockMulti(rclient)
3233

3334

3435

@@ -96,7 +97,7 @@ describe 'Indexing', ->
9697
field: ['$', ['nested.$', 'flag']]
9798
value: '_id'
9899

99-
Document.__redis = redis
100+
Document.__redis = Redis
100101
Document.__client = client
101102

102103
# Mock data

test/RedisDocumentRelationshipSpec.coffee

+6-5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ path = require 'path'
55
chai = require 'chai'
66
sinon = require 'sinon'
77
sinonChai = require 'sinon-chai'
8+
mockMulti = require './lib/multi'
89
expect = chai.expect
910

1011

@@ -24,11 +25,11 @@ RedisDocument = require path.join(cwd, 'lib/RedisDocument')
2425

2526

2627

27-
## Redis lib for spying and stubbing
28-
redis = require 'redis'
29-
client = redis.createClient()
30-
multi = redis.Multi.prototype
31-
rclient = redis.RedisClient.prototype
28+
# Redis lib for spying and stubbing
29+
Redis = require 'ioredis'
30+
client = new Redis({ port: 12345 })
31+
rclient = Redis.prototype
32+
multi = mockMulti(rclient)
3233

3334

3435

test/RedisDocumentSpec.coffee

+6-8
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ faker = require 'faker'
55
chai = require 'chai'
66
sinon = require 'sinon'
77
sinonChai = require 'sinon-chai'
8+
mockMulti = require './lib/multi'
89
expect = chai.expect
910

1011

@@ -25,13 +26,10 @@ RedisDocument = require path.join(cwd, 'lib/RedisDocument')
2526

2627

2728
# Redis lib for spying and stubbing
28-
redis = require 'redis'
29-
multi = redis.Multi.prototype
30-
rclient = redis.RedisClient.prototype
31-
rclient.ready_check = ->
32-
rclient.install_stream_listeners = ->
33-
rclient.connection_gone = ->
34-
client = new redis.RedisClient({}, {})
29+
Redis = require 'ioredis'
30+
client = new Redis({ port: 12345 })
31+
rclient = Redis.prototype
32+
multi = mockMulti(rclient)
3533

3634

3735

@@ -58,7 +56,7 @@ describe 'RedisDocument', ->
5856
Document.extend RedisDocument
5957

6058

61-
Document.__redis = redis
59+
Document.__redis = Redis
6260
Document.__client = client
6361

6462
# Mock data

test/lib/multi.coffee

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
Redis = require 'ioredis'
2+
client = Redis.prototype
3+
4+
multi = {}
5+
multiOld = client.multi
6+
multiMethods = []
7+
8+
for key of client
9+
if typeof client[key] == 'function'
10+
multiMethods.push key
11+
12+
multiMethods.forEach (prop) ->
13+
multi[prop] = ->
14+
multi
15+
return
16+
17+
multi.exec = ->
18+
throw new Error('exec called without being stubbed')
19+
return
20+
21+
module.exports = (client) ->
22+
client.multi = ->
23+
multi
24+
25+
client.multi.restore = ->
26+
client.multi = multiOld
27+
return
28+
29+
multi

0 commit comments

Comments
 (0)