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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +1 -1
- data/lib/mock_redis/database.rb +1 -1
- data/lib/mock_redis/hash_methods.rb +1 -1
- data/lib/mock_redis/list_methods.rb +7 -2
- data/lib/mock_redis/multi_db_wrapper.rb +1 -1
- data/lib/mock_redis/pipelined_wrapper.rb +12 -14
- data/lib/mock_redis/set_methods.rb +6 -1
- data/lib/mock_redis/stream.rb +3 -3
- data/lib/mock_redis/string_methods.rb +3 -3
- data/lib/mock_redis/transaction_wrapper.rb +5 -7
- data/lib/mock_redis/utility_methods.rb +4 -2
- data/lib/mock_redis/version.rb +1 -1
- data/lib/mock_redis/zset.rb +4 -2
- data/lib/mock_redis/zset_methods.rb +3 -3
- data/lib/mock_redis.rb +1 -2
- metadata +19 -360
- data/.github/workflows/lint.yml +0 -31
- data/.github/workflows/tests.yml +0 -63
- data/.gitignore +0 -5
- data/.mailmap +0 -2
- data/.overcommit.yml +0 -21
- data/.rspec +0 -1
- data/.rubocop.yml +0 -148
- data/.rubocop_todo.yml +0 -35
- data/.simplecov +0 -4
- data/Gemfile +0 -13
- data/Rakefile +0 -2
- data/mock_redis.gemspec +0 -32
- data/spec/client_spec.rb +0 -36
- data/spec/cloning_spec.rb +0 -95
- data/spec/commands/append_spec.rb +0 -24
- data/spec/commands/auth_spec.rb +0 -7
- data/spec/commands/bgrewriteaof_spec.rb +0 -7
- data/spec/commands/bgsave_spec.rb +0 -7
- data/spec/commands/bitcount_spec.rb +0 -25
- data/spec/commands/bitfield_spec.rb +0 -169
- data/spec/commands/blmove_spec.rb +0 -52
- data/spec/commands/blpop_spec.rb +0 -53
- data/spec/commands/brpop_spec.rb +0 -59
- data/spec/commands/brpoplpush_spec.rb +0 -52
- data/spec/commands/connected_spec.rb +0 -7
- data/spec/commands/connection_spec.rb +0 -15
- data/spec/commands/dbsize_spec.rb +0 -18
- data/spec/commands/decr_spec.rb +0 -34
- data/spec/commands/decrby_spec.rb +0 -34
- data/spec/commands/del_spec.rb +0 -52
- data/spec/commands/disconnect_spec.rb +0 -7
- data/spec/commands/dump_spec.rb +0 -19
- data/spec/commands/echo_spec.rb +0 -11
- data/spec/commands/eval_spec.rb +0 -7
- data/spec/commands/evalsha_spec.rb +0 -10
- data/spec/commands/exists_spec.rb +0 -43
- data/spec/commands/expire_spec.rb +0 -111
- data/spec/commands/expireat_spec.rb +0 -47
- data/spec/commands/flushall_spec.rb +0 -38
- data/spec/commands/flushdb_spec.rb +0 -38
- data/spec/commands/future_spec.rb +0 -30
- data/spec/commands/geoadd_spec.rb +0 -58
- data/spec/commands/geodist_spec.rb +0 -118
- data/spec/commands/geohash_spec.rb +0 -52
- data/spec/commands/geopos_spec.rb +0 -55
- data/spec/commands/get_spec.rb +0 -31
- data/spec/commands/getbit_spec.rb +0 -34
- data/spec/commands/getdel.rb +0 -24
- data/spec/commands/getrange_spec.rb +0 -22
- data/spec/commands/getset_spec.rb +0 -23
- data/spec/commands/hdel_spec.rb +0 -77
- data/spec/commands/hexists_spec.rb +0 -27
- data/spec/commands/hget_spec.rb +0 -28
- data/spec/commands/hgetall_spec.rb +0 -32
- data/spec/commands/hincrby_spec.rb +0 -58
- data/spec/commands/hincrbyfloat_spec.rb +0 -58
- data/spec/commands/hkeys_spec.rb +0 -19
- data/spec/commands/hlen_spec.rb +0 -19
- data/spec/commands/hmget_spec.rb +0 -46
- data/spec/commands/hmset_spec.rb +0 -69
- data/spec/commands/hscan_each_spec.rb +0 -48
- data/spec/commands/hscan_spec.rb +0 -27
- data/spec/commands/hset_spec.rb +0 -42
- data/spec/commands/hsetnx_spec.rb +0 -44
- data/spec/commands/hvals_spec.rb +0 -19
- data/spec/commands/incr_spec.rb +0 -34
- data/spec/commands/incrby_spec.rb +0 -44
- data/spec/commands/incrbyfloat_spec.rb +0 -44
- data/spec/commands/info_spec.rb +0 -62
- data/spec/commands/keys_spec.rb +0 -139
- data/spec/commands/lastsave_spec.rb +0 -8
- data/spec/commands/lindex_spec.rb +0 -49
- data/spec/commands/linsert_spec.rb +0 -68
- data/spec/commands/llen_spec.rb +0 -16
- data/spec/commands/lmove_spec.rb +0 -72
- data/spec/commands/lpop_spec.rb +0 -35
- data/spec/commands/lpush_spec.rb +0 -43
- data/spec/commands/lpushx_spec.rb +0 -46
- data/spec/commands/lrange_spec.rb +0 -51
- data/spec/commands/lrem_spec.rb +0 -80
- data/spec/commands/lset_spec.rb +0 -43
- data/spec/commands/ltrim_spec.rb +0 -45
- data/spec/commands/mapped_hmget_spec.rb +0 -29
- data/spec/commands/mapped_hmset_spec.rb +0 -47
- data/spec/commands/mapped_mget_spec.rb +0 -22
- data/spec/commands/mapped_mset_spec.rb +0 -19
- data/spec/commands/mapped_msetnx_spec.rb +0 -26
- data/spec/commands/mget_spec.rb +0 -65
- data/spec/commands/move_spec.rb +0 -147
- data/spec/commands/mset_spec.rb +0 -43
- data/spec/commands/msetnx_spec.rb +0 -40
- data/spec/commands/persist_spec.rb +0 -48
- data/spec/commands/pexpire_spec.rb +0 -86
- data/spec/commands/pexpireat_spec.rb +0 -48
- data/spec/commands/ping_spec.rb +0 -11
- data/spec/commands/pipelined_spec.rb +0 -114
- data/spec/commands/psetex_spec.rb +0 -44
- data/spec/commands/pttl_spec.rb +0 -41
- data/spec/commands/quit_spec.rb +0 -7
- data/spec/commands/randomkey_spec.rb +0 -20
- data/spec/commands/rename_spec.rb +0 -42
- data/spec/commands/renamenx_spec.rb +0 -41
- data/spec/commands/restore_spec.rb +0 -47
- data/spec/commands/rpop_spec.rb +0 -35
- data/spec/commands/rpoplpush_spec.rb +0 -50
- data/spec/commands/rpush_spec.rb +0 -43
- data/spec/commands/rpushx_spec.rb +0 -46
- data/spec/commands/sadd_spec.rb +0 -45
- data/spec/commands/save_spec.rb +0 -7
- data/spec/commands/scan_each_spec.rb +0 -39
- data/spec/commands/scan_spec.rb +0 -64
- data/spec/commands/scard_spec.rb +0 -18
- data/spec/commands/script_spec.rb +0 -9
- data/spec/commands/sdiff_spec.rb +0 -47
- data/spec/commands/sdiffstore_spec.rb +0 -58
- data/spec/commands/select_spec.rb +0 -61
- data/spec/commands/set_spec.rb +0 -134
- data/spec/commands/setbit_spec.rb +0 -55
- data/spec/commands/setex_spec.rb +0 -38
- data/spec/commands/setnx_spec.rb +0 -25
- data/spec/commands/setrange_spec.rb +0 -30
- data/spec/commands/sinter_spec.rb +0 -39
- data/spec/commands/sinterstore_spec.rb +0 -53
- data/spec/commands/sismember_spec.rb +0 -29
- data/spec/commands/smembers_spec.rb +0 -28
- data/spec/commands/smismember_spec.rb +0 -34
- data/spec/commands/smove_spec.rb +0 -41
- data/spec/commands/sort_list_spec.rb +0 -21
- data/spec/commands/sort_set_spec.rb +0 -21
- data/spec/commands/sort_zset_spec.rb +0 -21
- data/spec/commands/spop_spec.rb +0 -40
- data/spec/commands/srandmember_spec.rb +0 -49
- data/spec/commands/srem_spec.rb +0 -45
- data/spec/commands/sscan_each_spec.rb +0 -48
- data/spec/commands/sscan_spec.rb +0 -39
- data/spec/commands/strlen_spec.rb +0 -18
- data/spec/commands/sunion_spec.rb +0 -42
- data/spec/commands/sunionstore_spec.rb +0 -59
- data/spec/commands/ttl_spec.rb +0 -40
- data/spec/commands/type_spec.rb +0 -36
- data/spec/commands/unwatch_spec.rb +0 -7
- data/spec/commands/watch_spec.rb +0 -21
- data/spec/commands/xadd_spec.rb +0 -122
- data/spec/commands/xlen_spec.rb +0 -22
- data/spec/commands/xrange_spec.rb +0 -164
- data/spec/commands/xread_spec.rb +0 -66
- data/spec/commands/xrevrange_spec.rb +0 -130
- data/spec/commands/xtrim_spec.rb +0 -36
- data/spec/commands/zadd_spec.rb +0 -129
- data/spec/commands/zcard_spec.rb +0 -19
- data/spec/commands/zcount_spec.rb +0 -39
- data/spec/commands/zincrby_spec.rb +0 -31
- data/spec/commands/zinterstore_spec.rb +0 -130
- data/spec/commands/zpopmax_spec.rb +0 -60
- data/spec/commands/zpopmin_spec.rb +0 -60
- data/spec/commands/zrange_spec.rb +0 -80
- data/spec/commands/zrangebyscore_spec.rb +0 -83
- data/spec/commands/zrank_spec.rb +0 -29
- data/spec/commands/zrem_spec.rb +0 -50
- data/spec/commands/zremrangebyrank_spec.rb +0 -27
- data/spec/commands/zremrangebyscore_spec.rb +0 -35
- data/spec/commands/zrevrange_spec.rb +0 -56
- data/spec/commands/zrevrangebyscore_spec.rb +0 -58
- data/spec/commands/zrevrank_spec.rb +0 -29
- data/spec/commands/zscan_each_spec.rb +0 -48
- data/spec/commands/zscan_spec.rb +0 -26
- data/spec/commands/zscore_spec.rb +0 -22
- data/spec/commands/zunionstore_spec.rb +0 -137
- data/spec/mock_redis_spec.rb +0 -93
- data/spec/spec_helper.rb +0 -74
- data/spec/support/redis_multiplexer.rb +0 -123
- data/spec/support/shared_examples/does_not_cleanup_empty_strings.rb +0 -14
- data/spec/support/shared_examples/only_operates_on_hashes.rb +0 -15
- data/spec/support/shared_examples/only_operates_on_lists.rb +0 -15
- data/spec/support/shared_examples/only_operates_on_sets.rb +0 -15
- data/spec/support/shared_examples/only_operates_on_strings.rb +0 -13
- data/spec/support/shared_examples/only_operates_on_zsets.rb +0 -59
- data/spec/support/shared_examples/sorts_enumerables.rb +0 -56
- data/spec/transactions_spec.rb +0 -163
data/spec/commands/zcard_spec.rb
DELETED
@@ -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
|
data/spec/commands/zrank_spec.rb
DELETED
@@ -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
|
data/spec/commands/zrem_spec.rb
DELETED
@@ -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
|