mock_redis 0.36.0 → 0.37.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.
Files changed (197) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +1 -1
  4. data/lib/mock_redis/database.rb +1 -1
  5. data/lib/mock_redis/hash_methods.rb +1 -1
  6. data/lib/mock_redis/list_methods.rb +7 -2
  7. data/lib/mock_redis/multi_db_wrapper.rb +1 -1
  8. data/lib/mock_redis/pipelined_wrapper.rb +12 -14
  9. data/lib/mock_redis/set_methods.rb +6 -1
  10. data/lib/mock_redis/stream.rb +3 -3
  11. data/lib/mock_redis/string_methods.rb +3 -3
  12. data/lib/mock_redis/transaction_wrapper.rb +5 -7
  13. data/lib/mock_redis/utility_methods.rb +4 -2
  14. data/lib/mock_redis/version.rb +1 -1
  15. data/lib/mock_redis/zset.rb +4 -2
  16. data/lib/mock_redis/zset_methods.rb +3 -3
  17. data/lib/mock_redis.rb +1 -2
  18. metadata +19 -360
  19. data/.github/workflows/lint.yml +0 -31
  20. data/.github/workflows/tests.yml +0 -63
  21. data/.gitignore +0 -5
  22. data/.mailmap +0 -2
  23. data/.overcommit.yml +0 -21
  24. data/.rspec +0 -1
  25. data/.rubocop.yml +0 -148
  26. data/.rubocop_todo.yml +0 -35
  27. data/.simplecov +0 -4
  28. data/Gemfile +0 -13
  29. data/Rakefile +0 -2
  30. data/mock_redis.gemspec +0 -32
  31. data/spec/client_spec.rb +0 -36
  32. data/spec/cloning_spec.rb +0 -95
  33. data/spec/commands/append_spec.rb +0 -24
  34. data/spec/commands/auth_spec.rb +0 -7
  35. data/spec/commands/bgrewriteaof_spec.rb +0 -7
  36. data/spec/commands/bgsave_spec.rb +0 -7
  37. data/spec/commands/bitcount_spec.rb +0 -25
  38. data/spec/commands/bitfield_spec.rb +0 -169
  39. data/spec/commands/blmove_spec.rb +0 -52
  40. data/spec/commands/blpop_spec.rb +0 -53
  41. data/spec/commands/brpop_spec.rb +0 -59
  42. data/spec/commands/brpoplpush_spec.rb +0 -52
  43. data/spec/commands/connected_spec.rb +0 -7
  44. data/spec/commands/connection_spec.rb +0 -15
  45. data/spec/commands/dbsize_spec.rb +0 -18
  46. data/spec/commands/decr_spec.rb +0 -34
  47. data/spec/commands/decrby_spec.rb +0 -34
  48. data/spec/commands/del_spec.rb +0 -52
  49. data/spec/commands/disconnect_spec.rb +0 -7
  50. data/spec/commands/dump_spec.rb +0 -19
  51. data/spec/commands/echo_spec.rb +0 -11
  52. data/spec/commands/eval_spec.rb +0 -7
  53. data/spec/commands/evalsha_spec.rb +0 -10
  54. data/spec/commands/exists_spec.rb +0 -43
  55. data/spec/commands/expire_spec.rb +0 -111
  56. data/spec/commands/expireat_spec.rb +0 -47
  57. data/spec/commands/flushall_spec.rb +0 -38
  58. data/spec/commands/flushdb_spec.rb +0 -38
  59. data/spec/commands/future_spec.rb +0 -30
  60. data/spec/commands/geoadd_spec.rb +0 -58
  61. data/spec/commands/geodist_spec.rb +0 -118
  62. data/spec/commands/geohash_spec.rb +0 -52
  63. data/spec/commands/geopos_spec.rb +0 -55
  64. data/spec/commands/get_spec.rb +0 -31
  65. data/spec/commands/getbit_spec.rb +0 -34
  66. data/spec/commands/getdel.rb +0 -24
  67. data/spec/commands/getrange_spec.rb +0 -22
  68. data/spec/commands/getset_spec.rb +0 -23
  69. data/spec/commands/hdel_spec.rb +0 -77
  70. data/spec/commands/hexists_spec.rb +0 -27
  71. data/spec/commands/hget_spec.rb +0 -28
  72. data/spec/commands/hgetall_spec.rb +0 -32
  73. data/spec/commands/hincrby_spec.rb +0 -58
  74. data/spec/commands/hincrbyfloat_spec.rb +0 -58
  75. data/spec/commands/hkeys_spec.rb +0 -19
  76. data/spec/commands/hlen_spec.rb +0 -19
  77. data/spec/commands/hmget_spec.rb +0 -46
  78. data/spec/commands/hmset_spec.rb +0 -69
  79. data/spec/commands/hscan_each_spec.rb +0 -48
  80. data/spec/commands/hscan_spec.rb +0 -27
  81. data/spec/commands/hset_spec.rb +0 -42
  82. data/spec/commands/hsetnx_spec.rb +0 -44
  83. data/spec/commands/hvals_spec.rb +0 -19
  84. data/spec/commands/incr_spec.rb +0 -34
  85. data/spec/commands/incrby_spec.rb +0 -44
  86. data/spec/commands/incrbyfloat_spec.rb +0 -44
  87. data/spec/commands/info_spec.rb +0 -62
  88. data/spec/commands/keys_spec.rb +0 -139
  89. data/spec/commands/lastsave_spec.rb +0 -8
  90. data/spec/commands/lindex_spec.rb +0 -49
  91. data/spec/commands/linsert_spec.rb +0 -68
  92. data/spec/commands/llen_spec.rb +0 -16
  93. data/spec/commands/lmove_spec.rb +0 -72
  94. data/spec/commands/lpop_spec.rb +0 -35
  95. data/spec/commands/lpush_spec.rb +0 -43
  96. data/spec/commands/lpushx_spec.rb +0 -46
  97. data/spec/commands/lrange_spec.rb +0 -51
  98. data/spec/commands/lrem_spec.rb +0 -80
  99. data/spec/commands/lset_spec.rb +0 -43
  100. data/spec/commands/ltrim_spec.rb +0 -45
  101. data/spec/commands/mapped_hmget_spec.rb +0 -29
  102. data/spec/commands/mapped_hmset_spec.rb +0 -47
  103. data/spec/commands/mapped_mget_spec.rb +0 -22
  104. data/spec/commands/mapped_mset_spec.rb +0 -19
  105. data/spec/commands/mapped_msetnx_spec.rb +0 -26
  106. data/spec/commands/mget_spec.rb +0 -65
  107. data/spec/commands/move_spec.rb +0 -147
  108. data/spec/commands/mset_spec.rb +0 -43
  109. data/spec/commands/msetnx_spec.rb +0 -40
  110. data/spec/commands/persist_spec.rb +0 -48
  111. data/spec/commands/pexpire_spec.rb +0 -86
  112. data/spec/commands/pexpireat_spec.rb +0 -48
  113. data/spec/commands/ping_spec.rb +0 -11
  114. data/spec/commands/pipelined_spec.rb +0 -114
  115. data/spec/commands/psetex_spec.rb +0 -44
  116. data/spec/commands/pttl_spec.rb +0 -41
  117. data/spec/commands/quit_spec.rb +0 -7
  118. data/spec/commands/randomkey_spec.rb +0 -20
  119. data/spec/commands/rename_spec.rb +0 -42
  120. data/spec/commands/renamenx_spec.rb +0 -41
  121. data/spec/commands/restore_spec.rb +0 -47
  122. data/spec/commands/rpop_spec.rb +0 -35
  123. data/spec/commands/rpoplpush_spec.rb +0 -50
  124. data/spec/commands/rpush_spec.rb +0 -43
  125. data/spec/commands/rpushx_spec.rb +0 -46
  126. data/spec/commands/sadd_spec.rb +0 -45
  127. data/spec/commands/save_spec.rb +0 -7
  128. data/spec/commands/scan_each_spec.rb +0 -39
  129. data/spec/commands/scan_spec.rb +0 -64
  130. data/spec/commands/scard_spec.rb +0 -18
  131. data/spec/commands/script_spec.rb +0 -9
  132. data/spec/commands/sdiff_spec.rb +0 -47
  133. data/spec/commands/sdiffstore_spec.rb +0 -58
  134. data/spec/commands/select_spec.rb +0 -61
  135. data/spec/commands/set_spec.rb +0 -134
  136. data/spec/commands/setbit_spec.rb +0 -55
  137. data/spec/commands/setex_spec.rb +0 -38
  138. data/spec/commands/setnx_spec.rb +0 -25
  139. data/spec/commands/setrange_spec.rb +0 -30
  140. data/spec/commands/sinter_spec.rb +0 -39
  141. data/spec/commands/sinterstore_spec.rb +0 -53
  142. data/spec/commands/sismember_spec.rb +0 -29
  143. data/spec/commands/smembers_spec.rb +0 -28
  144. data/spec/commands/smismember_spec.rb +0 -34
  145. data/spec/commands/smove_spec.rb +0 -41
  146. data/spec/commands/sort_list_spec.rb +0 -21
  147. data/spec/commands/sort_set_spec.rb +0 -21
  148. data/spec/commands/sort_zset_spec.rb +0 -21
  149. data/spec/commands/spop_spec.rb +0 -40
  150. data/spec/commands/srandmember_spec.rb +0 -49
  151. data/spec/commands/srem_spec.rb +0 -45
  152. data/spec/commands/sscan_each_spec.rb +0 -48
  153. data/spec/commands/sscan_spec.rb +0 -39
  154. data/spec/commands/strlen_spec.rb +0 -18
  155. data/spec/commands/sunion_spec.rb +0 -42
  156. data/spec/commands/sunionstore_spec.rb +0 -59
  157. data/spec/commands/ttl_spec.rb +0 -40
  158. data/spec/commands/type_spec.rb +0 -36
  159. data/spec/commands/unwatch_spec.rb +0 -7
  160. data/spec/commands/watch_spec.rb +0 -21
  161. data/spec/commands/xadd_spec.rb +0 -122
  162. data/spec/commands/xlen_spec.rb +0 -22
  163. data/spec/commands/xrange_spec.rb +0 -164
  164. data/spec/commands/xread_spec.rb +0 -66
  165. data/spec/commands/xrevrange_spec.rb +0 -130
  166. data/spec/commands/xtrim_spec.rb +0 -36
  167. data/spec/commands/zadd_spec.rb +0 -129
  168. data/spec/commands/zcard_spec.rb +0 -19
  169. data/spec/commands/zcount_spec.rb +0 -39
  170. data/spec/commands/zincrby_spec.rb +0 -31
  171. data/spec/commands/zinterstore_spec.rb +0 -130
  172. data/spec/commands/zpopmax_spec.rb +0 -60
  173. data/spec/commands/zpopmin_spec.rb +0 -60
  174. data/spec/commands/zrange_spec.rb +0 -80
  175. data/spec/commands/zrangebyscore_spec.rb +0 -83
  176. data/spec/commands/zrank_spec.rb +0 -29
  177. data/spec/commands/zrem_spec.rb +0 -50
  178. data/spec/commands/zremrangebyrank_spec.rb +0 -27
  179. data/spec/commands/zremrangebyscore_spec.rb +0 -35
  180. data/spec/commands/zrevrange_spec.rb +0 -56
  181. data/spec/commands/zrevrangebyscore_spec.rb +0 -58
  182. data/spec/commands/zrevrank_spec.rb +0 -29
  183. data/spec/commands/zscan_each_spec.rb +0 -48
  184. data/spec/commands/zscan_spec.rb +0 -26
  185. data/spec/commands/zscore_spec.rb +0 -22
  186. data/spec/commands/zunionstore_spec.rb +0 -137
  187. data/spec/mock_redis_spec.rb +0 -93
  188. data/spec/spec_helper.rb +0 -74
  189. data/spec/support/redis_multiplexer.rb +0 -123
  190. data/spec/support/shared_examples/does_not_cleanup_empty_strings.rb +0 -14
  191. data/spec/support/shared_examples/only_operates_on_hashes.rb +0 -15
  192. data/spec/support/shared_examples/only_operates_on_lists.rb +0 -15
  193. data/spec/support/shared_examples/only_operates_on_sets.rb +0 -15
  194. data/spec/support/shared_examples/only_operates_on_strings.rb +0 -13
  195. data/spec/support/shared_examples/only_operates_on_zsets.rb +0 -59
  196. data/spec/support/shared_examples/sorts_enumerables.rb +0 -56
  197. data/spec/transactions_spec.rb +0 -163
@@ -1,58 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#hincrbyfloat(key, field, increment)' do
4
- before do
5
- @key = 'mock-redis-test:hincrbyfloat'
6
- @field = 'count'
7
- end
8
-
9
- it 'returns the value after the increment' do
10
- @redises.hset(@key, @field, 2.0)
11
- @redises.hincrbyfloat(@key, @field, 2.1).should be_within(0.0001).of(4.1)
12
- end
13
-
14
- it 'treats a missing key like 0' do
15
- @redises.hincrbyfloat(@key, @field, 1.2).should be_within(0.0001).of(1.2)
16
- end
17
-
18
- it 'creates a hash if nothing is present' do
19
- @redises.hincrbyfloat(@key, @field, 1.0)
20
- @redises.hget(@key, @field).should == '1'
21
- end
22
-
23
- it 'increments negative numbers' do
24
- @redises.hset(@key, @field, -10.4)
25
- @redises.hincrbyfloat(@key, @field, 2.3).should be_within(0.0001).of(-8.1)
26
- end
27
-
28
- it 'works multiple times' do
29
- @redises.hincrbyfloat(@key, @field, 2.1).should be_within(0.0001).of(2.1)
30
- @redises.hincrbyfloat(@key, @field, 2.2).should be_within(0.0001).of(4.3)
31
- @redises.hincrbyfloat(@key, @field, 2.3).should be_within(0.0001).of(6.6)
32
- end
33
-
34
- it 'accepts a float-ish string' do
35
- @redises.hincrbyfloat(@key, @field, '2.2').should be_within(0.0001).of(2.2)
36
- end
37
-
38
- it 'treats the field as a string' do
39
- field = 11
40
- @redises.hset(@key, field, 2)
41
- @redises.hincrbyfloat(@key, field, 2).should == 4.0
42
- end
43
-
44
- it 'raises an error if the value does not look like a float' do
45
- @redises.hset(@key, @field, 'one.two')
46
- lambda do
47
- @redises.hincrbyfloat(@key, @field, 1)
48
- end.should raise_error(Redis::CommandError)
49
- end
50
-
51
- it 'raises an error if the delta does not look like a float' do
52
- lambda do
53
- @redises.hincrbyfloat(@key, @field, 'foobar.baz')
54
- end.should raise_error(Redis::CommandError)
55
- end
56
-
57
- it_should_behave_like 'a hash-only command'
58
- end
@@ -1,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#hkeys(key)' do
4
- before do
5
- @key = 'mock-redis-test:hkeys'
6
- @redises.hset(@key, 'k1', 'v1')
7
- @redises.hset(@key, 'k2', 'v2')
8
- end
9
-
10
- it 'returns the keys stored in the hash' do
11
- @redises.hkeys(@key).sort.should == %w[k1 k2]
12
- end
13
-
14
- it 'returns [] when there is no such key' do
15
- @redises.hkeys('mock-redis-test:nonesuch').should == []
16
- end
17
-
18
- it_should_behave_like 'a hash-only command'
19
- end
@@ -1,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#hlen(key)' do
4
- before do
5
- @key = 'mock-redis-test:hlen'
6
- @redises.hset(@key, 'k1', 'v1')
7
- @redises.hset(@key, 'k2', 'v2')
8
- end
9
-
10
- it 'returns the number of keys stored in the hash' do
11
- @redises.hlen(@key).should == 2
12
- end
13
-
14
- it 'returns [] when there is no such key' do
15
- @redises.hlen('mock-redis-test:nonesuch').should == 0
16
- end
17
-
18
- it_should_behave_like 'a hash-only command'
19
- end
@@ -1,46 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#hmget(key, field [, field, ...])' do
4
- before do
5
- @key = 'mock-redis-test:hmget'
6
- @redises.hset(@key, 'k1', 'v1')
7
- @redises.hset(@key, 'k2', 'v2')
8
- end
9
-
10
- it 'returns the values for those keys' do
11
- @redises.hmget(@key, 'k1', 'k2').sort.should == %w[v1 v2]
12
- end
13
-
14
- it 'treats an array as multiple keys' do
15
- @redises.hmget(@key, %w[k1 k2]).sort.should == %w[v1 v2]
16
- end
17
-
18
- it 'treats the fielsd as strings' do
19
- @redises.hset(@key, 1, 'one')
20
- @redises.hset(@key, 2, 'two')
21
- @redises.hmget(@key, 1, 2).sort.should == %w[one two]
22
- end
23
-
24
- it 'returns nils when there are no such fields' do
25
- @redises.hmget(@key, 'k1', 'mock-redis-test:nonesuch').
26
- should == ['v1', nil]
27
- end
28
-
29
- it 'returns nils when there is no such key' do
30
- @redises.hmget(@key, 'mock-redis-test:nonesuch').should == [nil]
31
- end
32
-
33
- it 'raises an error if given no fields' do
34
- lambda do
35
- @redises.hmget(@key)
36
- end.should raise_error(Redis::CommandError)
37
- end
38
-
39
- it 'raises an error if given an empty list of fields' do
40
- lambda do
41
- @redises.hmget(@key, [])
42
- end.should raise_error(Redis::CommandError)
43
- end
44
-
45
- it_should_behave_like 'a hash-only command'
46
- end
@@ -1,69 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#hmset(key, field, value [, field, value ...])' do
4
- before do
5
- @key = 'mock-redis-test:hmset'
6
- end
7
-
8
- it "returns 'OK'" do
9
- @redises.hmset(@key, 'k1', 'v1', 'k2', 'v2').should == 'OK'
10
- end
11
-
12
- it 'sets the values' do
13
- @redises.hmset(@key, 'k1', 'v1', 'k2', 'v2')
14
- @redises.hmget(@key, 'k1', 'k2').should == %w[v1 v2]
15
- end
16
-
17
- it 'updates an existing hash' do
18
- @redises.hset(@key, 'foo', 'bar')
19
- @redises.hmset(@key, 'bert', 'ernie', 'diet', 'coke')
20
-
21
- @redises.hmget(@key, 'foo', 'bert', 'diet').
22
- should == %w[bar ernie coke]
23
- end
24
-
25
- it 'stores the values as strings' do
26
- @redises.hmset(@key, 'one', 1)
27
- @redises.hget(@key, 'one').should == '1'
28
- end
29
-
30
- it 'raises an error if given no fields or values' do
31
- lambda do
32
- @redises.hmset(@key)
33
- end.should raise_error(Redis::CommandError)
34
- end
35
-
36
- it 'raises an error if given an odd number of fields+values' do
37
- lambda do
38
- @redises.hmset(@key, 'k1', 1, 'k2')
39
- end.should raise_error(Redis::CommandError)
40
- end
41
-
42
- # The following tests address https://github.com/sds/mock_redis/issues/170
43
- context 'keys are stored as strings' do
44
- before do
45
- @redises.hmset(1, :foo, :bar)
46
- @redises.hmset(:a_sym, :boo, :bas)
47
- end
48
-
49
- it { expect(@redises.hgetall('1')).to eq @redises.hgetall(1) }
50
- it { expect(@redises.hgetall('a_sym')).to eq @redises.hgetall(:a_sym) }
51
- it { expect(@redises.del('1')).to eq 1 }
52
- it { expect(@redises.del(1)).to eq 1 }
53
- it { expect(@redises.del('a_sym')).to eq 1 }
54
- it { expect(@redises.del(:a_sym)).to eq 1 }
55
-
56
- after do
57
- @redises.del(1)
58
- @redises.del(:a_sym)
59
- end
60
- end
61
-
62
- # The following tests address https://github.com/sds/mock_redis/issues/134
63
- context 'hmset accepts an array as its only argument' do
64
- it { expect(@redises.hmset([@key, :bar, :bas])).to eq 'OK' }
65
- it { lambda { @redises.hmset([:foo, :bar]) }.should raise_error(Redis::CommandError) }
66
- end
67
-
68
- it_should_behave_like 'a hash-only command'
69
- end
@@ -1,48 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#hscan_each' do
4
- subject { MockRedis::Database.new(self) }
5
-
6
- let(:key) { 'mock-redis-test:hscan_each' }
7
-
8
- before do
9
- allow(subject).to receive(:hgetall).and_return(collection)
10
- end
11
-
12
- context 'when no keys are found' do
13
- let(:collection) { [] }
14
-
15
- it 'does not iterate over any elements' do
16
- results = subject.hscan_each(key).map do |k, v|
17
- [k, v]
18
- end
19
- expect(results).to match_array(collection)
20
- end
21
- end
22
-
23
- context 'when keys are found' do
24
- context 'when no match filter is supplied' do
25
- let(:collection) { Array.new(20) { |i| ["k#{i}", "v#{i}"] } }
26
-
27
- it 'iterates over each item in the collection' do
28
- results = subject.hscan_each(key).map do |k, v|
29
- [k, v]
30
- end
31
- expect(results).to match_array(collection)
32
- end
33
- end
34
-
35
- context 'when giving a custom match filter' do
36
- let(:match) { 'k1*' }
37
- let(:collection) { Array.new(12) { |i| ["k#{i}", "v#{i}"] } }
38
- let(:expected) { [%w[k1 v1], %w[k10 v10], %w[k11 v11]] }
39
-
40
- it 'iterates over each item in the filtered collection' do
41
- results = subject.hscan_each(key, match: match).map do |k, v|
42
- [k, v]
43
- end
44
- expect(results).to match_array(expected)
45
- end
46
- end
47
- end
48
- end
@@ -1,27 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#hscan' do
4
- let(:count) { 10 }
5
- let(:match) { '*' }
6
- let(:key) { 'mock-redis-test:hscan' }
7
-
8
- context 'when the hash does not exist' do
9
- it 'returns a 0 cursor and an empty collection' do
10
- expect(@redises.hscan(key, 0, count: count, match: match)).to eq(['0', []])
11
- end
12
- end
13
-
14
- context 'when the hash exists' do
15
- before do
16
- @redises.hset(key, 'k1', 'v1')
17
- @redises.hset(key, 'k2', 'v2')
18
- @redises.hset(key, 'k3', 'v3')
19
- end
20
-
21
- let(:expected) { ['0', [%w[k1 v1], %w[k2 v2], %w[k3 v3]]] }
22
-
23
- it 'returns a 0 cursor and the collection' do
24
- expect(@redises.hscan(key, 0, count: 10)).to eq(expected)
25
- end
26
- end
27
- end
@@ -1,42 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#hset(key, field)' do
4
- before do
5
- @key = 'mock-redis-test:hset'
6
- end
7
-
8
- it 'returns 1 if the key does not exist' do
9
- @redises.hset(@key, 'k1', 'v1').should == 1
10
- end
11
-
12
- it 'returns 1 if the key exists but the field does not' do
13
- @redises.hset(@key, 'k1', 'v1')
14
- @redises.hset(@key, 'k2', 'v2').should == 1
15
- end
16
-
17
- it 'returns 0 if the field already exists' do
18
- @redises.hset(@key, 'k1', 'v1')
19
- @redises.hset(@key, 'k1', 'v1').should == 0
20
- end
21
-
22
- it 'creates a hash there is no such field' do
23
- @redises.hset(@key, 'k1', 'v1')
24
- @redises.hget(@key, 'k1').should == 'v1'
25
- end
26
-
27
- it 'stores values as strings' do
28
- @redises.hset(@key, 'num', 1)
29
- @redises.hget(@key, 'num').should == '1'
30
- end
31
-
32
- it 'stores fields as strings' do
33
- @redises.hset(@key, 1, 'one')
34
- @redises.hget(@key, '1').should == 'one'
35
- end
36
-
37
- it 'stores fields sent in a hash' do
38
- @redises.hset(@key, { 'k1' => 'v1', 'k2' => 'v2' }).should == 2
39
- end
40
-
41
- it_should_behave_like 'a hash-only command'
42
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#hsetnx(key, field)' do
4
- before do
5
- @key = 'mock-redis-test:hsetnx'
6
- end
7
-
8
- it 'returns true if the field is absent' do
9
- @redises.hsetnx(@key, 'field', 'val').should == true
10
- end
11
-
12
- it 'returns 0 if the field is present' do
13
- @redises.hset(@key, 'field', 'val')
14
- @redises.hsetnx(@key, 'field', 'val').should == false
15
- end
16
-
17
- it 'leaves the field unchanged if the field is present' do
18
- @redises.hset(@key, 'field', 'old')
19
- @redises.hsetnx(@key, 'field', 'new')
20
- @redises.hget(@key, 'field').should == 'old'
21
- end
22
-
23
- it 'sets the field if the field is absent' do
24
- @redises.hsetnx(@key, 'field', 'new')
25
- @redises.hget(@key, 'field').should == 'new'
26
- end
27
-
28
- it 'creates a hash if there is no such field' do
29
- @redises.hsetnx(@key, 'field', 'val')
30
- @redises.hget(@key, 'field').should == 'val'
31
- end
32
-
33
- it 'stores values as strings' do
34
- @redises.hsetnx(@key, 'num', 1)
35
- @redises.hget(@key, 'num').should == '1'
36
- end
37
-
38
- it 'stores fields as strings' do
39
- @redises.hsetnx(@key, 1, 'one')
40
- @redises.hget(@key, '1').should == 'one'
41
- end
42
-
43
- it_should_behave_like 'a hash-only command'
44
- end
@@ -1,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#hvals(key)' do
4
- before do
5
- @key = 'mock-redis-test:hvals'
6
- @redises.hset(@key, 'k1', 'v1')
7
- @redises.hset(@key, 'k2', 'v2')
8
- end
9
-
10
- it 'returns the values stored in the hash' do
11
- @redises.hvals(@key).sort.should == %w[v1 v2]
12
- end
13
-
14
- it 'returns [] when there is no such key' do
15
- @redises.hvals('mock-redis-test:nonesuch').should == []
16
- end
17
-
18
- it_should_behave_like 'a hash-only command'
19
- end
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#incr(key)' do
4
- before { @key = 'mock-redis-test:33888' }
5
-
6
- it 'returns the value after the increment' do
7
- @redises.set(@key, 1)
8
- @redises.incr(@key).should == 2
9
- end
10
-
11
- it 'treats a missing key like 0' do
12
- @redises.incr(@key).should == 1
13
- end
14
-
15
- it 'increments negative numbers' do
16
- @redises.set(@key, -10)
17
- @redises.incr(@key).should == -9
18
- end
19
-
20
- it 'works multiple times' do
21
- @redises.incr(@key).should == 1
22
- @redises.incr(@key).should == 2
23
- @redises.incr(@key).should == 3
24
- end
25
-
26
- it 'raises an error if the value does not look like an integer' do
27
- @redises.set(@key, 'one')
28
- lambda do
29
- @redises.incr(@key)
30
- end.should raise_error(Redis::CommandError)
31
- end
32
-
33
- it_should_behave_like 'a string-only command'
34
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#incrby(key, increment)' do
4
- before { @key = 'mock-redis-test:65374' }
5
-
6
- it 'returns the value after the increment' do
7
- @redises.set(@key, 2)
8
- @redises.incrby(@key, 2).should == 4
9
- end
10
-
11
- it 'treats a missing key like 0' do
12
- @redises.incrby(@key, 1).should == 1
13
- end
14
-
15
- it 'increments negative numbers' do
16
- @redises.set(@key, -10)
17
- @redises.incrby(@key, 2).should == -8
18
- end
19
-
20
- it 'works multiple times' do
21
- @redises.incrby(@key, 2).should == 2
22
- @redises.incrby(@key, 2).should == 4
23
- @redises.incrby(@key, 2).should == 6
24
- end
25
-
26
- it 'accepts an integer-ish string' do
27
- @redises.incrby(@key, '2').should == 2
28
- end
29
-
30
- it 'raises an error if the value does not look like an integer' do
31
- @redises.set(@key, 'one')
32
- lambda do
33
- @redises.incrby(@key, 1)
34
- end.should raise_error(Redis::CommandError)
35
- end
36
-
37
- it 'raises an error if the delta does not look like an integer' do
38
- lambda do
39
- @redises.incrby(@key, 'foo')
40
- end.should raise_error(Redis::CommandError)
41
- end
42
-
43
- it_should_behave_like 'a string-only command'
44
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#incrbyfloat(key, increment)' do
4
- before { @key = 'mock-redis-test:65374' }
5
-
6
- it 'returns the value after the increment' do
7
- @redises.set(@key, 2.0)
8
- @redises.incrbyfloat(@key, 2.1).should be_within(0.0001).of(4.1)
9
- end
10
-
11
- it 'treats a missing key like 0' do
12
- @redises.incrbyfloat(@key, 1.2).should be_within(0.0001).of(1.2)
13
- end
14
-
15
- it 'increments negative numbers' do
16
- @redises.set(@key, -10.4)
17
- @redises.incrbyfloat(@key, 2.3).should be_within(0.0001).of(-8.1)
18
- end
19
-
20
- it 'works multiple times' do
21
- @redises.incrbyfloat(@key, 2.1).should be_within(0.0001).of(2.1)
22
- @redises.incrbyfloat(@key, 2.2).should be_within(0.0001).of(4.3)
23
- @redises.incrbyfloat(@key, 2.3).should be_within(0.0001).of(6.6)
24
- end
25
-
26
- it 'accepts an float-ish string' do
27
- @redises.incrbyfloat(@key, '2.2').should be_within(0.0001).of(2.2)
28
- end
29
-
30
- it 'raises an error if the value does not look like an float' do
31
- @redises.set(@key, 'one.two')
32
- lambda do
33
- @redises.incrbyfloat(@key, 1)
34
- end.should raise_error(Redis::CommandError)
35
- end
36
-
37
- it 'raises an error if the delta does not look like an float' do
38
- lambda do
39
- @redises.incrbyfloat(@key, 'foobar.baz')
40
- end.should raise_error(Redis::CommandError)
41
- end
42
-
43
- it_should_behave_like 'a string-only command'
44
- end
@@ -1,62 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#info [mock only]' do
4
- let(:redis) { @redises.mock }
5
-
6
- it 'responds with a config hash' do
7
- redis.info.should be_a(Hash)
8
- end
9
-
10
- it 'gets default set of info' do
11
- info = redis.info
12
- info['arch_bits'].should be_a(String)
13
- info['connected_clients'].should be_a(String)
14
- info['aof_rewrite_scheduled'].should be_a(String)
15
- info['used_cpu_sys'].should be_a(String)
16
- end
17
-
18
- it 'gets all info' do
19
- info = redis.info(:all)
20
- info['arch_bits'].should be_a(String)
21
- info['connected_clients'].should be_a(String)
22
- info['aof_rewrite_scheduled'].should be_a(String)
23
- info['used_cpu_sys'].should be_a(String)
24
- info['cmdstat_slowlog'].should be_a(String)
25
- end
26
-
27
- it 'gets server info' do
28
- redis.info(:server)['arch_bits'].should be_a(String)
29
- end
30
-
31
- it 'gets clients info' do
32
- redis.info(:clients)['connected_clients'].should be_a(String)
33
- end
34
-
35
- it 'gets memory info' do
36
- redis.info(:memory)['used_memory'].should be_a(String)
37
- end
38
-
39
- it 'gets persistence info' do
40
- redis.info(:persistence)['aof_rewrite_scheduled'].should be_a(String)
41
- end
42
-
43
- it 'gets stats info' do
44
- redis.info(:stats)['keyspace_hits'].should be_a(String)
45
- end
46
-
47
- it 'gets replication info' do
48
- redis.info(:replication)['role'].should be_a(String)
49
- end
50
-
51
- it 'gets cpu info' do
52
- redis.info(:cpu)['used_cpu_sys'].should be_a(String)
53
- end
54
-
55
- it 'gets keyspace info' do
56
- redis.info(:keyspace)['db0'].should be_a(String)
57
- end
58
-
59
- it 'gets commandstats info' do
60
- redis.info(:commandstats)['sunionstore']['usec'].should be_a(String)
61
- end
62
- end