mock_redis 0.4.0 → 0.4.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/.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