redis-namespace 1.5.3 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/spec/redis_spec.rb CHANGED
@@ -4,6 +4,7 @@ require File.dirname(__FILE__) + '/spec_helper'
4
4
 
5
5
  describe "redis" do
6
6
  @redis_version = Gem::Version.new(Redis.current.info["redis_version"])
7
+ let(:redis_client) { @redis.respond_to?(:_client) ? @redis._client : @redis.client}
7
8
 
8
9
  before(:all) do
9
10
  # use database 15 for testing so we dont accidentally step on your real data
@@ -13,7 +14,7 @@ describe "redis" do
13
14
  before(:each) do
14
15
  @namespaced = Redis::Namespace.new(:ns, :redis => @redis)
15
16
  @redis.flushdb
16
- @redis['foo'] = 'bar'
17
+ @redis.set('foo', 'bar')
17
18
  end
18
19
 
19
20
  after(:each) do
@@ -24,28 +25,38 @@ describe "redis" do
24
25
  @redis.quit
25
26
  end
26
27
 
27
- it "proxies `client` to the client" do
28
- @namespaced.client.should eq(@redis.client)
28
+ # redis-rb 3.3.4+
29
+ it "should inject :namespace into connection info" do
30
+ info = @redis.connection.merge(:namespace => :ns)
31
+ expect(@namespaced.connection).to eq(info)
32
+ end
33
+
34
+ it "proxies `client` to the _client and deprecated" do
35
+ expect(@namespaced.client).to eq(redis_client)
36
+ end
37
+
38
+ it "proxies `_client` to the _client" do
39
+ expect(@namespaced._client).to eq(redis_client)
29
40
  end
30
41
 
31
42
  it "should be able to use a namespace" do
32
- @namespaced['foo'].should eq(nil)
33
- @namespaced['foo'] = 'chris'
34
- @namespaced['foo'].should eq('chris')
35
- @redis['foo'] = 'bob'
36
- @redis['foo'].should eq('bob')
43
+ expect(@namespaced.get('foo')).to eq(nil)
44
+ @namespaced.set('foo', 'chris')
45
+ expect(@namespaced.get('foo')).to eq('chris')
46
+ @redis.set('foo', 'bob')
47
+ expect(@redis.get('foo')).to eq('bob')
37
48
 
38
49
  @namespaced.incrby('counter', 2)
39
- @namespaced['counter'].to_i.should eq(2)
40
- @redis['counter'].should eq(nil)
41
- @namespaced.type('counter').should eq('string')
50
+ expect(@namespaced.get('counter').to_i).to eq(2)
51
+ expect(@redis.get('counter')).to eq(nil)
52
+ expect(@namespaced.type('counter')).to eq('string')
42
53
  end
43
54
 
44
55
  context 'when sending capital commands (issue 68)' do
45
56
  it 'should be able to use a namespace' do
46
57
  @namespaced.send('SET', 'fubar', 'quux')
47
- @redis.get('fubar').should be_nil
48
- @namespaced.get('fubar').should eq 'quux'
58
+ expect(@redis.get('fubar')).to be_nil
59
+ expect(@namespaced.get('fubar')).to eq 'quux'
49
60
  end
50
61
  end
51
62
 
@@ -53,136 +64,165 @@ describe "redis" do
53
64
  @namespaced.rpush "foo", "string"
54
65
  @namespaced.rpush "foo", "ns:string"
55
66
  @namespaced.rpush "foo", "string_no_timeout"
56
- @namespaced.blpop("foo", 1).should eq(["foo", "string"])
57
- @namespaced.blpop("foo", 1).should eq(["foo", "ns:string"])
58
- @namespaced.blpop("foo").should eq(["foo", "string_no_timeout"])
59
- @namespaced.blpop("foo", 1).should eq(nil)
67
+ expect(@namespaced.blpop("foo", 1)).to eq(["foo", "string"])
68
+ expect(@namespaced.blpop("foo", 1)).to eq(["foo", "ns:string"])
69
+ expect(@namespaced.blpop("foo")).to eq(["foo", "string_no_timeout"])
70
+ expect(@namespaced.blpop("foo", 1)).to eq(nil)
60
71
  end
61
72
 
62
73
  it "should be able to use a namespace with del" do
63
- @namespaced['foo'] = 1000
64
- @namespaced['bar'] = 2000
65
- @namespaced['baz'] = 3000
74
+ @namespaced.set('foo', 1000)
75
+ @namespaced.set('bar', 2000)
76
+ @namespaced.set('baz', 3000)
66
77
  @namespaced.del 'foo'
67
- @namespaced['foo'].should eq(nil)
78
+ expect(@namespaced.get('foo')).to eq(nil)
68
79
  @namespaced.del 'bar', 'baz'
69
- @namespaced['bar'].should eq(nil)
70
- @namespaced['baz'].should eq(nil)
80
+ expect(@namespaced.get('bar')).to eq(nil)
81
+ expect(@namespaced.get('baz')).to eq(nil)
82
+ end
83
+
84
+ it "should be able to use a namespace with unlink" do
85
+ @namespaced.set('foo', 1000)
86
+ @namespaced.set('bar', 2000)
87
+ @namespaced.set('baz', 3000)
88
+ @namespaced.unlink 'foo'
89
+ expect(@namespaced.get('foo')).to eq(nil)
90
+ @namespaced.unlink 'bar', 'baz'
91
+ expect(@namespaced.get('bar')).to eq(nil)
92
+ expect(@namespaced.get('baz')).to eq(nil)
71
93
  end
72
94
 
73
95
  it 'should be able to use a namespace with append' do
74
- @namespaced['foo'] = 'bar'
75
- @namespaced.append('foo','n').should eq(4)
76
- @namespaced['foo'].should eq('barn')
77
- @redis['foo'].should eq('bar')
96
+ @namespaced.set('foo', 'bar')
97
+ expect(@namespaced.append('foo','n')).to eq(4)
98
+ expect(@namespaced.get('foo')).to eq('barn')
99
+ expect(@redis.get('foo')).to eq('bar')
78
100
  end
79
101
 
80
102
  it 'should be able to use a namespace with brpoplpush' do
81
103
  @namespaced.lpush('foo','bar')
82
- @namespaced.brpoplpush('foo','bar',0).should eq('bar')
83
- @namespaced.lrange('foo',0,-1).should eq([])
84
- @namespaced.lrange('bar',0,-1).should eq(['bar'])
104
+ expect(@namespaced.brpoplpush('foo','bar',0)).to eq('bar')
105
+ expect(@namespaced.lrange('foo',0,-1)).to eq([])
106
+ expect(@namespaced.lrange('bar',0,-1)).to eq(['bar'])
85
107
  end
86
108
 
87
109
  it 'should be able to use a namespace with getbit' do
88
110
  @namespaced.set('foo','bar')
89
- @namespaced.getbit('foo',1).should eq(1)
111
+ expect(@namespaced.getbit('foo',1)).to eq(1)
90
112
  end
91
113
 
92
114
  it 'should be able to use a namespace with getrange' do
93
115
  @namespaced.set('foo','bar')
94
- @namespaced.getrange('foo',0,-1).should eq('bar')
116
+ expect(@namespaced.getrange('foo',0,-1)).to eq('bar')
95
117
  end
96
118
 
97
119
  it 'should be able to use a namespace with linsert' do
98
120
  @namespaced.rpush('foo','bar')
99
121
  @namespaced.rpush('foo','barn')
100
122
  @namespaced.rpush('foo','bart')
101
- @namespaced.linsert('foo','BEFORE','barn','barf').should eq(4)
102
- @namespaced.lrange('foo',0,-1).should eq(['bar','barf','barn','bart'])
123
+ expect(@namespaced.linsert('foo','BEFORE','barn','barf')).to eq(4)
124
+ expect(@namespaced.lrange('foo',0,-1)).to eq(['bar','barf','barn','bart'])
103
125
  end
104
126
 
105
127
  it 'should be able to use a namespace with lpushx' do
106
- @namespaced.lpushx('foo','bar').should eq(0)
128
+ expect(@namespaced.lpushx('foo','bar')).to eq(0)
107
129
  @namespaced.lpush('foo','boo')
108
- @namespaced.lpushx('foo','bar').should eq(2)
109
- @namespaced.lrange('foo',0,-1).should eq(['bar','boo'])
130
+ expect(@namespaced.lpushx('foo','bar')).to eq(2)
131
+ expect(@namespaced.lrange('foo',0,-1)).to eq(['bar','boo'])
110
132
  end
111
133
 
112
134
  it 'should be able to use a namespace with rpushx' do
113
- @namespaced.rpushx('foo','bar').should eq(0)
135
+ expect(@namespaced.rpushx('foo','bar')).to eq(0)
114
136
  @namespaced.lpush('foo','boo')
115
- @namespaced.rpushx('foo','bar').should eq(2)
116
- @namespaced.lrange('foo',0,-1).should eq(['boo','bar'])
137
+ expect(@namespaced.rpushx('foo','bar')).to eq(2)
138
+ expect(@namespaced.lrange('foo',0,-1)).to eq(['boo','bar'])
117
139
  end
118
140
 
119
141
  it 'should be able to use a namespace with setbit' do
120
142
  @namespaced.setbit('virgin_key', 1, 1)
121
- @namespaced.exists('virgin_key').should be_true
122
- @namespaced.get('virgin_key').should eq(@namespaced.getrange('virgin_key',0,-1))
143
+ expect(@namespaced.exists?('virgin_key')).to be true
144
+ expect(@namespaced.get('virgin_key')).to eq(@namespaced.getrange('virgin_key',0,-1))
145
+ end
146
+
147
+ it 'should be able to use a namespace with exists' do
148
+ @namespaced.set('foo', 1000)
149
+ @namespaced.set('bar', 2000)
150
+ expect(@namespaced.exists('foo', 'bar')).to eq(2)
151
+ end
152
+
153
+ it 'should be able to use a namespace with exists?' do
154
+ @namespaced.set('foo', 1000)
155
+ @namespaced.set('bar', 2000)
156
+ expect(@namespaced.exists?('does_not_exist', 'bar')).to eq(true)
157
+ end
158
+
159
+ it 'should be able to use a namespace with bitpos' do
160
+ @namespaced.setbit('bit_map', 42, 1)
161
+ expect(@namespaced.bitpos('bit_map', 0)).to eq(0)
162
+ expect(@namespaced.bitpos('bit_map', 1)).to eq(42)
123
163
  end
124
164
 
125
165
  it 'should be able to use a namespace with setrange' do
126
166
  @namespaced.setrange('foo', 0, 'bar')
127
- @namespaced['foo'].should eq('bar')
167
+ expect(@namespaced.get('foo')).to eq('bar')
128
168
 
129
169
  @namespaced.setrange('bar', 2, 'foo')
130
- @namespaced['bar'].should eq("\000\000foo")
170
+ expect(@namespaced.get('bar')).to eq("\000\000foo")
131
171
  end
132
172
 
133
173
  it "should be able to use a namespace with mget" do
134
- @namespaced['foo'] = 1000
135
- @namespaced['bar'] = 2000
136
- @namespaced.mapped_mget('foo', 'bar').should eq({ 'foo' => '1000', 'bar' => '2000' })
137
- @namespaced.mapped_mget('foo', 'baz', 'bar').should eq({'foo'=>'1000', 'bar'=>'2000', 'baz' => nil})
174
+ @namespaced.set('foo', 1000)
175
+ @namespaced.set('bar', 2000)
176
+ expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000' })
177
+ expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({'foo'=>'1000', 'bar'=>'2000', 'baz' => nil})
138
178
  end
139
179
 
140
180
  it "should be able to use a namespace with mset" do
141
181
  @namespaced.mset('foo', '1000', 'bar', '2000')
142
- @namespaced.mapped_mget('foo', 'bar').should eq({ 'foo' => '1000', 'bar' => '2000' })
143
- @namespaced.mapped_mget('foo', 'baz', 'bar').should eq({ 'foo' => '1000', 'bar' => '2000', 'baz' => nil})
182
+ expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000' })
183
+ expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000', 'baz' => nil})
144
184
  @namespaced.mapped_mset('foo' => '3000', 'bar' => '5000')
145
- @namespaced.mapped_mget('foo', 'bar').should eq({ 'foo' => '3000', 'bar' => '5000' })
146
- @namespaced.mapped_mget('foo', 'baz', 'bar').should eq({ 'foo' => '3000', 'bar' => '5000', 'baz' => nil})
185
+ expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '3000', 'bar' => '5000' })
186
+ expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({ 'foo' => '3000', 'bar' => '5000', 'baz' => nil})
147
187
  end
148
188
 
149
189
  it "should be able to use a namespace with msetnx" do
150
190
  @namespaced.msetnx('foo', '1000', 'bar', '2000')
151
- @namespaced.mapped_mget('foo', 'bar').should eq({ 'foo' => '1000', 'bar' => '2000' })
152
- @namespaced.mapped_mget('foo', 'baz', 'bar').should eq({ 'foo' => '1000', 'bar' => '2000', 'baz' => nil})
191
+ expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000' })
192
+ expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000', 'baz' => nil})
153
193
  end
154
194
 
155
195
  it "should be able to use a namespace with mapped_msetnx" do
156
196
  @namespaced.set('foo','1')
157
- @namespaced.mapped_msetnx('foo'=>'1000', 'bar'=>'2000').should be_false
158
- @namespaced.mapped_mget('foo', 'bar').should eq({ 'foo' => '1', 'bar' => nil })
159
- @namespaced.mapped_msetnx('bar'=>'2000', 'baz'=>'1000').should be_true
160
- @namespaced.mapped_mget('foo', 'bar').should eq({ 'foo' => '1', 'bar' => '2000' })
197
+ expect(@namespaced.mapped_msetnx('foo'=>'1000', 'bar'=>'2000')).to be false
198
+ expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '1', 'bar' => nil })
199
+ expect(@namespaced.mapped_msetnx('bar'=>'2000', 'baz'=>'1000')).to be true
200
+ expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '1', 'bar' => '2000' })
161
201
  end
162
202
 
163
203
  it "should be able to use a namespace with hashes" do
164
204
  @namespaced.hset('foo', 'key', 'value')
165
205
  @namespaced.hset('foo', 'key1', 'value1')
166
- @namespaced.hget('foo', 'key').should eq('value')
167
- @namespaced.hgetall('foo').should eq({'key' => 'value', 'key1' => 'value1'})
168
- @namespaced.hlen('foo').should eq(2)
169
- @namespaced.hkeys('foo').should eq(['key', 'key1'])
206
+ expect(@namespaced.hget('foo', 'key')).to eq('value')
207
+ expect(@namespaced.hgetall('foo')).to eq({'key' => 'value', 'key1' => 'value1'})
208
+ expect(@namespaced.hlen('foo')).to eq(2)
209
+ expect(@namespaced.hkeys('foo')).to eq(['key', 'key1'])
170
210
  @namespaced.hmset('bar', 'key', 'value', 'key1', 'value1')
171
211
  @namespaced.hmget('bar', 'key', 'key1')
172
212
  @namespaced.hmset('bar', 'a_number', 1)
173
- @namespaced.hmget('bar', 'a_number').should eq(['1'])
213
+ expect(@namespaced.hmget('bar', 'a_number')).to eq(['1'])
174
214
  @namespaced.hincrby('bar', 'a_number', 3)
175
- @namespaced.hmget('bar', 'a_number').should eq(['4'])
176
- @namespaced.hgetall('bar').should eq({'key' => 'value', 'key1' => 'value1', 'a_number' => '4'})
177
-
178
- @namespaced.hsetnx('foonx','nx',10).should be_true
179
- @namespaced.hsetnx('foonx','nx',12).should be_false
180
- @namespaced.hget('foonx','nx').should eq("10")
181
- @namespaced.hkeys('foonx').should eq(%w{ nx })
182
- @namespaced.hvals('foonx').should eq(%w{ 10 })
215
+ expect(@namespaced.hmget('bar', 'a_number')).to eq(['4'])
216
+ expect(@namespaced.hgetall('bar')).to eq({'key' => 'value', 'key1' => 'value1', 'a_number' => '4'})
217
+
218
+ expect(@namespaced.hsetnx('foonx','nx',10)).to be true
219
+ expect(@namespaced.hsetnx('foonx','nx',12)).to be false
220
+ expect(@namespaced.hget('foonx','nx')).to eq("10")
221
+ expect(@namespaced.hkeys('foonx')).to eq(%w{ nx })
222
+ expect(@namespaced.hvals('foonx')).to eq(%w{ 10 })
183
223
  @namespaced.mapped_hmset('baz', {'key' => 'value', 'key1' => 'value1', 'a_number' => 4})
184
- @namespaced.mapped_hmget('baz', 'key', 'key1', 'a_number').should eq({'key' => 'value', 'key1' => 'value1', 'a_number' => '4'})
185
- @namespaced.hgetall('baz').should eq({'key' => 'value', 'key1' => 'value1', 'a_number' => '4'})
224
+ expect(@namespaced.mapped_hmget('baz', 'key', 'key1', 'a_number')).to eq({'key' => 'value', 'key1' => 'value1', 'a_number' => '4'})
225
+ expect(@namespaced.hgetall('baz')).to eq({'key' => 'value', 'key1' => 'value1', 'a_number' => '4'})
186
226
  end
187
227
 
188
228
  it "should properly intersect three sets" do
@@ -193,7 +233,7 @@ describe "redis" do
193
233
  @namespaced.sadd('bar', 3)
194
234
  @namespaced.sadd('bar', 4)
195
235
  @namespaced.sadd('baz', 3)
196
- @namespaced.sinter('foo', 'bar', 'baz').should eq(%w( 3 ))
236
+ expect(@namespaced.sinter('foo', 'bar', 'baz')).to eq(%w( 3 ))
197
237
  end
198
238
 
199
239
  it "should properly union two sets" do
@@ -202,7 +242,7 @@ describe "redis" do
202
242
  @namespaced.sadd('bar', 2)
203
243
  @namespaced.sadd('bar', 3)
204
244
  @namespaced.sadd('bar', 4)
205
- @namespaced.sunion('foo', 'bar').sort.should eq(%w( 1 2 3 4 ))
245
+ expect(@namespaced.sunion('foo', 'bar').sort).to eq(%w( 1 2 3 4 ))
206
246
  end
207
247
 
208
248
  it "should properly union two sorted sets with options" do
@@ -211,8 +251,8 @@ describe "redis" do
211
251
  @namespaced.zadd('sort2', 2, 2)
212
252
  @namespaced.zadd('sort2', 3, 3)
213
253
  @namespaced.zadd('sort2', 4, 4)
214
- @namespaced.zunionstore('union', ['sort1', 'sort2'], :weights => [2, 1])
215
- @namespaced.zrevrange('union', 0, -1).should eq(%w( 2 4 3 1 ))
254
+ @namespaced.zunionstore('union', ['sort1', 'sort2'], weights: [2, 1])
255
+ expect(@namespaced.zrevrange('union', 0, -1)).to eq(%w( 2 4 3 1 ))
216
256
  end
217
257
 
218
258
  it "should properly union two sorted sets without options" do
@@ -222,7 +262,7 @@ describe "redis" do
222
262
  @namespaced.zadd('sort2', 3, 3)
223
263
  @namespaced.zadd('sort2', 4, 4)
224
264
  @namespaced.zunionstore('union', ['sort1', 'sort2'])
225
- @namespaced.zrevrange('union', 0, -1).should eq(%w( 4 2 3 1 ))
265
+ expect(@namespaced.zrevrange('union', 0, -1)).to eq(%w( 4 2 3 1 ))
226
266
  end
227
267
 
228
268
  it "should properly intersect two sorted sets without options" do
@@ -237,7 +277,7 @@ describe "redis" do
237
277
  @namespaced.zinterstore('inter', ['food', 'color'])
238
278
 
239
279
  inter_values = @namespaced.zrevrange('inter', 0, -1, :with_scores => true)
240
- inter_values.should =~ [['orange', 3.0], ['eggplant', 7.0]]
280
+ expect(inter_values).to match_array([['orange', 3.0], ['eggplant', 7.0]])
241
281
  end
242
282
 
243
283
  it "should properly intersect two sorted sets with options" do
@@ -252,7 +292,37 @@ describe "redis" do
252
292
  @namespaced.zinterstore('inter', ['food', 'color'], :aggregate => "min")
253
293
 
254
294
  inter_values = @namespaced.zrevrange('inter', 0, -1, :with_scores => true)
255
- inter_values.should =~ [['orange', 1.0], ['eggplant', 3.0]]
295
+ expect(inter_values).to match_array([['orange', 1.0], ['eggplant', 3.0]])
296
+ end
297
+
298
+ it "should return lexicographical range for sorted set" do
299
+ @namespaced.zadd('food', 0, 'orange')
300
+ @namespaced.zadd('food', 0, 'banana')
301
+ @namespaced.zadd('food', 0, 'eggplant')
302
+
303
+ values = @namespaced.zrangebylex('food', '[b', '(o')
304
+ expect(values).to match_array(['banana', 'eggplant'])
305
+ end
306
+
307
+ it "should return the number of elements removed from the set" do
308
+ @namespaced.zadd('food', 0, 'orange')
309
+ @namespaced.zadd('food', 0, 'banana')
310
+ @namespaced.zadd('food', 0, 'eggplant')
311
+
312
+ removed = @namespaced.zremrangebylex('food', '[b', '(o')
313
+ expect(removed).to eq(2)
314
+
315
+ values = @namespaced.zrange('food', 0, -1)
316
+ expect(values).to eq(['orange'])
317
+ end
318
+
319
+ it "should return reverce lexicographical range for sorted set" do
320
+ @namespaced.zadd('food', 0, 'orange')
321
+ @namespaced.zadd('food', 0, 'banana')
322
+ @namespaced.zadd('food', 0, 'eggplant')
323
+
324
+ values = @namespaced.zrevrangebylex('food', '(o', '[b')
325
+ expect(values).to match_array(['banana', 'eggplant'])
256
326
  end
257
327
 
258
328
  it "should add namespace to sort" do
@@ -263,24 +333,24 @@ describe "redis" do
263
333
  @namespaced.set('value_1', 'a')
264
334
  @namespaced.set('value_2', 'b')
265
335
 
266
- @namespaced.sort('foo').should eq(%w( 1 2 ))
267
- @namespaced.sort('foo', :limit => [0, 1]).should eq(%w( 1 ))
268
- @namespaced.sort('foo', :order => 'desc').should eq(%w( 2 1 ))
269
- @namespaced.sort('foo', :by => 'weight_*').should eq(%w( 2 1 ))
270
- @namespaced.sort('foo', :get => 'value_*').should eq(%w( a b ))
271
- @namespaced.sort('foo', :get => '#').should eq(%w( 1 2 ))
272
- @namespaced.sort('foo', :get => ['#', 'value_*']).should eq([["1", "a"], ["2", "b"]])
336
+ expect(@namespaced.sort('foo')).to eq(%w( 1 2 ))
337
+ expect(@namespaced.sort('foo', :limit => [0, 1])).to eq(%w( 1 ))
338
+ expect(@namespaced.sort('foo', :order => 'desc')).to eq(%w( 2 1 ))
339
+ expect(@namespaced.sort('foo', :by => 'weight_*')).to eq(%w( 2 1 ))
340
+ expect(@namespaced.sort('foo', :get => 'value_*')).to eq(%w( a b ))
341
+ expect(@namespaced.sort('foo', :get => '#')).to eq(%w( 1 2 ))
342
+ expect(@namespaced.sort('foo', :get => ['#', 'value_*'])).to eq([["1", "a"], ["2", "b"]])
273
343
 
274
344
  @namespaced.sort('foo', :store => 'result')
275
- @namespaced.lrange('result', 0, -1).should eq(%w( 1 2 ))
345
+ expect(@namespaced.lrange('result', 0, -1)).to eq(%w( 1 2 ))
276
346
  end
277
347
 
278
348
  it "should yield the correct list of keys" do
279
- @namespaced["foo"] = 1
280
- @namespaced["bar"] = 2
281
- @namespaced["baz"] = 3
282
- @namespaced.keys("*").sort.should eq(%w( bar baz foo ))
283
- @namespaced.keys.sort.should eq(%w( bar baz foo ))
349
+ @namespaced.set("foo", 1)
350
+ @namespaced.set("bar", 2)
351
+ @namespaced.set("baz", 3)
352
+ expect(@namespaced.keys("*").sort).to eq(%w( bar baz foo ))
353
+ expect(@namespaced.keys.sort).to eq(%w( bar baz foo ))
284
354
  end
285
355
 
286
356
  it "should add namepsace to multi blocks" do
@@ -289,7 +359,7 @@ describe "redis" do
289
359
  r.del "foo"
290
360
  r.mapped_hmset "foo", {"key1" => "value1"}
291
361
  end
292
- @namespaced.hgetall("foo").should eq({"key1" => "value1"})
362
+ expect(@namespaced.hgetall("foo")).to eq({"key1" => "value1"})
293
363
  end
294
364
 
295
365
  it "should pass through multi commands without block" do
@@ -300,14 +370,14 @@ describe "redis" do
300
370
  @namespaced.mapped_hmset "foo", {"key1" => "value1"}
301
371
  @namespaced.exec
302
372
 
303
- @namespaced.hgetall("foo").should eq({"key1" => "value1"})
373
+ expect(@namespaced.hgetall("foo")).to eq({"key1" => "value1"})
304
374
  end
305
375
 
306
376
  it 'should return futures without attempting to remove namespaces' do
307
377
  @namespaced.multi do
308
378
  @future = @namespaced.keys('*')
309
379
  end
310
- @future.class.should be(Redis::Future)
380
+ expect(@future.class).to be(Redis::Future)
311
381
  end
312
382
 
313
383
  it "should add namespace to pipelined blocks" do
@@ -316,74 +386,113 @@ describe "redis" do
316
386
  r.del "foo"
317
387
  r.mapped_hmset "foo", {"key1" => "value1"}
318
388
  end
319
- @namespaced.hgetall("foo").should eq({"key1" => "value1"})
389
+ expect(@namespaced.hgetall("foo")).to eq({"key1" => "value1"})
320
390
  end
321
391
 
322
392
  it "should returned response array from pipelined block" do
323
393
  @namespaced.mset "foo", "bar", "key", "value"
324
394
  result = @namespaced.pipelined do |r|
325
- r["foo"]
326
- r["key"]
395
+ r.get("foo")
396
+ r.get("key")
327
397
  end
328
- result.should eq(["bar", "value"])
398
+ expect(result).to eq(["bar", "value"])
329
399
  end
330
400
 
331
401
  it "should add namespace to strlen" do
332
402
  @namespaced.set("mykey", "123456")
333
- @namespaced.strlen("mykey").should eq(6)
403
+ expect(@namespaced.strlen("mykey")).to eq(6)
334
404
  end
335
405
 
336
406
  it "should not add namespace to echo" do
337
- @namespaced.echo(123).should eq("123")
407
+ expect(@namespaced.echo(123)).to eq("123")
338
408
  end
339
409
 
340
410
  it 'should not add namespace to disconnect!' do
341
- expect(@redis).to receive(:disconnect!).with().and_call_original
411
+ expect(@redis).to receive(:disconnect!).with(no_args).and_call_original
342
412
 
343
413
  expect(@namespaced.disconnect!).to be nil
344
414
  end
345
415
 
346
416
  it "can change its namespace" do
347
- @namespaced['foo'].should eq(nil)
348
- @namespaced['foo'] = 'chris'
349
- @namespaced['foo'].should eq('chris')
417
+ expect(@namespaced.get('foo')).to eq(nil)
418
+ @namespaced.set('foo', 'chris')
419
+ expect(@namespaced.get('foo')).to eq('chris')
350
420
 
351
- @namespaced.namespace.should eq(:ns)
421
+ expect(@namespaced.namespace).to eq(:ns)
352
422
  @namespaced.namespace = :spec
353
- @namespaced.namespace.should eq(:spec)
423
+ expect(@namespaced.namespace).to eq(:spec)
354
424
 
355
- @namespaced['foo'].should eq(nil)
356
- @namespaced['foo'] = 'chris'
357
- @namespaced['foo'].should eq('chris')
425
+ expect(@namespaced.get('foo')).to eq(nil)
426
+ @namespaced.set('foo', 'chris')
427
+ expect(@namespaced.get('foo')).to eq('chris')
358
428
  end
359
429
 
360
430
  it "can accept a temporary namespace" do
361
- @namespaced.namespace.should eq(:ns)
362
- @namespaced['foo'].should eq(nil)
431
+ expect(@namespaced.namespace).to eq(:ns)
432
+ expect(@namespaced.get('foo')).to eq(nil)
363
433
 
364
434
  @namespaced.namespace(:spec) do |temp_ns|
365
- temp_ns.namespace.should eq(:spec)
366
- temp_ns['foo'].should eq(nil)
367
- temp_ns['foo'] = 'jake'
368
- temp_ns['foo'].should eq('jake')
435
+ expect(temp_ns.namespace).to eq(:spec)
436
+ expect(temp_ns.get('foo')).to eq(nil)
437
+ temp_ns.set('foo', 'jake')
438
+ expect(temp_ns.get('foo')).to eq('jake')
369
439
  end
370
440
 
371
- @namespaced.namespace.should eq(:ns)
372
- @namespaced['foo'].should eq(nil)
441
+ expect(@namespaced.namespace).to eq(:ns)
442
+ expect(@namespaced.get('foo')).to eq(nil)
373
443
  end
374
444
 
375
445
  it "should respond to :namespace=" do
376
- @namespaced.respond_to?(:namespace=).should eq(true)
446
+ expect(@namespaced.respond_to?(:namespace=)).to eq(true)
377
447
  end
378
448
 
379
449
  it "should respond to :warning=" do
380
- @namespaced.respond_to?(:warning=).should == true
450
+ expect(@namespaced.respond_to?(:warning=)).to eq(true)
381
451
  end
382
452
 
383
453
  it "should raise an exception when an unknown command is passed" do
384
454
  expect { @namespaced.unknown('foo') }.to raise_exception NoMethodError
385
455
  end
386
456
 
457
+ describe '#inspect' do
458
+ let(:single_level_names) { %i[first] }
459
+ let(:double_level_names) { %i[first second] }
460
+ let(:triple_level_names) { %i[first second third] }
461
+ let(:namespace_builder) do
462
+ ->(redis, *namespaces) { namespaces.reduce(redis) { |r, n| Redis::Namespace.new(n, redis: r) } }
463
+ end
464
+ let(:regexp_builder) do
465
+ ->(*namespaces) { %r{/#{namespaces.join(':')}>\z} }
466
+ end
467
+
468
+ context 'when one namespace' do
469
+ let(:single_namespaced) { namespace_builder.call(@redis, *single_level_names) }
470
+ let(:regexp) { regexp_builder.call(*single_level_names) }
471
+
472
+ it 'should have correct ending of inspect string' do
473
+ expect(regexp =~ single_namespaced.inspect).not_to be(nil)
474
+ end
475
+ end
476
+
477
+ context 'when two namespaces' do
478
+ let(:double_namespaced) { namespace_builder.call(@redis, *double_level_names) }
479
+ let(:regexp) { regexp_builder.call(*double_level_names) }
480
+
481
+ it 'should have correct ending of inspect string' do
482
+ expect(regexp =~ double_namespaced.inspect).not_to be(nil)
483
+ end
484
+ end
485
+
486
+ context 'when three namespaces' do
487
+ let(:triple_namespaced) { namespace_builder.call(@redis, *triple_level_names) }
488
+ let(:regexp) { regexp_builder.call(*triple_level_names) }
489
+
490
+ it 'should have correct ending of inspect string' do
491
+ expect(regexp =~ triple_namespaced.inspect).not_to be(nil)
492
+ end
493
+ end
494
+ end
495
+
387
496
  # Redis 2.6 RC reports its version as 2.5.
388
497
  if @redis_version >= Gem::Version.new("2.5.0")
389
498
  describe "redis 2.6 commands" do
@@ -417,7 +526,7 @@ describe "redis" do
417
526
  v = @namespaced.dump("foo")
418
527
  @redis.del("ns:foo")
419
528
 
420
- expect(@namespaced.restore("foo", 1000, v)).to be_true
529
+ expect(@namespaced.restore("foo", 1000, v)).to be_truthy
421
530
  expect(@redis.get("ns:foo")).to eq 'a'
422
531
  expect(@redis.ttl("ns:foo")).to satisfy {|v| (0..1).include?(v) }
423
532
 
@@ -425,72 +534,72 @@ describe "redis" do
425
534
  w = @namespaced.dump("bar")
426
535
  @redis.del("ns:bar")
427
536
 
428
- expect(@namespaced.restore("bar", 1000, w)).to be_true
537
+ expect(@namespaced.restore("bar", 1000, w)).to be_truthy
429
538
  expect(@redis.lrange('ns:bar', 0, -1)).to eq %w(b c d)
430
539
  expect(@redis.ttl("ns:foo")).to satisfy {|v| (0..1).include?(v) }
431
540
  end
432
541
 
433
542
  it "should namespace hincrbyfloat" do
434
543
  @namespaced.hset('mykey', 'field', 10.50)
435
- @namespaced.hincrbyfloat('mykey', 'field', 0.1).should eq(10.6)
544
+ expect(@namespaced.hincrbyfloat('mykey', 'field', 0.1)).to eq(10.6)
436
545
  end
437
546
 
438
547
  it "should namespace incrbyfloat" do
439
548
  @namespaced.set('mykey', 10.50)
440
- @namespaced.incrbyfloat('mykey', 0.1).should eq(10.6)
549
+ expect(@namespaced.incrbyfloat('mykey', 0.1)).to eq(10.6)
441
550
  end
442
551
 
443
552
  it "should namespace object" do
444
553
  @namespaced.set('foo', 1000)
445
- @namespaced.object('encoding', 'foo').should eq('int')
554
+ expect(@namespaced.object('encoding', 'foo')).to eq('int')
446
555
  end
447
556
 
448
557
  it "should namespace persist" do
449
558
  @namespaced.set('mykey', 'Hello')
450
559
  @namespaced.expire('mykey', 60)
451
- @namespaced.persist('mykey').should eq(true)
452
- @namespaced.ttl('mykey').should eq(-1)
560
+ expect(@namespaced.persist('mykey')).to eq(true)
561
+ expect(@namespaced.ttl('mykey')).to eq(-1)
453
562
  end
454
563
 
455
564
  it "should namespace pexpire" do
456
565
  @namespaced.set('mykey', 'Hello')
457
- @namespaced.pexpire('mykey', 60000).should eq(true)
566
+ expect(@namespaced.pexpire('mykey', 60000)).to eq(true)
458
567
  end
459
568
 
460
569
  it "should namespace pexpireat" do
461
570
  @namespaced.set('mykey', 'Hello')
462
- @namespaced.pexpire('mykey', 1555555555005).should eq(true)
571
+ expect(@namespaced.pexpire('mykey', 1555555555005)).to eq(true)
463
572
  end
464
573
 
465
574
  it "should namespace psetex" do
466
- @namespaced.psetex('mykey', 10000, 'Hello').should eq('OK')
467
- @namespaced.get('mykey').should eq('Hello')
575
+ expect(@namespaced.psetex('mykey', 10000, 'Hello')).to eq('OK')
576
+ expect(@namespaced.get('mykey')).to eq('Hello')
468
577
  end
469
578
 
470
579
  it "should namespace pttl" do
471
580
  @namespaced.set('mykey', 'Hello')
472
581
  @namespaced.expire('mykey', 1)
473
- @namespaced.pttl('mykey').should >= 0
582
+ expect(@namespaced.pttl('mykey')).to be >= 0
474
583
  end
475
584
 
476
585
  it "should namespace eval keys passed in as array args" do
477
- @namespaced.
478
- eval("return {KEYS[1], KEYS[2]}", %w[k1 k2], %w[arg1 arg2]).
479
- should eq(%w[ns:k1 ns:k2])
586
+ expect(@namespaced.
587
+ eval("return {KEYS[1], KEYS[2]}", %w[k1 k2], %w[arg1 arg2])).
588
+ to eq(%w[ns:k1 ns:k2])
480
589
  end
481
590
 
482
591
  it "should namespace eval keys passed in as hash args" do
483
- @namespaced.
484
- eval("return {KEYS[1], KEYS[2]}", :keys => %w[k1 k2], :argv => %w[arg1 arg2]).
485
- should eq(%w[ns:k1 ns:k2])
592
+ expect(@namespaced.
593
+ eval("return {KEYS[1], KEYS[2]}", :keys => %w[k1 k2], :argv => %w[arg1 arg2])).
594
+ to eq(%w[ns:k1 ns:k2])
486
595
  end
487
596
 
488
597
  it "should namespace eval keys passed in as hash args unmodified" do
489
598
  args = { :keys => %w[k1 k2], :argv => %w[arg1 arg2] }
490
599
  args.freeze
491
- @namespaced.
492
- eval("return {KEYS[1], KEYS[2]}", args).
493
- should eq(%w[ns:k1 ns:k2])
600
+ expect(@namespaced.
601
+ eval("return {KEYS[1], KEYS[2]}", args)).
602
+ to eq(%w[ns:k1 ns:k2])
494
603
  end
495
604
 
496
605
  context '#evalsha' do
@@ -499,23 +608,23 @@ describe "redis" do
499
608
  end
500
609
 
501
610
  it "should namespace evalsha keys passed in as array args" do
502
- @namespaced.
503
- evalsha(sha, %w[k1 k2], %w[arg1 arg2]).
504
- should eq(%w[ns:k1 ns:k2])
611
+ expect(@namespaced.
612
+ evalsha(sha, %w[k1 k2], %w[arg1 arg2])).
613
+ to eq(%w[ns:k1 ns:k2])
505
614
  end
506
615
 
507
616
  it "should namespace evalsha keys passed in as hash args" do
508
- @namespaced.
509
- evalsha(sha, :keys => %w[k1 k2], :argv => %w[arg1 arg2]).
510
- should eq(%w[ns:k1 ns:k2])
617
+ expect(@namespaced.
618
+ evalsha(sha, :keys => %w[k1 k2], :argv => %w[arg1 arg2])).
619
+ to eq(%w[ns:k1 ns:k2])
511
620
  end
512
621
 
513
622
  it "should namespace evalsha keys passed in as hash args unmodified" do
514
623
  args = { :keys => %w[k1 k2], :argv => %w[arg1 arg2] }
515
624
  args.freeze
516
- @namespaced.
517
- evalsha(sha, args).
518
- should eq(%w[ns:k1 ns:k2])
625
+ expect(@namespaced.
626
+ evalsha(sha, args)).
627
+ to eq(%w[ns:k1 ns:k2])
519
628
  end
520
629
  end
521
630
 
@@ -524,13 +633,13 @@ describe "redis" do
524
633
  let(:sha) { @redis.script(:load, "return {KEYS[1], KEYS[2]}") }
525
634
 
526
635
  it "should namespace eval keys passed in as hash args" do
527
- nested_namespace.
528
- eval("return {KEYS[1], KEYS[2]}", :keys => %w[k1 k2], :argv => %w[arg1 arg2]).
529
- should eq(%w[ns:nest:k1 ns:nest:k2])
636
+ expect(nested_namespace.
637
+ eval("return {KEYS[1], KEYS[2]}", :keys => %w[k1 k2], :argv => %w[arg1 arg2])).
638
+ to eq(%w[ns:nest:k1 ns:nest:k2])
530
639
  end
531
640
  it "should namespace evalsha keys passed in as hash args" do
532
- nested_namespace.evalsha(sha, :keys => %w[k1 k2], :argv => %w[arg1 arg2]).
533
- should eq(%w[ns:nest:k1 ns:nest:k2])
641
+ expect(nested_namespace.evalsha(sha, :keys => %w[k1 k2], :argv => %w[arg1 arg2])).
642
+ to eq(%w[ns:nest:k1 ns:nest:k2])
534
643
  end
535
644
  end
536
645
  end
@@ -559,13 +668,13 @@ describe "redis" do
559
668
  context 'when :match supplied' do
560
669
  it 'should retrieve the proper keys' do
561
670
  _, result = @namespaced.scan(0, :match => 'zeta:*', :count => 1000)
562
- result.should =~ matching_namespaced_keys
671
+ expect(result).to match_array(matching_namespaced_keys)
563
672
  end
564
673
  end
565
674
  context 'without :match supplied' do
566
675
  it 'should retrieve the proper keys' do
567
676
  _, result = @namespaced.scan(0, :count => 1000)
568
- result.should =~ namespaced_keys
677
+ expect(result).to match_array(namespaced_keys)
569
678
  end
570
679
  end
571
680
  end if Redis.current.respond_to?(:scan)
@@ -576,13 +685,13 @@ describe "redis" do
576
685
  it 'should yield unnamespaced' do
577
686
  results = []
578
687
  @namespaced.scan_each(:match => 'zeta:*', :count => 1000) {|k| results << k }
579
- results.should =~ matching_namespaced_keys
688
+ expect(results).to match_array(matching_namespaced_keys)
580
689
  end
581
690
  end
582
691
  context 'without a block' do
583
692
  it 'should return an Enumerator that un-namespaces' do
584
693
  enum = @namespaced.scan_each(:match => 'zeta:*', :count => 1000)
585
- enum.to_a.should =~ matching_namespaced_keys
694
+ expect(enum.to_a).to match_array(matching_namespaced_keys)
586
695
  end
587
696
  end
588
697
  end
@@ -591,13 +700,13 @@ describe "redis" do
591
700
  it 'should yield unnamespaced' do
592
701
  results = []
593
702
  @namespaced.scan_each(:count => 1000){ |k| results << k }
594
- results.should =~ namespaced_keys
703
+ expect(results).to match_array(namespaced_keys)
595
704
  end
596
705
  end
597
706
  context 'without a block' do
598
707
  it 'should return an Enumerator that un-namespaces' do
599
708
  enum = @namespaced.scan_each(:count => 1000)
600
- enum.to_a.should =~ namespaced_keys
709
+ expect(enum.to_a).to match_array(namespaced_keys)
601
710
  end
602
711
  end
603
712
  end
@@ -620,13 +729,13 @@ describe "redis" do
620
729
  context 'when supplied :match' do
621
730
  it 'should retrieve the proper keys' do
622
731
  _, results = @namespaced.hscan('hsh', 0, :match => 'zeta:*')
623
- results.should =~ hash_matching_subset.to_a
732
+ expect(results).to match_array(hash_matching_subset.to_a)
624
733
  end
625
734
  end
626
735
  context 'without :match supplied' do
627
736
  it 'should retrieve all hash keys' do
628
737
  _, results = @namespaced.hscan('hsh', 0)
629
- results.should =~ @redis.hgetall('ns:hsh').to_a
738
+ expect(results).to match_array(@redis.hgetall('ns:hsh').to_a)
630
739
  end
631
740
  end
632
741
  end if Redis.current.respond_to?(:hscan)
@@ -637,13 +746,13 @@ describe "redis" do
637
746
  it 'should yield the correct hash keys unchanged' do
638
747
  results = []
639
748
  @namespaced.hscan_each('hsh', :match => 'zeta:*', :count => 1000) { |kv| results << kv}
640
- results.should =~ hash_matching_subset.to_a
749
+ expect(results).to match_array(hash_matching_subset.to_a)
641
750
  end
642
751
  end
643
752
  context 'without a block' do
644
753
  it 'should return an Enumerator that yields the correct hash keys unchanged' do
645
754
  enum = @namespaced.hscan_each('hsh', :match => 'zeta:*', :count => 1000)
646
- enum.to_a.should =~ hash_matching_subset.to_a
755
+ expect(enum.to_a).to match_array(hash_matching_subset.to_a)
647
756
  end
648
757
  end
649
758
  end
@@ -652,13 +761,13 @@ describe "redis" do
652
761
  it 'should yield all hash keys unchanged' do
653
762
  results = []
654
763
  @namespaced.hscan_each('hsh', :count => 1000){ |k| results << k }
655
- results.should =~ hash.to_a
764
+ expect(results).to match_array(hash.to_a)
656
765
  end
657
766
  end
658
767
  context 'without a block' do
659
768
  it 'should return an Enumerator that yields all keys unchanged' do
660
769
  enum = @namespaced.hscan_each('hsh', :count => 1000)
661
- enum.to_a.should =~ hash.to_a
770
+ expect(enum.to_a).to match_array(hash.to_a)
662
771
  end
663
772
  end
664
773
  end
@@ -681,13 +790,13 @@ describe "redis" do
681
790
  context 'when supplied :match' do
682
791
  it 'should retrieve the matching set members from the proper set' do
683
792
  _, results = @namespaced.sscan('set', 0, :match => 'zeta:*', :count => 1000)
684
- results.should =~ matching_subset
793
+ expect(results).to match_array(matching_subset)
685
794
  end
686
795
  end
687
796
  context 'without :match supplied' do
688
797
  it 'should retrieve all set members from the proper set' do
689
798
  _, results = @namespaced.sscan('set', 0, :count => 1000)
690
- results.should =~ set
799
+ expect(results).to match_array(set)
691
800
  end
692
801
  end
693
802
  end if Redis.current.respond_to?(:sscan)
@@ -698,13 +807,13 @@ describe "redis" do
698
807
  it 'should yield the correct hset elements unchanged' do
699
808
  results = []
700
809
  @namespaced.sscan_each('set', :match => 'zeta:*', :count => 1000) { |kv| results << kv}
701
- results.should =~ matching_subset
810
+ expect(results).to match_array(matching_subset)
702
811
  end
703
812
  end
704
813
  context 'without a block' do
705
814
  it 'should return an Enumerator that yields the correct set elements unchanged' do
706
815
  enum = @namespaced.sscan_each('set', :match => 'zeta:*', :count => 1000)
707
- enum.to_a.should =~ matching_subset
816
+ expect(enum.to_a).to match_array(matching_subset)
708
817
  end
709
818
  end
710
819
  end
@@ -713,13 +822,13 @@ describe "redis" do
713
822
  it 'should yield all set elements unchanged' do
714
823
  results = []
715
824
  @namespaced.sscan_each('set', :count => 1000){ |k| results << k }
716
- results.should =~ set
825
+ expect(results).to match_array(set)
717
826
  end
718
827
  end
719
828
  context 'without a block' do
720
829
  it 'should return an Enumerator that yields all set elements unchanged' do
721
830
  enum = @namespaced.sscan_each('set', :count => 1000)
722
- enum.to_a.should =~ set
831
+ expect(enum.to_a).to match_array(set)
723
832
  end
724
833
  end
725
834
  end
@@ -743,14 +852,14 @@ describe "redis" do
743
852
  it 'should retrieve the matching set elements and their scores' do
744
853
  results = []
745
854
  @namespaced.zscan_each('zset', :match => 'zeta:*', :count => 1000) { |ms| results << ms }
746
- results.should =~ hash_matching_subset.to_a
855
+ expect(results).to match_array(hash_matching_subset.to_a)
747
856
  end
748
857
  end
749
858
  context 'without :match supplied' do
750
859
  it 'should retrieve all set elements and their scores' do
751
860
  results = []
752
861
  @namespaced.zscan_each('zset', :count => 1000) { |ms| results << ms }
753
- results.should =~ hash.to_a
862
+ expect(results).to match_array(hash.to_a)
754
863
  end
755
864
  end
756
865
  end if Redis.current.respond_to?(:zscan)
@@ -761,13 +870,13 @@ describe "redis" do
761
870
  it 'should yield the correct set elements and scores unchanged' do
762
871
  results = []
763
872
  @namespaced.zscan_each('zset', :match => 'zeta:*', :count => 1000) { |ms| results << ms}
764
- results.should =~ hash_matching_subset.to_a
873
+ expect(results).to match_array(hash_matching_subset.to_a)
765
874
  end
766
875
  end
767
876
  context 'without a block' do
768
877
  it 'should return an Enumerator that yields the correct set elements and scoresunchanged' do
769
878
  enum = @namespaced.zscan_each('zset', :match => 'zeta:*', :count => 1000)
770
- enum.to_a.should =~ hash_matching_subset.to_a
879
+ expect(enum.to_a).to match_array(hash_matching_subset.to_a)
771
880
  end
772
881
  end
773
882
  end
@@ -776,13 +885,13 @@ describe "redis" do
776
885
  it 'should yield all set elements and scores unchanged' do
777
886
  results = []
778
887
  @namespaced.zscan_each('zset', :count => 1000){ |ms| results << ms }
779
- results.should =~ hash.to_a
888
+ expect(results).to match_array(hash.to_a)
780
889
  end
781
890
  end
782
891
  context 'without a block' do
783
892
  it 'should return an Enumerator that yields all set elements and scores unchanged' do
784
893
  enum = @namespaced.zscan_each('zset', :count => 1000)
785
- enum.to_a.should =~ hash.to_a
894
+ expect(enum.to_a).to match_array(hash.to_a)
786
895
  end
787
896
  end
788
897
  end
@@ -794,12 +903,12 @@ describe "redis" do
794
903
  if @redis_version >= Gem::Version.new("2.8.9")
795
904
  it 'should namespace pfadd' do
796
905
  5.times { |n| @namespaced.pfadd("pf", n) }
797
- @redis.pfcount("ns:pf").should == 5
906
+ expect(@redis.pfcount("ns:pf")).to eq(5)
798
907
  end
799
908
 
800
909
  it 'should namespace pfcount' do
801
910
  5.times { |n| @redis.pfadd("ns:pf", n) }
802
- @namespaced.pfcount("pf").should == 5
911
+ expect(@namespaced.pfcount("pf")).to eq(5)
803
912
  end
804
913
 
805
914
  it 'should namespace pfmerge' do
@@ -809,7 +918,18 @@ describe "redis" do
809
918
  end
810
919
 
811
920
  @namespaced.pfmerge("pfc", "pfa", "pfb")
812
- @redis.pfcount("ns:pfc").should == 10
921
+ expect(@redis.pfcount("ns:pfc")).to eq(10)
922
+ end
923
+ end
924
+
925
+ describe :full_namespace do
926
+ it "should return the full namespace including sub namespaces" do
927
+ sub_namespaced = Redis::Namespace.new(:sub1, :redis => @namespaced)
928
+ sub_sub_namespaced = Redis::Namespace.new(:sub2, :redis => sub_namespaced)
929
+
930
+ expect(@namespaced.full_namespace).to eql("ns")
931
+ expect(sub_namespaced.full_namespace).to eql("ns:sub1")
932
+ expect(sub_sub_namespaced.full_namespace).to eql("ns:sub1:sub2")
813
933
  end
814
934
  end
815
935
  end