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,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#zcard(key)' do
4
- before do
5
- @key = 'mock-redis-test:zcard'
6
- end
7
-
8
- it 'returns the number of elements in the zset' do
9
- @redises.zadd(@key, 1, 'Washington')
10
- @redises.zadd(@key, 2, 'Adams')
11
- @redises.zcard(@key).should == 2
12
- end
13
-
14
- it 'returns 0 for nonexistent sets' do
15
- @redises.zcard(@key).should == 0
16
- end
17
-
18
- it_should_behave_like 'a zset-only command'
19
- end
@@ -1,39 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#zcount(key, min, max)' do
4
- before do
5
- @key = 'mock-redis-test:zcount'
6
- @redises.zadd(@key, 1, 'Washington')
7
- @redises.zadd(@key, 2, 'Adams')
8
- @redises.zadd(@key, 3, 'Jefferson')
9
- @redises.zadd(@key, 4, 'Madison')
10
- end
11
-
12
- it 'returns the number of members in the zset with scores in (min..max)' do
13
- @redises.zcount(@key, 3, 10).should == 2
14
- end
15
-
16
- it 'returns 0 if there are no such members' do
17
- @redises.zcount(@key, 100, 200).should == 0
18
- end
19
-
20
- it 'returns count of all elements when -inf to +inf' do
21
- @redises.zcount(@key, '-inf', '+inf').should == 4
22
- end
23
-
24
- it 'returns a proper count of elements using +inf upper bound' do
25
- @redises.zcount(@key, 3, '+inf').should == 2
26
- end
27
-
28
- it 'returns a proper count of elements using exclusive lower bound' do
29
- @redises.zcount(@key, '(3', '+inf').should == 1
30
- end
31
-
32
- it 'returns a proper count of elements using exclusive upper bound' do
33
- @redises.zcount(@key, '-inf', '(3').should == 2
34
- end
35
-
36
- it_should_behave_like 'arg 1 is a score'
37
- it_should_behave_like 'arg 2 is a score'
38
- it_should_behave_like 'a zset-only command'
39
- end
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#zincrby(key, increment, member)' do
4
- before do
5
- @key = 'mock-redis-test:zincrby'
6
- @redises.zadd(@key, 1, 'bert')
7
- end
8
-
9
- it 'returns the new score as a string' do
10
- @redises.zincrby(@key, 10, 'bert').should == 11.0
11
- end
12
-
13
- it "updates the item's score" do
14
- @redises.zincrby(@key, 10, 'bert')
15
- @redises.zscore(@key, 'bert').should == 11.0
16
- end
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.0
23
- end
24
-
25
- it 'adds missing members with score increment' do
26
- @redises.zincrby(@key, 5.5, 'bigbird').should == 5.5
27
- end
28
-
29
- it_should_behave_like 'arg 1 is a score'
30
- it_should_behave_like 'a zset-only command'
31
- end
@@ -1,130 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#zinterstore(destination, keys, [:weights => [w,w,], [:aggregate => :sum|:min|:max])' do
4
- before do
5
- @odds = 'mock-redis-test:zinterstore:odds'
6
- @primes = 'mock-redis-test:zinterstore:primes'
7
- @dest = 'mock-redis-test:zinterstore:dest'
8
-
9
- @redises.zadd(@odds, 1, 'one')
10
- @redises.zadd(@odds, 3, 'three')
11
- @redises.zadd(@odds, 5, 'five')
12
- @redises.zadd(@odds, 7, 'seven')
13
- @redises.zadd(@odds, 9, 'nine')
14
-
15
- @redises.zadd(@primes, 2, 'two')
16
- @redises.zadd(@primes, 3, 'three')
17
- @redises.zadd(@primes, 5, 'five')
18
- @redises.zadd(@primes, 7, 'seven')
19
- end
20
-
21
- it 'returns the number of elements in the new set' do
22
- @redises.zinterstore(@dest, [@odds, @primes]).should == 3
23
- end
24
-
25
- it "sums the members' scores by default" do
26
- @redises.zinterstore(@dest, [@odds, @primes])
27
- @redises.zrange(@dest, 0, -1, :with_scores => true).should ==
28
- [['three', 6.0], ['five', 10.0], ['seven', 14.0]]
29
- end
30
-
31
- it 'removes existing elements in destination' do
32
- @redises.zadd(@dest, 10, 'ten')
33
-
34
- @redises.zinterstore(@dest, [@primes])
35
- @redises.zrange(@dest, 0, -1, :with_scores => true).should ==
36
- [['two', 2.0], ['three', 3.0], ['five', 5.0], ['seven', 7.0]]
37
- end
38
-
39
- it 'raises an error if keys is empty' do
40
- lambda do
41
- @redises.zinterstore(@dest, [])
42
- end.should raise_error(Redis::CommandError)
43
- end
44
-
45
- context 'when used with a set' do
46
- before do
47
- @primes_text = 'mock-redis-test:zinterstore:primes-text'
48
-
49
- @redises.sadd(@primes_text, 'two')
50
- @redises.sadd(@primes_text, 'three')
51
- @redises.sadd(@primes_text, 'five')
52
- @redises.sadd(@primes_text, 'seven')
53
- end
54
-
55
- it 'returns the number of elements in the new set' do
56
- @redises.zinterstore(@dest, [@odds, @primes_text]).should == 3
57
- end
58
-
59
- it 'sums the scores, substituting 1.0 for set values' do
60
- @redises.zinterstore(@dest, [@odds, @primes_text])
61
- @redises.zrange(@dest, 0, -1, :with_scores => true).should ==
62
- [['three', 4.0], ['five', 6.0], ['seven', 8.0]]
63
- end
64
- end
65
-
66
- context 'when used with a non-coercible structure' do
67
- before do
68
- @non_set = 'mock-redis-test:zinterstore:non-set'
69
-
70
- @redises.set(@non_set, 'one')
71
- end
72
- it 'raises an error for wrong value type' do
73
- lambda do
74
- @redises.zinterstore(@dest, [@odds, @non_set])
75
- end.should raise_error(Redis::CommandError)
76
- end
77
- end
78
-
79
- context 'the :weights argument' do
80
- it 'multiplies the scores by the weights while aggregating' do
81
- @redises.zinterstore(@dest, [@odds, @primes], :weights => [2, 3])
82
- @redises.zrange(@dest, 0, -1, :with_scores => true).should ==
83
- [['three', 15.0], ['five', 25.0], ['seven', 35.0]]
84
- end
85
-
86
- it 'raises an error if the number of weights != the number of keys' do
87
- lambda do
88
- @redises.zinterstore(@dest, [@odds, @primes], :weights => [1, 2, 3])
89
- end.should raise_error(Redis::CommandError)
90
- end
91
- end
92
-
93
- context 'the :aggregate argument' do
94
- before do
95
- @smalls = 'mock-redis-test:zinterstore:smalls'
96
- @bigs = 'mock-redis-test:zinterstore:bigs'
97
-
98
- @redises.zadd(@smalls, 1, 'bert')
99
- @redises.zadd(@smalls, 2, 'ernie')
100
- @redises.zadd(@bigs, 100, 'bert')
101
- @redises.zadd(@bigs, 200, 'ernie')
102
- end
103
-
104
- it 'aggregates scores with min when :aggregate => :min is specified' do
105
- @redises.zinterstore(@dest, [@bigs, @smalls], :aggregate => :min)
106
- @redises.zrange(@dest, 0, -1, :with_scores => true).should ==
107
- [['bert', 1.0], ['ernie', 2.0]]
108
- end
109
-
110
- it 'aggregates scores with max when :aggregate => :max is specified' do
111
- @redises.zinterstore(@dest, [@bigs, @smalls], :aggregate => :max)
112
- @redises.zrange(@dest, 0, -1, :with_scores => true).should ==
113
- [['bert', 100.0], ['ernie', 200.0]]
114
- end
115
-
116
- it "allows 'min', 'MIN', etc. as aliases for :min" do
117
- @redises.zinterstore(@dest, [@bigs, @smalls], :aggregate => 'min')
118
- @redises.zscore(@dest, 'bert').should == 1.0
119
-
120
- @redises.zinterstore(@dest, [@bigs, @smalls], :aggregate => 'MIN')
121
- @redises.zscore(@dest, 'bert').should == 1.0
122
- end
123
-
124
- it 'raises an error for unknown aggregation function' do
125
- lambda do
126
- @redises.zinterstore(@dest, [@bigs, @smalls], :aggregate => :mix)
127
- end.should raise_error(Redis::CommandError)
128
- end
129
- end
130
- end
@@ -1,60 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#zpopmax(key, count)' do
4
- before(:each) do
5
- @key = 'mock-redis-test:zpopmax'
6
- @redises.del(@key)
7
- @redises.zadd(@key, 1, 'one')
8
- @redises.zadd(@key, 2, 'two')
9
- @redises.zadd(@key, 3, 'three')
10
- end
11
-
12
- context 'when count is unspecified' do
13
- it 'returns nil if the set does not exist' do
14
- @redises.zpopmax('does-not-exist').should nil
15
- end
16
-
17
- it 'returns the highest ranked element' do
18
- @redises.zpopmax(@key).should == ['three', 3]
19
- @redises.zcard(@key).should == 2
20
- end
21
- end
22
-
23
- context 'when count is 1' do
24
- let(:count) { 1 }
25
-
26
- it 'returns nil if the set does not exist' do
27
- @redises.zpopmax('does-not-exist', count).should nil
28
- end
29
-
30
- it 'returns the highest ranked element' do
31
- @redises.zpopmax(@key, count).should == ['three', 3]
32
- @redises.zcard(@key).should == 2
33
- end
34
- end
35
-
36
- context 'when count is greater than 1' do
37
- let(:count) { 2 }
38
-
39
- it 'returns empty array if the set does not exist' do
40
- @redises.zpopmax('does-not-exist', count).should == []
41
- end
42
-
43
- it 'returns the highest ranked elements' do
44
- @redises.zpopmax(@key, count).should == [['three', 3], ['two', 2]]
45
- @redises.zcard(@key).should == 1
46
- end
47
- end
48
-
49
- context 'when count is greater than the size of the set' do
50
- let(:count) { 4 }
51
-
52
- it 'returns the entire set' do
53
- before = @redises.zrange(@key, 0, count, with_scores: true).reverse
54
- @redises.zpopmax(@key, count).should == before
55
- @redises.zcard(@key).should == 0
56
- end
57
- end
58
-
59
- it_should_behave_like 'a zset-only command'
60
- end
@@ -1,60 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#zpopmin(key, count)' do
4
- before(:each) do
5
- @key = 'mock-redis-test:zpopmin'
6
- @redises.del(@key)
7
- @redises.zadd(@key, 1, 'one')
8
- @redises.zadd(@key, 2, 'two')
9
- @redises.zadd(@key, 3, 'three')
10
- end
11
-
12
- context 'when count is unspecified' do
13
- it 'returns nil if the set does not exist' do
14
- @redises.zpopmin('does-not-exist').should nil
15
- end
16
-
17
- it 'returns the lowest ranked element' do
18
- @redises.zpopmin(@key).should == ['one', 1]
19
- @redises.zcard(@key).should == 2
20
- end
21
- end
22
-
23
- context 'when count is 1' do
24
- let(:count) { 1 }
25
-
26
- it 'returns nil if the set does not exist' do
27
- @redises.zpopmin('does-not-exist', count).should nil
28
- end
29
-
30
- it 'returns the lowest ranked element' do
31
- @redises.zpopmin(@key, count).should == ['one', 1]
32
- @redises.zcard(@key).should == 2
33
- end
34
- end
35
-
36
- context 'when count is greater than 1' do
37
- let(:count) { 2 }
38
-
39
- it 'returns empty array if the set does not exist' do
40
- @redises.zpopmin('does-not-exist', count).should == []
41
- end
42
-
43
- it 'returns the lowest ranked elements' do
44
- @redises.zpopmin(@key, count).should == [['one', 1], ['two', 2]]
45
- @redises.zcard(@key).should == 1
46
- end
47
- end
48
-
49
- context 'when count is greater than the size of the set' do
50
- let(:count) { 4 }
51
-
52
- it 'returns the entire set' do
53
- before = @redises.zrange(@key, 0, count, with_scores: true)
54
- @redises.zpopmin(@key, count).should == before
55
- @redises.zcard(@key).should == 0
56
- end
57
- end
58
-
59
- it_should_behave_like 'a zset-only command'
60
- end
@@ -1,80 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#zrange(key, start, stop [, :with_scores => true])' do
4
- before do
5
- @key = 'mock-redis-test:zrange'
6
- @redises.zadd(@key, 3, 'Jefferson')
7
- @redises.zadd(@key, 1, 'Washington')
8
- @redises.zadd(@key, 2, 'Adams')
9
- @redises.zadd(@key, 4, 'Madison')
10
- end
11
-
12
- context 'when the zset is empty' do
13
- before do
14
- @redises.del(@key)
15
- end
16
-
17
- it 'should return an empty array' do
18
- @redises.exists?(@key).should == false
19
- @redises.zrange(@key, 0, 4).should == []
20
- end
21
- end
22
-
23
- it 'returns the elements when the range is given as strings' do
24
- @redises.zrange(@key, '0', '1').should == %w[Washington Adams]
25
- end
26
-
27
- it 'returns the elements in order by score' do
28
- @redises.zrange(@key, 0, 1).should == %w[Washington Adams]
29
- end
30
-
31
- context 'when a subset of elements have the same score' do
32
- before do
33
- @redises.zadd(@key, 1, 'Martha')
34
- end
35
-
36
- it 'returns the elements in ascending lexicographical order' do
37
- @redises.zrange(@key, 0, 1).should == %w[Martha Washington]
38
- end
39
- end
40
-
41
- it 'returns the elements in order by score (negative indices)' do
42
- @redises.zrange(@key, -2, -1).should == %w[Jefferson Madison]
43
- end
44
-
45
- it 'returns empty list when start is too large' do
46
- @redises.zrange(@key, 5, -1).should == []
47
- end
48
-
49
- it 'returns entire list when start is out of bounds with negative end in bounds' do
50
- @redises.zrange(@key, -5, -1).should == %w[Washington Adams Jefferson Madison]
51
- end
52
-
53
- it 'returns correct subset when start is out of bounds with positive end in bounds' do
54
- @redises.zrange(@key, -5, 1).should == %w[Washington Adams]
55
- end
56
-
57
- it 'returns empty list when start is in bounds with negative end out of bounds' do
58
- @redises.zrange(@key, 1, -5).should == []
59
- end
60
-
61
- it 'returns empty list when start is 0 with negative end out of bounds' do
62
- @redises.zrange(@key, 0, -5).should == []
63
- end
64
-
65
- it 'returns correct subset when start is in bounds with negative end in bounds' do
66
- @redises.zrange(@key, 1, -1).should == %w[Adams Jefferson Madison]
67
- end
68
-
69
- it 'returns the scores when :with_scores is specified' do
70
- @redises.zrange(@key, 0, 1, :with_scores => true).
71
- should == [['Washington', 1.0], ['Adams', 2.0]]
72
- end
73
-
74
- it 'returns the scores when :withscores is specified' do
75
- @redises.zrange(@key, 0, 1, :withscores => true).
76
- should == [['Washington', 1.0], ['Adams', 2.0]]
77
- end
78
-
79
- it_should_behave_like 'a zset-only command'
80
- end
@@ -1,83 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#zrangebyscore(key, start, stop [:with_scores => true] [:limit => [offset count]])' do
4
- before do
5
- @key = 'mock-redis-test:zrangebyscore'
6
- @redises.zadd(@key, 1, 'Washington')
7
- @redises.zadd(@key, 2, 'Adams')
8
- @redises.zadd(@key, 3, 'Jefferson')
9
- @redises.zadd(@key, 4, 'Madison')
10
- end
11
-
12
- context 'when the zset is empty' do
13
- before do
14
- @redises.del(@key)
15
- end
16
-
17
- it 'should return an empty array' do
18
- @redises.exists?(@key).should == false
19
- @redises.zrangebyscore(@key, 0, 4).should == []
20
- end
21
- end
22
-
23
- it 'returns the elements in order by score' do
24
- @redises.zrangebyscore(@key, 1, 2).should == %w[Washington Adams]
25
- end
26
-
27
- it 'returns the scores when :with_scores is specified' do
28
- @redises.zrangebyscore(@key, 1, 2, :with_scores => true).
29
- should == [['Washington', 1.0], ['Adams', 2.0]]
30
- end
31
-
32
- it 'returns the scores when :withscores is specified' do
33
- @redises.zrangebyscore(@key, 1, 2, :withscores => true).
34
- should == [['Washington', 1.0], ['Adams', 2.0]]
35
- end
36
-
37
- it 'honors the :limit => [offset count] argument' do
38
- @redises.zrangebyscore(@key, -100, 100, :limit => [1, 2]).
39
- should == %w[Adams Jefferson]
40
- end
41
-
42
- it "raises an error if :limit isn't a 2-tuple" do
43
- lambda do
44
- @redises.zrangebyscore(@key, -100, 100, :limit => [1, 2, 3])
45
- end.should raise_error(Redis::CommandError)
46
-
47
- lambda do
48
- @redises.zrangebyscore(@key, -100, 100, :limit => '1, 2')
49
- end.should raise_error(RedisMultiplexer::MismatchedResponse)
50
- end
51
-
52
- it 'treats scores like floats, not strings' do
53
- @redises.zadd(@key, '10', 'Tyler')
54
- @redises.zrangebyscore(@key, 1, 2).should == %w[Washington Adams]
55
- end
56
-
57
- it 'treats -inf as negative infinity' do
58
- @redises.zrangebyscore(@key, '-inf', 3).should ==
59
- %w[Washington Adams Jefferson]
60
- end
61
-
62
- it 'treats +inf as positive infinity' do
63
- @redises.zrangebyscore(@key, 3, '+inf').should == %w[Jefferson Madison]
64
- end
65
-
66
- it 'treats +inf as positive infinity' do
67
- @redises.zrangebyscore(@key, 3, '+inf').should == %w[Jefferson Madison]
68
- end
69
-
70
- it 'honors exclusive ranges on the left' do
71
- @redises.zrangebyscore(@key, '(3', 4).should == ['Madison']
72
- end
73
-
74
- it 'honors exclusive ranges on the right' do
75
- @redises.zrangebyscore(@key, '3', '(4').should == ['Jefferson']
76
- end
77
-
78
- it 'honors exclusive ranges on the left and the right simultaneously' do
79
- @redises.zrangebyscore(@key, '(1', '(4').should == %w[Adams Jefferson]
80
- end
81
-
82
- it_should_behave_like 'a zset-only command'
83
- end
@@ -1,29 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#zrank(key, member)' do
4
- before do
5
- @key = 'mock-redis-test:zrank'
6
-
7
- @redises.zadd(@key, 1, 'one')
8
- @redises.zadd(@key, 2, 'two')
9
- @redises.zadd(@key, 3, 'three')
10
- end
11
-
12
- it "returns nil if member wasn't present in the set" do
13
- @redises.zrank(@key, 'foo').should be_nil
14
- end
15
-
16
- it 'returns the index of the member in the set' do
17
- @redises.zrank(@key, 'one').should == 0
18
- @redises.zrank(@key, 'two').should == 1
19
- @redises.zrank(@key, 'three').should == 2
20
- end
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
-
28
- it_should_behave_like 'a zset-only command'
29
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#zrem(key, member)' do
4
- before do
5
- @key = 'mock-redis-test:zrem'
6
-
7
- @redises.zadd(@key, 1, 'one')
8
- @redises.zadd(@key, 2, 'two')
9
- end
10
-
11
- it 'returns true if member is present in the set' do
12
- @redises.zrem(@key, 'one').should == true
13
- end
14
-
15
- it 'returns false if member is not present in the set' do
16
- @redises.zrem(@key, 'nobody home').should == false
17
- end
18
-
19
- it 'removes member from the set' do
20
- @redises.zrem(@key, 'one')
21
- @redises.zrange(@key, 0, -1).should == ['two']
22
- end
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 == true
28
- @redises.zrange(@key, 0, -1).should == %w[one two]
29
- end
30
-
31
- it 'removes integer members inside an array from the set' do
32
- member = 11
33
- @redises.zadd(@key, 3, member)
34
- @redises.zrem(@key, [member]).should == 1
35
- @redises.zrange(@key, 0, -1).should == %w[one two]
36
- end
37
-
38
- it 'supports a variable number of arguments' do
39
- @redises.zrem(@key, %w[one two])
40
- @redises.zrange(@key, 0, -1).should be_empty
41
- end
42
-
43
- it 'raises an error if member is an empty array' do
44
- lambda do
45
- @redises.zrem(@key, [])
46
- end.should raise_error(Redis::CommandError)
47
- end
48
-
49
- it_should_behave_like 'a zset-only command'
50
- end
@@ -1,27 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe '#zremrangebyrank(key, start, stop)' do
4
- before do
5
- @key = 'mock-redis-test:zremrangebyrank'
6
- @redises.zadd(@key, 1, 'Washington')
7
- @redises.zadd(@key, 2, 'Adams')
8
- @redises.zadd(@key, 3, 'Jefferson')
9
- @redises.zadd(@key, 4, 'Madison')
10
- end
11
-
12
- it 'returns the number of elements in range' do
13
- @redises.zremrangebyrank(@key, 2, 3).should == 2
14
- end
15
-
16
- it 'removes the elements' do
17
- @redises.zremrangebyrank(@key, 2, 3)
18
- @redises.zrange(@key, 0, -1).should == %w[Washington Adams]
19
- end
20
-
21
- it 'does nothing if start is greater than cardinality of set' do
22
- @redises.zremrangebyrank(@key, 5, -1)
23
- @redises.zrange(@key, 0, -1).should == %w[Washington Adams Jefferson Madison]
24
- end
25
-
26
- it_should_behave_like 'a zset-only command'
27
- end
@@ -1,35 +0,0 @@
1
- require 'spec_helper'
2
- require 'date'
3
-
4
- describe '#zremrangebyscore(key, min, max)' do
5
- before do
6
- @key = 'mock-redis-test:zremrangebyscore'
7
- @redises.zadd(@key, 1, 'Washington')
8
- @redises.zadd(@key, 2, 'Adams')
9
- @redises.zadd(@key, 3, 'Jefferson')
10
- @redises.zadd(@key, 4, 'Madison')
11
- end
12
-
13
- it 'returns the number of elements in range' do
14
- @redises.zremrangebyscore(@key, 2, 3).should == 2
15
- end
16
-
17
- it 'removes the elements' do
18
- @redises.zremrangebyscore(@key, 2, 3)
19
- @redises.zrange(@key, 0, -1).should == %w[Washington Madison]
20
- end
21
-
22
- # As seen in http://redis.io/commands/zremrangebyscore
23
- it 'removes the elements for complex statements' do
24
- @redises.zremrangebyscore(@key, '-inf', '(4')
25
- @redises.zrange(@key, 0, -1).should == %w[Madison]
26
- end
27
-
28
- it_should_behave_like 'a zset-only command'
29
-
30
- it 'throws a command error' do
31
- expect do
32
- @redises.zrevrangebyscore(@key, DateTime.now, '-inf')
33
- end.to raise_error(Redis::CommandError)
34
- end
35
- end