mock_redis 0.6.6 → 0.7.0

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/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 0.7.0
2
+ * Implemented `mapped_mget`, `mapped_mset`, `mapped_msetnx`
3
+ * Fixed `rpoplpush` when the `rpop` is nil
4
+
1
5
  ### 0.6.6
2
6
  * Avoid mutation of @data from external reference
3
7
  * Fix sorted set (e.g. `zadd`) with multiple score/member pairs
@@ -150,7 +150,7 @@ class MockRedis
150
150
 
151
151
  def rpoplpush(source, destination)
152
152
  value = rpop(source)
153
- lpush(destination, value)
153
+ lpush(destination, value) unless value.nil?
154
154
  value
155
155
  end
156
156
 
@@ -99,6 +99,10 @@ class MockRedis
99
99
  end
100
100
  end
101
101
 
102
+ def mapped_mget(*keys)
103
+ Hash[keys.zip(mget(*keys))]
104
+ end
105
+
102
106
  def mset(*kvpairs)
103
107
  assert_has_args(kvpairs, 'mset')
104
108
  if kvpairs.length.odd?
@@ -112,6 +116,10 @@ class MockRedis
112
116
  "OK"
113
117
  end
114
118
 
119
+ def mapped_mset(hash)
120
+ mset(*hash.to_a.flatten)
121
+ end
122
+
115
123
  def msetnx(*kvpairs)
116
124
  assert_has_args(kvpairs, 'msetnx')
117
125
 
@@ -123,6 +131,10 @@ class MockRedis
123
131
  end
124
132
  end
125
133
 
134
+ def mapped_msetnx(hash)
135
+ msetnx(*hash.to_a.flatten)
136
+ end
137
+
126
138
  def set(key, value)
127
139
  data[key] = value.to_s
128
140
  'OK'
@@ -1,3 +1,3 @@
1
1
  class MockRedis
2
- VERSION = '0.6.6'
2
+ VERSION = '0.7.0'
3
3
  end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe '#mapped_mget(*keys)' do
4
+ before do
5
+ @key1 = 'mock-redis-test:a'
6
+ @key2 = 'mock-redis-test:b'
7
+ @key3 = 'mock-redis-test:c'
8
+
9
+ @redises.set(@key1, '1')
10
+ @redises.set(@key2, '2')
11
+ end
12
+
13
+ it 'returns a hash' do
14
+ @redises.mapped_mget(@key1, @key2, @key3).should eq({@key1 => '1',
15
+ @key2 => '2',
16
+ @key3 => nil})
17
+ end
18
+
19
+ it 'returns a hash even when no matches' do
20
+ @redises.mapped_mget('qwer').should eq({'qwer' => nil})
21
+ end
22
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe '#mapped_mset(hash)' do
4
+ before do
5
+ @key1 = 'mock-redis-test:a'
6
+ @key2 = 'mock-redis-test:b'
7
+ @key3 = 'mock-redis-test:c'
8
+
9
+ @redises.set(@key1, '1')
10
+ @redises.set(@key2, '2')
11
+ end
12
+
13
+ it 'sets the values properly' do
14
+ @redises.mapped_mset({@key1 => 'one', @key3 => 'three'}).should eq('OK')
15
+ @redises.get(@key1).should eq('one')
16
+ @redises.get(@key2).should eq('2') # left alone
17
+ @redises.get(@key3).should eq('three')
18
+ end
19
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe '#mapped_msetnx(hash)' do
4
+ before do
5
+ @key1 = 'mock-redis-test:a'
6
+ @key2 = 'mock-redis-test:b'
7
+ @key3 = 'mock-redis-test:c'
8
+
9
+ @redises.set(@key1, '1')
10
+ @redises.set(@key2, '2')
11
+ end
12
+
13
+ it 'sets properly when none collide' do
14
+ @redises.mapped_msetnx(@key3 => 'three').should eq(true)
15
+ @redises.get(@key1).should eq('1') # existed; untouched
16
+ @redises.get(@key2).should eq('2') # existed; untouched
17
+ @redises.get(@key3).should eq('three')
18
+ end
19
+
20
+ it 'does not set any when any collide' do
21
+ @redises.mapped_msetnx(@key1 => 'one', @key3 => 'three').should eq(false)
22
+ @redises.get(@key1).should eq('1') # existed; untouched
23
+ @redises.get(@key2).should eq('2') # existed; untouched
24
+ @redises.get(@key3).should be_nil
25
+ end
26
+ end
@@ -16,6 +16,11 @@ describe '#rpoplpush(source, destination)' do
16
16
  @redises.rpoplpush(@list1, @list2).should == "b"
17
17
  end
18
18
 
19
+ it "returns false and doesn't append if source empty" do
20
+ @redises.rpoplpush('empty', @list1).should be_nil
21
+ @redises.lrange(@list1, 0, -1).should == %w[a b]
22
+ end
23
+
19
24
  it "takes the last element of destination and prepends it to source" do
20
25
  @redises.rpoplpush(@list1, @list2)
21
26
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mock_redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.6
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-04-03 00:00:00.000000000 Z
13
+ date: 2013-04-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -153,6 +153,9 @@ files:
153
153
  - spec/commands/ltrim_spec.rb
154
154
  - spec/commands/mapped_hmget_spec.rb
155
155
  - spec/commands/mapped_hmset_spec.rb
156
+ - spec/commands/mapped_mget_spec.rb
157
+ - spec/commands/mapped_mset_spec.rb
158
+ - spec/commands/mapped_msetnx_spec.rb
156
159
  - spec/commands/mget_spec.rb
157
160
  - spec/commands/move_spec.rb
158
161
  - spec/commands/mset_spec.rb
@@ -304,6 +307,9 @@ test_files:
304
307
  - spec/commands/ltrim_spec.rb
305
308
  - spec/commands/mapped_hmget_spec.rb
306
309
  - spec/commands/mapped_hmset_spec.rb
310
+ - spec/commands/mapped_mget_spec.rb
311
+ - spec/commands/mapped_mset_spec.rb
312
+ - spec/commands/mapped_msetnx_spec.rb
307
313
  - spec/commands/mget_spec.rb
308
314
  - spec/commands/move_spec.rb
309
315
  - spec/commands/mset_spec.rb