mock_redis 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/.mailmap ADDED
@@ -0,0 +1,2 @@
1
+ Samuel Merritt <spam@andcheese.org> Sam Merritt <spam@andcheese.org>
2
+ Samuel Merritt <spam@andcheese.org> Samuel Merritt <spam@andcheese.org>
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ### 0.4.1
2
+ * bugfixes: teach various methods to correctly handle non-string values
3
+
1
4
  ### 0.4.0
2
5
  * Support `mapped_hmset`/`mapped_hmget`
3
6
  * Support `pipelined`
@@ -8,16 +8,16 @@ class MockRedis
8
8
 
9
9
  def hdel(key, field)
10
10
  with_hash_at(key) do |hash|
11
- hash.delete(field) ? 1 : 0
11
+ hash.delete(field.to_s) ? 1 : 0
12
12
  end
13
13
  end
14
14
 
15
15
  def hexists(key, field)
16
- with_hash_at(key) {|h| h.has_key?(field)}
16
+ with_hash_at(key) {|h| h.has_key?(field.to_s)}
17
17
  end
18
18
 
19
19
  def hget(key, field)
20
- with_hash_at(key) {|h| h[field]}
20
+ with_hash_at(key) {|h| h[field.to_s]}
21
21
  end
22
22
 
23
23
  def hgetall(key)
@@ -26,6 +26,7 @@ class MockRedis
26
26
 
27
27
  def hincrby(key, field, increment)
28
28
  with_hash_at(key) do |hash|
29
+ field = field.to_s
29
30
  unless can_incr?(data[key][field])
30
31
  raise RuntimeError, "ERR hash value is not an integer"
31
32
  end
@@ -80,7 +81,7 @@ class MockRedis
80
81
  end
81
82
 
82
83
  def hset(key, field, value)
83
- with_hash_at(key) {|h| h[field] = value.to_s}
84
+ with_hash_at(key) {|h| h[field.to_s] = value.to_s}
84
85
  true
85
86
  end
86
87
 
@@ -1,3 +1,3 @@
1
1
  class MockRedis
2
- VERSION = '0.4.0'
2
+ VERSION = '0.4.1'
3
3
  end
@@ -11,7 +11,7 @@ class MockRedis
11
11
  assert_scorey(score)
12
12
 
13
13
  retval = !zscore(key, member)
14
- with_zset_at(key) {|z| z.add(score, member)}
14
+ with_zset_at(key) {|z| z.add(score, member.to_s)}
15
15
  retval
16
16
  end
17
17
 
@@ -32,6 +32,7 @@ class MockRedis
32
32
 
33
33
  def zincrby(key, increment, member)
34
34
  assert_scorey(increment)
35
+ member = member.to_s
35
36
  with_zset_at(key) do |z|
36
37
  old_score = z.include?(member) ? z.score(member) : 0
37
38
  new_score = old_score + increment
@@ -61,11 +62,11 @@ class MockRedis
61
62
  end
62
63
 
63
64
  def zrank(key, member)
64
- with_zset_at(key) {|z| z.sorted_members.index(member) }
65
+ with_zset_at(key) {|z| z.sorted_members.index(member.to_s) }
65
66
  end
66
67
 
67
68
  def zrem(key, member)
68
- with_zset_at(key) {|z| !!z.delete?(member)}
69
+ with_zset_at(key) {|z| !!z.delete?(member.to_s)}
69
70
  end
70
71
 
71
72
  def zrevrange(key, start, stop, options={})
@@ -97,12 +98,12 @@ class MockRedis
97
98
  end
98
99
 
99
100
  def zrevrank(key, member)
100
- with_zset_at(key) {|z| z.sorted_members.reverse.index(member) }
101
+ with_zset_at(key) {|z| z.sorted_members.reverse.index(member.to_s) }
101
102
  end
102
103
 
103
104
  def zscore(key, member)
104
105
  with_zset_at(key) do |z|
105
- score = z.score(member)
106
+ score = z.score(member.to_s)
106
107
  score.to_s if score
107
108
  end
108
109
  end
@@ -20,6 +20,13 @@ describe "#hdel(key, field)" do
20
20
  @redises.hget(@key, 'k1').should be_nil
21
21
  end
22
22
 
23
+ it "treats the field as a string" do
24
+ field = 2
25
+ @redises.hset(@key, field, 'two')
26
+ @redises.hdel(@key, field)
27
+ @redises.hget(@key, field).should be_nil
28
+ end
29
+
23
30
  it "removes only the field specified" do
24
31
  @redises.hdel(@key, 'k1')
25
32
  @redises.hget(@key, 'k2').should == 'v2'
@@ -14,6 +14,11 @@ describe "#hexists(key, field)" do
14
14
  @redises.hexists(@key, 'nonesuch').should be_false
15
15
  end
16
16
 
17
+ it "treats the field as a string" do
18
+ @redises.hset(@key, 1, 'one')
19
+ @redises.hexists(@key, 1).should be_true
20
+ end
21
+
17
22
  it "returns nil when there is no such key" do
18
23
  @redises.hexists('mock-redis-test:nonesuch', 'key').should be_false
19
24
  end
@@ -11,6 +11,11 @@ describe "#hget(key, field)" do
11
11
  @redises.hget(@key, 'k1').should == 'v1'
12
12
  end
13
13
 
14
+ it "treats the field as a string" do
15
+ @redises.hset(@key, '3', 'v3')
16
+ @redises.hget(@key, 3).should == 'v3'
17
+ end
18
+
14
19
  it "returns nil when there is no such field" do
15
20
  @redises.hget(@key, 'nonesuch').should be_nil
16
21
  end
@@ -35,6 +35,12 @@ describe '#hincrby(key, field, increment)' do
35
35
  @redises.hincrby(@key, @field, "2").should == 2
36
36
  end
37
37
 
38
+ it "treats the field as a string" do
39
+ field = 11
40
+ @redises.hset(@key, field, 2)
41
+ @redises.hincrby(@key, field, 2).should == 4
42
+ end
43
+
38
44
  it "raises an error if the value does not look like an integer" do
39
45
  @redises.hset(@key, @field, "one")
40
46
  lambda do
@@ -11,6 +11,12 @@ describe "#hmget(key, field [, field, ...])" do
11
11
  @redises.hmget(@key, 'k1', 'k2').sort.should == %w[v1 v2]
12
12
  end
13
13
 
14
+ it "treats the fielsd as strings" do
15
+ @redises.hset(@key, 1, 'one')
16
+ @redises.hset(@key, 2, 'two')
17
+ @redises.hmget(@key, 1, 2).sort.should == %w[one two]
18
+ end
19
+
14
20
  it "returns nils when there are no such fields" do
15
21
  @redises.hmget(@key, 'k1', 'mock-redis-test:nonesuch').
16
22
  should == ['v1', nil]
@@ -19,5 +19,10 @@ describe "#hset(key, field)" do
19
19
  @redises.hget(@key, 'num').should == "1"
20
20
  end
21
21
 
22
+ it "stores fields as strings" do
23
+ @redises.hset(@key, 1, "one")
24
+ @redises.hget(@key, "1").should == "one"
25
+ end
26
+
22
27
  it_should_behave_like "a hash-only command"
23
28
  end
@@ -35,5 +35,10 @@ describe "#hsetnx(key, field)" do
35
35
  @redises.hget(@key, 'num').should == "1"
36
36
  end
37
37
 
38
+ it "stores fields as strings" do
39
+ @redises.hsetnx(@key, 1, "one")
40
+ @redises.hget(@key, "1").should == "one"
41
+ end
42
+
38
43
  it_should_behave_like "a hash-only command"
39
44
  end
@@ -17,6 +17,12 @@ describe "#zadd(key, score, member)" do
17
17
  @redises.zrange(@key, 0, -1).should == ['foo']
18
18
  end
19
19
 
20
+ it "treats integer members as strings" do
21
+ member = 11
22
+ @redises.zadd(@key, 1, member)
23
+ @redises.zrange(@key, 0, -1).should == [member.to_s]
24
+ end
25
+
20
26
  it "updates the score" do
21
27
  @redises.zadd(@key, 1, 'foo')
22
28
  @redises.zadd(@key, 2, 'foo')
@@ -15,6 +15,13 @@ describe "#zincrby(key, increment, member)" do
15
15
  @redises.zscore(@key, 'bert').should == "11"
16
16
  end
17
17
 
18
+ it "handles integer members correctly" do
19
+ member = 11
20
+ @redises.zadd(@key, 1, member)
21
+ @redises.zincrby(@key, 1, member)
22
+ @redises.zscore(@key, member).should == "2"
23
+ end
24
+
18
25
  it "adds missing members with score increment" do
19
26
  @redises.zincrby(@key, 5.5, 'bigbird').should == "5.5"
20
27
  end
@@ -19,5 +19,11 @@ describe "#zrank(key, member)" do
19
19
  @redises.zrank(@key, 'three').should == 2
20
20
  end
21
21
 
22
+ it "handles integer members correctly" do
23
+ member = 11
24
+ @redises.zadd(@key, 4, member)
25
+ @redises.zrank(@key, member).should == 3
26
+ end
27
+
22
28
  it_should_behave_like "a zset-only command"
23
29
  end
@@ -21,5 +21,12 @@ describe "#zrem(key, member)" do
21
21
  @redises.zrange(@key, 0, -1).should == ['two']
22
22
  end
23
23
 
24
+ it "removes integer member from the set" do
25
+ member = 11
26
+ @redises.zadd(@key, 3, member)
27
+ @redises.zrem(@key, member).should be_true
28
+ @redises.zrange(@key, 0, -1).should == ['one', 'two']
29
+ end
30
+
24
31
  it_should_behave_like "a zset-only command"
25
32
  end
@@ -19,5 +19,11 @@ describe "#zrevrank(key, member)" do
19
19
  @redises.zrevrank(@key, 'three').should == 0
20
20
  end
21
21
 
22
+ it "handles integer members correctly" do
23
+ member = 11
24
+ @redises.zadd(@key, 4, member)
25
+ @redises.zrevrank(@key, member).should == 0
26
+ end
27
+
22
28
  it_should_behave_like "a zset-only command"
23
29
  end
@@ -8,6 +8,12 @@ describe "#zscore(key, member)" do
8
8
  @redises.zscore(@key, 'foo').should == "0.25"
9
9
  end
10
10
 
11
+ it "handles integer members correctly" do
12
+ member = 11
13
+ @redises.zadd(@key, 0.25, member).should be_true
14
+ @redises.zscore(@key, member).should == "0.25"
15
+ end
16
+
11
17
  it "returns nil if member is not present in the set" do
12
18
  @redises.zscore(@key, 'foo').should be_nil
13
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mock_redis
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 0
9
+ - 1
10
10
  segments_generated: true
11
- version: 0.4.0
11
+ version: 0.4.1
12
12
  platform: ruby
13
13
  authors:
14
14
  - Causes Engineering
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2012-03-04 00:00:00 -08:00
20
+ date: 2012-03-24 00:00:00 -07:00
21
21
  default_executable:
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
@@ -82,6 +82,7 @@ extra_rdoc_files: []
82
82
 
83
83
  files:
84
84
  - .gitignore
85
+ - .mailmap
85
86
  - .rspec
86
87
  - CHANGELOG.md
87
88
  - Gemfile