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
@@ -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
|
data/spec/commands/smove_spec.rb
DELETED
@@ -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
|
data/spec/commands/spop_spec.rb
DELETED
@@ -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
|
data/spec/commands/srem_spec.rb
DELETED
@@ -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
|
data/spec/commands/sscan_spec.rb
DELETED
@@ -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
|
data/spec/commands/ttl_spec.rb
DELETED
@@ -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
|
data/spec/commands/type_spec.rb
DELETED
@@ -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
|
data/spec/commands/watch_spec.rb
DELETED
@@ -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
|