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,28 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#smembers(key)' do
4
- before { @key = 'mock-redis-test:smembers' }
5
-
6
- it 'returns [] for an empty set' do
7
- @redises.smembers(@key).should == []
8
- end
9
-
10
- it "returns the set's members" do
11
- @redises.sadd(@key, 'Hello')
12
- @redises.sadd(@key, 'World')
13
- @redises.sadd(@key, 'Test')
14
- @redises.smembers(@key).should == %w[Test World Hello]
15
- end
16
-
17
- it 'returns unfrozen copies of the input' do
18
- input = 'a string'
19
- @redises.sadd(@key, input)
20
- output = @redises.smembers(@key).first
21
-
22
- expect(output).to eq input
23
- expect(output).to_not equal input
24
- expect(output).to_not be_frozen
25
- end
26
-
27
- it_should_behave_like 'a set-only command'
28
- end
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#smismember(key, *members)' do
4
- before do
5
- @key = 'mock-redis-test:smismember'
6
- @redises.sadd(@key, 'whiskey')
7
- @redises.sadd(@key, 'beer')
8
- end
9
-
10
- it 'returns true if member is in set' do
11
- @redises.smismember(@key, 'whiskey').should == [true]
12
- @redises.smismember(@key, 'beer').should == [true]
13
- @redises.smismember(@key, 'whiskey', 'beer').should == [true, true]
14
- @redises.smismember(@key, %w[whiskey beer]).should == [true, true]
15
- end
16
-
17
- it 'returns false if member is not in set' do
18
- @redises.smismember(@key, 'cola').should == [false]
19
- @redises.smismember(@key, 'whiskey', 'cola').should == [true, false]
20
- @redises.smismember(@key, %w[whiskey beer cola]).should == [true, true, false]
21
- end
22
-
23
- it 'stringifies member' do
24
- @redises.sadd(@key, '1')
25
- @redises.smismember(@key, 1).should == [true]
26
- @redises.smismember(@key, [1]).should == [true]
27
- end
28
-
29
- it 'treats a nonexistent value as an empty set' do
30
- @redises.smismember('mock-redis-test:nonesuch', 'beer').should == [false]
31
- end
32
-
33
- it_should_behave_like 'a set-only command'
34
- end
@@ -1,41 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#smove(source, destination, member)' do
4
- before do
5
- @src = 'mock-redis-test:smove-source'
6
- @dest = 'mock-redis-test:smove-destination'
7
-
8
- @redises.sadd(@src, 1)
9
- @redises.sadd(@dest, 2)
10
- end
11
-
12
- it 'returns true if the member exists in src' do
13
- @redises.smove(@src, @dest, 1).should == true
14
- end
15
-
16
- it 'returns false if the member exists in src' do
17
- @redises.smove(@src, @dest, 'nope').should == false
18
- end
19
-
20
- it 'returns true if the member exists in src and dest' do
21
- @redises.sadd(@dest, 1)
22
- @redises.smove(@src, @dest, 1).should == true
23
- end
24
-
25
- it 'moves member from source to destination' do
26
- @redises.smove(@src, @dest, 1)
27
- @redises.sismember(@dest, 1).should == true
28
- @redises.sismember(@src, 1).should == false
29
- end
30
-
31
- it 'cleans up empty sets' do
32
- @redises.smove(@src, @dest, 1)
33
- @redises.get(@src).should be_nil
34
- end
35
-
36
- it 'treats a nonexistent value as an empty set' do
37
- @redises.smove('mock-redis-test:nonesuch', @dest, 1).should == false
38
- end
39
-
40
- it_should_behave_like 'a set-only command'
41
- end
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#sort(key, options)' do
4
- before do
5
- @key = 'mock-redis-test:list_sort'
6
-
7
- @redises.rpush(@key, '1')
8
- @redises.rpush(@key, '2')
9
-
10
- @redises.set('mock-redis-test:values_1', 'a')
11
- @redises.set('mock-redis-test:values_2', 'b')
12
-
13
- @redises.set('mock-redis-test:weight_1', '2')
14
- @redises.set('mock-redis-test:weight_2', '1')
15
-
16
- @redises.hset('mock-redis-test:hash_1', 'key', 'x')
17
- @redises.hset('mock-redis-test:hash_2', 'key', 'y')
18
- end
19
-
20
- it_should_behave_like 'a sortable'
21
- end
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#sort(key, options)' do
4
- before do
5
- @key = 'mock-redis-test:set_sort'
6
-
7
- @redises.sadd(@key, '1')
8
- @redises.sadd(@key, '2')
9
-
10
- @redises.set('mock-redis-test:values_1', 'a')
11
- @redises.set('mock-redis-test:values_2', 'b')
12
-
13
- @redises.set('mock-redis-test:weight_1', '2')
14
- @redises.set('mock-redis-test:weight_2', '1')
15
-
16
- @redises.hset('mock-redis-test:hash_1', 'key', 'x')
17
- @redises.hset('mock-redis-test:hash_2', 'key', 'y')
18
- end
19
-
20
- it_should_behave_like 'a sortable'
21
- end
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#sort(key, options)' do
4
- before do
5
- @key = 'mock-redis-test:zset_sort'
6
-
7
- @redises.zadd(@key, 100, '1')
8
- @redises.zadd(@key, 99, '2')
9
-
10
- @redises.set('mock-redis-test:values_1', 'a')
11
- @redises.set('mock-redis-test:values_2', 'b')
12
-
13
- @redises.set('mock-redis-test:weight_1', '2')
14
- @redises.set('mock-redis-test:weight_2', '1')
15
-
16
- @redises.hset('mock-redis-test:hash_1', 'key', 'x')
17
- @redises.hset('mock-redis-test:hash_2', 'key', 'y')
18
- end
19
-
20
- it_should_behave_like 'a sortable'
21
- end
@@ -1,40 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#spop(key)' do
4
- before do
5
- @key = 'mock-redis-test:spop'
6
-
7
- @redises.sadd(@key, 'value')
8
- end
9
-
10
- it 'returns a member of the set' do
11
- @redises.spop(@key).should == 'value'
12
- end
13
-
14
- it 'removes a member of the set' do
15
- @redises.spop(@key)
16
- @redises.smembers(@key).should == []
17
- end
18
-
19
- it 'returns nil if the set is empty' do
20
- @redises.spop(@key)
21
- @redises.spop(@key).should be_nil
22
- end
23
-
24
- it 'returns an array if count is not nil' do
25
- @redises.sadd(@key, 'value2')
26
- @redises.spop(@key, 2).should == %w[value value2]
27
- end
28
-
29
- it 'returns only whats in the set' do
30
- @redises.spop(@key, 2).should == ['value']
31
- @redises.smembers(@key).should == []
32
- end
33
-
34
- it 'returns an empty array if count is not nil and the set it empty' do
35
- @redises.spop(@key)
36
- @redises.spop(@key, 100).should == []
37
- end
38
-
39
- it_should_behave_like 'a set-only command'
40
- end
@@ -1,49 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#srandmember(key)' do
4
- before do
5
- @key = 'mock-redis-test:srandmember'
6
-
7
- @redises.sadd(@key, 'value')
8
- end
9
-
10
- it 'returns a member of the set' do
11
- @redises.srandmember(@key).should == 'value'
12
- end
13
-
14
- it 'does not modify the set' do
15
- @redises.srandmember(@key)
16
- @redises.smembers(@key).should == ['value']
17
- end
18
-
19
- it 'returns nil if the set is empty' do
20
- @redises.spop(@key)
21
- @redises.srandmember(@key).should be_nil
22
- end
23
-
24
- context 'when count argument is specified' do
25
- before do
26
- @redises.sadd(@key, 'value2')
27
- @redises.sadd(@key, 'value3')
28
- end
29
-
30
- # NOTE: We disable result checking since MockRedis and Redis will likely
31
- # return a different random set (since the selection is, well, random)
32
- it 'returns the whole set if count is greater than the set size' do
33
- @redises.send_without_checking(:srandmember, @key, 5).should =~ %w[value value2 value3]
34
- end
35
-
36
- it 'returns random members up to count from the set when count is smaller than the set size' do
37
- @redises.send_without_checking(:srandmember, @key, 2).size.should == 2
38
- end
39
-
40
- it 'returns random members up to count from the set when count is negative even if count.abs is greater than the set size' do # rubocop:disable Layout/LineLength
41
- @redises.send_without_checking(:srandmember, @key, -5).size.should == 5
42
- end
43
-
44
- it 'returns nil if the set is empty' do
45
- @redises.srem(@key, %w[value value2 value3])
46
- @redises.srandmember(@key, 2).should be_empty
47
- end
48
- end
49
- end
@@ -1,45 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#srem(key, member)' do
4
- before do
5
- @key = 'mock-redis-test:srem'
6
-
7
- @redises.sadd(@key, 'bert')
8
- @redises.sadd(@key, 'ernie')
9
- end
10
-
11
- it 'returns true if member is in the set' do
12
- @redises.srem(@key, 'bert').should == true
13
- end
14
-
15
- it 'returns false if member is not in the set' do
16
- @redises.srem(@key, 'cookiemonster').should == false
17
- end
18
-
19
- it 'removes member from the set' do
20
- @redises.srem(@key, 'ernie')
21
- @redises.smembers(@key).should == ['bert']
22
- end
23
-
24
- it 'stringifies member' do
25
- @redises.sadd(@key, '1')
26
- @redises.srem(@key, 1).should == true
27
- end
28
-
29
- it 'cleans up empty sets' do
30
- @redises.smembers(@key).each { |m| @redises.srem(@key, m) }
31
- @redises.get(@key).should be_nil
32
- end
33
-
34
- it 'supports a variable number of arguments' do
35
- @redises.srem(@key, %w[bert ernie]).should == 2
36
- @redises.get(@key).should be_nil
37
- end
38
-
39
- it 'allow passing an array of integers as argument' do
40
- @redises.sadd(@key, %w[1 2])
41
- @redises.srem(@key, [1, 2]).should == 2
42
- end
43
-
44
- it_should_behave_like 'a set-only command'
45
- end
@@ -1,48 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#sscan_each' do
4
- subject { MockRedis::Database.new(self) }
5
-
6
- let(:key) { 'mock-redis-test:sscan_each' }
7
-
8
- before do
9
- allow(subject).to receive(:smembers).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.sscan_each(key).map do |k|
17
- k
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}" } }
26
-
27
- it 'iterates over each item in the collection' do
28
- results = subject.sscan_each(key).map do |k|
29
- k
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}" } }
38
- let(:expected) { %w[k1 k10 k11] }
39
-
40
- it 'iterates over each item in the filtered collection' do
41
- results = subject.sscan_each(key, match: match).map do |k|
42
- k
43
- end
44
- expect(results).to match_array(expected)
45
- end
46
- end
47
- end
48
- end
@@ -1,39 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#sscan' do
4
- let(:count) { 10 }
5
- let(:match) { '*' }
6
- let(:key) { 'mock-redis-test:sscan' }
7
-
8
- before do
9
- # The return order of the members is non-deterministic, so we sort them to compare
10
- expect_any_instance_of(Redis).to receive(:sscan).and_wrap_original do |m, *args|
11
- result = m.call(*args)
12
- [result[0], result[1].sort]
13
- end
14
- expect_any_instance_of(MockRedis).to receive(:sscan).and_wrap_original do |m, *args|
15
- result = m.call(*args)
16
- [result[0], result[1].sort]
17
- end
18
- end
19
-
20
- context 'when the set does not exist' do
21
- it 'returns a 0 cursor and an empty collection' do
22
- expect(@redises.sscan(key, 0, count: count, match: match)).to eq(['0', []])
23
- end
24
- end
25
-
26
- context 'when the set exists' do
27
- before do
28
- @redises.sadd(key, 'Hello')
29
- @redises.sadd(key, 'World')
30
- @redises.sadd(key, 'Test')
31
- end
32
-
33
- let(:expected) { ['0', %w[Hello Test World]] }
34
-
35
- it 'returns a 0 cursor and the collection' do
36
- expect(@redises.sscan(key, 0, count: count)).to eq(expected)
37
- end
38
- end
39
- end
@@ -1,18 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#strlen(key)' do
4
- before do
5
- @key = 'mock-redis-test:73288'
6
- @redises.set(@key, '5 ∈ (0..10)')
7
- end
8
-
9
- it "returns the string's length in bytes" do
10
- @redises.strlen(@key).should == 13
11
- end
12
-
13
- it 'returns 0 for a nonexistent value' do
14
- @redises.strlen('mock-redis-test:does-not-exist').should == 0
15
- end
16
-
17
- it_should_behave_like 'a string-only command'
18
- end
@@ -1,42 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#sunion(key [, key, ...])' do
4
- before do
5
- @evens = 'mock-redis-test:sunion:evens'
6
- @primes = 'mock-redis-test:sunion:primes'
7
-
8
- [2, 4, 6, 8, 10].each { |i| @redises.sadd(@evens, i) }
9
- [2, 3, 5, 7].each { |i| @redises.sadd(@primes, i) }
10
- end
11
-
12
- it 'returns the elements in the resulting set' do
13
- @redises.sunion(@evens, @primes).should == %w[2 4 6 8 10 3 5 7]
14
- end
15
-
16
- it 'treats missing keys as empty sets' do
17
- @redises.sunion(@primes, 'mock-redis-test:nonesuch').
18
- should == %w[2 3 5 7]
19
- end
20
-
21
- it 'allows Array as argument' do
22
- @redises.sunion([@evens, @primes]).should == %w[2 4 6 8 10 3 5 7]
23
- end
24
-
25
- it 'raises an error if given 0 sets' do
26
- lambda do
27
- @redises.sunion
28
- end.should raise_error(Redis::CommandError)
29
- end
30
-
31
- it 'raises an error if any argument is not a a set' do
32
- @redises.set('mock-redis-test:notset', 1)
33
-
34
- lambda do
35
- @redises.sunion(@numbers, 'mock-redis-test:notset')
36
- end.should raise_error(Redis::CommandError)
37
-
38
- lambda do
39
- @redises.sunion('mock-redis-test:notset', @numbers)
40
- end.should raise_error(Redis::CommandError)
41
- end
42
- end
@@ -1,59 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#sunionstore(destination, key [, key, ...])' do
4
- before do
5
- @evens = 'mock-redis-test:sunionstore:evens'
6
- @primes = 'mock-redis-test:sunionstore:primes'
7
- @destination = 'mock-redis-test:sunionstore:destination'
8
-
9
- [2, 4, 6, 8, 10].each { |i| @redises.sadd(@evens, i) }
10
- [2, 3, 5, 7].each { |i| @redises.sadd(@primes, i) }
11
- end
12
-
13
- it 'returns the number of elements in the resulting set' do
14
- @redises.sunionstore(@destination, @primes, @evens).should == 8
15
- end
16
-
17
- it 'stores the resulting set' do
18
- @redises.sunionstore(@destination, @primes, @evens)
19
- @redises.smembers(@destination).should == %w[10 8 6 4 7 5 3 2]
20
- end
21
-
22
- it 'does not store empty sets' do
23
- @redises.sunionstore(@destination,
24
- 'mock-redis-test:nonesuch',
25
- 'mock-redis-test:nonesuch2').should == 0
26
- @redises.get(@destination).should be_nil
27
- end
28
-
29
- it 'removes existing elements in destination' do
30
- @redises.sadd(@destination, 42)
31
-
32
- @redises.sunionstore(@destination, @primes)
33
- @redises.smembers(@destination).should == %w[7 5 3 2]
34
- end
35
-
36
- it 'correctly unions and stores when the destination is empty and is one of the arguments' do
37
- @redises.sunionstore(@destination, @destination, @primes)
38
-
39
- @redises.smembers(@destination).should == %w[7 5 3 2]
40
- end
41
-
42
- it 'raises an error if given 0 sets' do
43
- lambda do
44
- @redises.sunionstore(@destination)
45
- end.should raise_error(Redis::CommandError)
46
- end
47
-
48
- it 'raises an error if any argument is not a a set' do
49
- @redises.set('mock-redis-test:notset', 1)
50
-
51
- lambda do
52
- @redises.sunionstore(@destination, @primes, 'mock-redis-test:notset')
53
- end.should raise_error(Redis::CommandError)
54
-
55
- lambda do
56
- @redises.sunionstore(@destination, 'mock-redis-test:notset', @primes)
57
- end.should raise_error(Redis::CommandError)
58
- end
59
- end
@@ -1,40 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#ttl(key)' do
4
- before do
5
- @key = 'mock-redis-test:persist'
6
- @redises.set(@key, 'spork')
7
- end
8
-
9
- it 'returns -1 for a key with no expiration' do
10
- @redises.ttl(@key).should == -1
11
- end
12
-
13
- it 'returns -2 for a key that does not exist' do
14
- @redises.ttl('mock-redis-test:nonesuch').should == -2
15
- end
16
-
17
- it 'stringifies key' do
18
- @redises.expire(@key, 9)
19
- @redises.ttl(@key.to_sym).should > 0
20
- end
21
-
22
- context '[mock only]' do
23
- # These are mock-only since we can't actually manipulate time in
24
- # the real Redis.
25
-
26
- before(:all) do
27
- @mock = @redises.mock
28
- end
29
-
30
- before do
31
- @now = Time.now
32
- Time.stub(:now).and_return(@now)
33
- end
34
-
35
- it "gives you the key's remaining lifespan in seconds" do
36
- @mock.expire(@key, 5)
37
- @mock.ttl(@key).should == 5
38
- end
39
- end
40
- end
@@ -1,36 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#type(key)' do
4
- before do
5
- @key = 'mock-redis-test:type'
6
- end
7
-
8
- it "returns 'none' for no key" do
9
- @redises.type(@key).should == 'none'
10
- end
11
-
12
- it "returns 'string' for a string" do
13
- @redises.set(@key, 'stringlish')
14
- @redises.type(@key).should == 'string'
15
- end
16
-
17
- it "returns 'list' for a list" do
18
- @redises.lpush(@key, 100)
19
- @redises.type(@key).should == 'list'
20
- end
21
-
22
- it "returns 'hash' for a hash" do
23
- @redises.hset(@key, 100, 200)
24
- @redises.type(@key).should == 'hash'
25
- end
26
-
27
- it "returns 'set' for a set" do
28
- @redises.sadd(@key, 100)
29
- @redises.type(@key).should == 'set'
30
- end
31
-
32
- it "returns 'zset' for a zset" do
33
- @redises.zadd(@key, 1, 2)
34
- @redises.type(@key).should == 'zset'
35
- end
36
- end
@@ -1,7 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#unwatch' do
4
- it "responds with 'OK'" do
5
- @redises.unwatch.should == 'OK'
6
- end
7
- end
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#watch(key [, key, ...)' do
4
- before do
5
- @key1 = 'mock-redis-test-watch1'
6
- @key2 = 'mock-redis-test-watch2'
7
- end
8
-
9
- it "returns 'OK'" do
10
- @redises.watch(@key1, @key2).should == 'OK'
11
- end
12
-
13
- it 'EXECs its MULTI on successes' do
14
- @redises.watch @key1, @key2 do
15
- @redises.multi do |multi|
16
- multi.set 'bar', 'baz'
17
- end
18
- end
19
- @redises.get('bar').should eq('baz')
20
- end
21
- end