mock_redis 0.19.0 → 0.24.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/.rubocop.yml +32 -5
- data/.rubocop_todo.yml +1 -1
- data/.travis.yml +9 -10
- data/CHANGELOG.md +46 -0
- data/Gemfile +2 -2
- data/LICENSE.md +21 -0
- data/README.md +39 -15
- data/lib/mock_redis.rb +0 -5
- data/lib/mock_redis/database.rb +59 -22
- data/lib/mock_redis/future.rb +1 -1
- data/lib/mock_redis/geospatial_methods.rb +14 -22
- data/lib/mock_redis/hash_methods.rb +23 -15
- data/lib/mock_redis/indifferent_hash.rb +0 -8
- data/lib/mock_redis/info_method.rb +2 -2
- data/lib/mock_redis/list_methods.rb +2 -2
- data/lib/mock_redis/multi_db_wrapper.rb +2 -2
- data/lib/mock_redis/pipelined_wrapper.rb +25 -6
- data/lib/mock_redis/set_methods.rb +16 -4
- data/lib/mock_redis/stream.rb +62 -0
- data/lib/mock_redis/stream/id.rb +60 -0
- data/lib/mock_redis/stream_methods.rb +87 -0
- data/lib/mock_redis/string_methods.rb +31 -20
- data/lib/mock_redis/transaction_wrapper.rb +27 -14
- data/lib/mock_redis/utility_methods.rb +6 -3
- data/lib/mock_redis/version.rb +1 -1
- data/lib/mock_redis/zset_methods.rb +54 -11
- data/mock_redis.gemspec +6 -6
- data/spec/client_spec.rb +12 -0
- data/spec/commands/blpop_spec.rb +0 -6
- data/spec/commands/brpop_spec.rb +6 -5
- data/spec/commands/dump_spec.rb +19 -0
- data/spec/commands/exists_spec.rb +34 -5
- data/spec/commands/future_spec.rb +11 -1
- data/spec/commands/geoadd_spec.rb +1 -1
- data/spec/commands/geodist_spec.rb +8 -4
- data/spec/commands/geohash_spec.rb +4 -4
- data/spec/commands/geopos_spec.rb +4 -4
- data/spec/commands/get_spec.rb +1 -0
- data/spec/commands/hdel_spec.rb +18 -2
- data/spec/commands/hmset_spec.rb +26 -0
- data/spec/commands/hset_spec.rb +6 -6
- data/spec/commands/keys_spec.rb +17 -0
- data/spec/commands/mget_spec.rb +34 -15
- data/spec/commands/move_spec.rb +5 -5
- data/spec/commands/mset_spec.rb +14 -0
- data/spec/commands/pipelined_spec.rb +72 -0
- data/spec/commands/restore_spec.rb +47 -0
- data/spec/commands/scan_spec.rb +9 -0
- data/spec/commands/set_spec.rb +12 -2
- data/spec/commands/setbit_spec.rb +1 -0
- data/spec/commands/setex_spec.rb +16 -0
- data/spec/commands/spop_spec.rb +15 -0
- data/spec/commands/srandmember_spec.rb +1 -1
- data/spec/commands/srem_spec.rb +5 -0
- data/spec/commands/watch_spec.rb +8 -3
- data/spec/commands/xadd_spec.rb +104 -0
- data/spec/commands/xlen_spec.rb +20 -0
- data/spec/commands/xrange_spec.rb +141 -0
- data/spec/commands/xrevrange_spec.rb +130 -0
- data/spec/commands/xtrim_spec.rb +30 -0
- data/spec/commands/zinterstore_spec.rb +34 -0
- data/spec/commands/zpopmax_spec.rb +60 -0
- data/spec/commands/zpopmin_spec.rb +60 -0
- data/spec/commands/zrange_spec.rb +1 -1
- data/spec/commands/zrangebyscore_spec.rb +1 -1
- data/spec/commands/zrevrange_spec.rb +1 -1
- data/spec/commands/zrevrangebyscore_spec.rb +1 -1
- data/spec/commands/zunionstore_spec.rb +33 -0
- data/spec/mock_redis_spec.rb +4 -6
- data/spec/spec_helper.rb +6 -2
- data/spec/support/redis_multiplexer.rb +18 -1
- data/spec/support/shared_examples/does_not_cleanup_empty_strings.rb +14 -0
- data/spec/support/shared_examples/only_operates_on_hashes.rb +2 -0
- data/spec/support/shared_examples/only_operates_on_lists.rb +2 -0
- data/spec/support/shared_examples/only_operates_on_sets.rb +2 -0
- data/spec/support/shared_examples/only_operates_on_zsets.rb +2 -0
- data/spec/transactions_spec.rb +30 -26
- metadata +45 -31
- data/LICENSE +0 -19
- data/spec/commands/hash_operator_spec.rb +0 -21
@@ -15,7 +15,7 @@ describe '#zrangebyscore(key, start, stop [:with_scores => true] [:limit => [off
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'should return an empty array' do
|
18
|
-
@redises.exists(@key).should == false
|
18
|
+
@redises.exists?(@key).should == false
|
19
19
|
@redises.zrangebyscore(@key, 0, 4).should == []
|
20
20
|
end
|
21
21
|
end
|
@@ -15,7 +15,7 @@ describe '#zrevrange(key, start, stop [, :with_scores => true])' do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'should return an empty array' do
|
18
|
-
@redises.exists(@key).should == false
|
18
|
+
@redises.exists?(@key).should == false
|
19
19
|
@redises.zrevrange(@key, 0, 4).should == []
|
20
20
|
end
|
21
21
|
end
|
@@ -15,7 +15,7 @@ describe '#zrevrangebyscore(key, start, stop [:with_scores => true] [:limit => [
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'should return an empty array' do
|
18
|
-
@redises.exists(@key).should == false
|
18
|
+
@redises.exists?(@key).should == false
|
19
19
|
@redises.zrevrangebyscore(@key, 0, 4).should == []
|
20
20
|
end
|
21
21
|
end
|
@@ -41,6 +41,39 @@ describe '#zunionstore(destination, keys, [:weights => [w,w,], [:aggregate => :s
|
|
41
41
|
end.should raise_error(Redis::CommandError)
|
42
42
|
end
|
43
43
|
|
44
|
+
context 'when used with a set' do
|
45
|
+
before do
|
46
|
+
@set4 = 'mock-redis-test:zunionstore4'
|
47
|
+
|
48
|
+
@redises.sadd(@set4, 'two')
|
49
|
+
@redises.sadd(@set4, 'three')
|
50
|
+
@redises.sadd(@set4, 'four')
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'returns the number of elements in the new set' do
|
54
|
+
@redises.zunionstore(@dest, [@set3, @set4]).should == 4
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'sums the scores, substituting 1.0 for set values' do
|
58
|
+
@redises.zunionstore(@dest, [@set3, @set4])
|
59
|
+
@redises.zrange(@dest, 0, -1, :with_scores => true).should ==
|
60
|
+
[['four', 1.0], ['one', 1.0], ['two', 3.0], ['three', 4.0]]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'when used with a non-coercible structure' do
|
65
|
+
before do
|
66
|
+
@non_set = 'mock-redis-test:zunionstore4'
|
67
|
+
|
68
|
+
@redises.set(@non_set, 'one')
|
69
|
+
end
|
70
|
+
it 'raises an error for wrong value type' do
|
71
|
+
lambda do
|
72
|
+
@redises.zunionstore(@dest, [@set1, @non_set])
|
73
|
+
end.should raise_error(Redis::CommandError)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
44
77
|
context 'the :weights argument' do
|
45
78
|
it 'multiplies the scores by the weights while aggregating' do
|
46
79
|
@redises.zunionstore(@dest, [@set1, @set2, @set3], :weights => [2, 3, 5])
|
data/spec/mock_redis_spec.rb
CHANGED
@@ -49,23 +49,21 @@ describe MockRedis do
|
|
49
49
|
end
|
50
50
|
|
51
51
|
describe '.now' do
|
52
|
-
let(:
|
53
|
-
let(:time_stub) { double 'Time', :now => now }
|
52
|
+
let(:time_stub) { double 'Time', :now => Time.new(2019, 1, 2, 3, 4, 6, '+00:00') }
|
54
53
|
let(:options) { { :time_class => time_stub } }
|
55
54
|
|
56
55
|
subject { MockRedis.new(options) }
|
57
56
|
|
58
|
-
its(:now) { should ==
|
57
|
+
its(:now) { should == [1_546_398_246, 0] }
|
59
58
|
end
|
60
59
|
|
61
60
|
describe '.time' do
|
62
|
-
let(:
|
63
|
-
let(:time_stub) { double 'Time', :now => now }
|
61
|
+
let(:time_stub) { double 'Time', :now => Time.new(2019, 1, 2, 3, 4, 6, '+00:00') }
|
64
62
|
let(:options) { { :time_class => time_stub } }
|
65
63
|
|
66
64
|
subject { MockRedis.new(options) }
|
67
65
|
|
68
|
-
its(:time) { should ==
|
66
|
+
its(:time) { should == [1_546_398_246, 0] }
|
69
67
|
end
|
70
68
|
|
71
69
|
describe '.expireat' do
|
data/spec/spec_helper.rb
CHANGED
@@ -12,9 +12,10 @@ require 'rspec/its'
|
|
12
12
|
require 'redis'
|
13
13
|
$LOAD_PATH.unshift(File.expand_path(File.join(__FILE__, '..', '..', 'lib')))
|
14
14
|
require 'mock_redis'
|
15
|
+
require 'timecop'
|
15
16
|
|
16
17
|
$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..')))
|
17
|
-
Dir['spec/support/**/*.rb'].each { |x| require x }
|
18
|
+
Dir['spec/support/**/*.rb'].sort.each { |x| require x }
|
18
19
|
|
19
20
|
module TypeCheckingHelper
|
20
21
|
def method_from_description(example)
|
@@ -26,7 +27,7 @@ module TypeCheckingHelper
|
|
26
27
|
end
|
27
28
|
|
28
29
|
def args_for_method(method)
|
29
|
-
return [] if method.to_s
|
30
|
+
return [] if %w[spop zpopmin zpopmax].include?(method.to_s)
|
30
31
|
method_arity = @redises.real.method(method).arity
|
31
32
|
if method_arity < 0 # -1 comes from def foo(*args)
|
32
33
|
[1, 2] # probably good enough
|
@@ -39,6 +40,8 @@ end
|
|
39
40
|
RSpec.configure do |config|
|
40
41
|
config.expect_with :rspec do |c|
|
41
42
|
c.syntax = [:expect, :should]
|
43
|
+
# Allow for a large output so we can debug error messages
|
44
|
+
c.max_formatted_output_length = 1_000_000
|
42
45
|
end
|
43
46
|
|
44
47
|
config.mock_with :rspec do |c|
|
@@ -59,5 +62,6 @@ RSpec.configure do |config|
|
|
59
62
|
@redises.send_without_checking(:del, key)
|
60
63
|
end
|
61
64
|
end
|
65
|
+
@redises._gsub_clear
|
62
66
|
end
|
63
67
|
end
|
@@ -9,7 +9,18 @@ class RedisMultiplexer < BlankSlate
|
|
9
9
|
|
10
10
|
def initialize(*a)
|
11
11
|
@mock_redis = MockRedis.new(*a)
|
12
|
+
Redis.exists_returns_integer = true
|
12
13
|
@real_redis = Redis.new(*a)
|
14
|
+
_gsub_clear
|
15
|
+
end
|
16
|
+
|
17
|
+
def _gsub(from, to)
|
18
|
+
@gsub_from = from
|
19
|
+
@gsub_to = to
|
20
|
+
end
|
21
|
+
|
22
|
+
def _gsub_clear
|
23
|
+
@gsub_from = @gsub_to = ''
|
13
24
|
end
|
14
25
|
|
15
26
|
def method_missing(method, *args, &blk)
|
@@ -71,8 +82,10 @@ class RedisMultiplexer < BlankSlate
|
|
71
82
|
def equalish?(a, b)
|
72
83
|
if a == b
|
73
84
|
true
|
85
|
+
elsif a.is_a?(String) && b.is_a?(String)
|
86
|
+
masked(a) == masked(b)
|
74
87
|
elsif a.is_a?(Array) && b.is_a?(Array)
|
75
|
-
a.collect(
|
88
|
+
a.collect { |c| masked(c.to_s) }.sort == b.collect { |c| masked(c.to_s) }.sort
|
76
89
|
elsif a.is_a?(Exception) && b.is_a?(Exception)
|
77
90
|
a.class == b.class && a.message == b.message
|
78
91
|
elsif a.is_a?(Float) && b.is_a?(Float)
|
@@ -83,6 +96,10 @@ class RedisMultiplexer < BlankSlate
|
|
83
96
|
end
|
84
97
|
end
|
85
98
|
|
99
|
+
def masked(str)
|
100
|
+
str.gsub(@gsub_from, @gsub_to)
|
101
|
+
end
|
102
|
+
|
86
103
|
def mock
|
87
104
|
@mock_redis
|
88
105
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
shared_examples_for 'does not remove empty strings on error' do
|
2
|
+
it 'does not remove empty strings on error' do |example|
|
3
|
+
key = 'mock-redis-test:not-a-string'
|
4
|
+
|
5
|
+
method = method_from_description(example)
|
6
|
+
args = args_for_method(method).unshift(key)
|
7
|
+
|
8
|
+
@redises.set(key, '')
|
9
|
+
lambda do
|
10
|
+
@redises.send(method, *args)
|
11
|
+
end.should raise_error(RuntimeError)
|
12
|
+
@redises.get(key).should == ''
|
13
|
+
end
|
14
|
+
end
|
data/spec/transactions_spec.rb
CHANGED
@@ -10,11 +10,11 @@ describe 'transactions (multi/exec/discard)' do
|
|
10
10
|
@redises.multi.should == 'OK'
|
11
11
|
end
|
12
12
|
|
13
|
-
it '
|
13
|
+
it 'does not permit nesting' do
|
14
14
|
@redises.multi
|
15
15
|
lambda do
|
16
16
|
@redises.multi
|
17
|
-
end.should raise_error(Redis::CommandError)
|
17
|
+
end.should raise_error(Redis::CommandError, 'ERR MULTI calls can not be nested')
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'cleans state of transaction wrapper if exception occurs during transaction' do
|
@@ -41,18 +41,18 @@ describe 'transactions (multi/exec/discard)' do
|
|
41
41
|
r.set('test', 1)
|
42
42
|
r.incr('counter')
|
43
43
|
end
|
44
|
-
@redises.get('counter').should
|
45
|
-
@redises.get('test').should
|
44
|
+
@redises.get('counter').should eq '6'
|
45
|
+
@redises.get('test').should eq '1'
|
46
46
|
end
|
47
47
|
|
48
|
-
it '
|
48
|
+
it 'permits nesting via blocks' do
|
49
49
|
# Have to use only the mock here. redis-rb has a bug in it where
|
50
50
|
# nested #multi calls raise NoMethodError because it gets a nil
|
51
51
|
# where it's not expecting one.
|
52
52
|
@redises.mock.multi do |r|
|
53
53
|
lambda do
|
54
54
|
r.multi {}
|
55
|
-
end.
|
55
|
+
end.should_not raise_error
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
@@ -64,27 +64,31 @@ describe 'transactions (multi/exec/discard)' do
|
|
64
64
|
pr.incr('counter')
|
65
65
|
end
|
66
66
|
end
|
67
|
-
@redises.get('counter').should
|
68
|
-
@redises.get('test').should
|
67
|
+
@redises.get('counter').should eq '6'
|
68
|
+
@redises.get('test').should eq '1'
|
69
69
|
end
|
70
70
|
|
71
|
-
it 'allows
|
72
|
-
@redises.set('
|
73
|
-
@redises.
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
71
|
+
it 'allows blocks within multi blocks' do
|
72
|
+
@redises.set('foo', 'bar')
|
73
|
+
@redises.set('fuu', 'baz')
|
74
|
+
|
75
|
+
result = nil
|
76
|
+
|
77
|
+
@redises.multi do |r|
|
78
|
+
result = r.mget('foo', 'fuu') { |reply| reply.map(&:upcase) }
|
79
|
+
r.del('foo', 'fuu')
|
78
80
|
end
|
79
|
-
|
80
|
-
|
81
|
+
|
82
|
+
result.value.should eq %w[BAR BAZ]
|
83
|
+
@redises.get('foo').should eq nil
|
84
|
+
@redises.get('fuu').should eq nil
|
81
85
|
end
|
82
86
|
end
|
83
87
|
|
84
88
|
context '#discard' do
|
85
89
|
it "responds with 'OK' after #multi" do
|
86
90
|
@redises.multi
|
87
|
-
@redises.discard.should
|
91
|
+
@redises.discard.should eq 'OK'
|
88
92
|
end
|
89
93
|
|
90
94
|
it "can't be run outside of #multi/#exec" do
|
@@ -110,8 +114,8 @@ describe 'transactions (multi/exec/discard)' do
|
|
110
114
|
end
|
111
115
|
|
112
116
|
it "makes commands respond with 'QUEUED'" do
|
113
|
-
@redises.set(@string, 'string').should
|
114
|
-
@redises.lpush(@list, 'list').should
|
117
|
+
@redises.set(@string, 'string').should eq 'QUEUED'
|
118
|
+
@redises.lpush(@list, 'list').should eq 'QUEUED'
|
115
119
|
end
|
116
120
|
|
117
121
|
it "gives you the commands' responses when you call #exec" do
|
@@ -119,7 +123,7 @@ describe 'transactions (multi/exec/discard)' do
|
|
119
123
|
@redises.lpush(@list, 'list')
|
120
124
|
@redises.lpush(@list, 'list')
|
121
125
|
|
122
|
-
@redises.exec.should
|
126
|
+
@redises.exec.should eq ['OK', 1, 2]
|
123
127
|
end
|
124
128
|
|
125
129
|
it "does not raise exceptions, but rather puts them in #exec's response" do
|
@@ -128,9 +132,9 @@ describe 'transactions (multi/exec/discard)' do
|
|
128
132
|
@redises.lpush(@list, 'list')
|
129
133
|
|
130
134
|
responses = @redises.exec
|
131
|
-
responses[0].should
|
135
|
+
responses[0].should eq 'OK'
|
132
136
|
responses[1].should be_a(Redis::CommandError)
|
133
|
-
responses[2].should
|
137
|
+
responses[2].should eq 1
|
134
138
|
end
|
135
139
|
end
|
136
140
|
|
@@ -151,9 +155,9 @@ describe 'transactions (multi/exec/discard)' do
|
|
151
155
|
second_lpush_response = mult.lpush(@list, 'list')
|
152
156
|
end
|
153
157
|
|
154
|
-
set_response.value.should
|
155
|
-
lpush_response.value.should
|
156
|
-
second_lpush_response.value.should
|
158
|
+
set_response.value.should eq 'OK'
|
159
|
+
lpush_response.value.should eq 1
|
160
|
+
second_lpush_response.value.should eq 2
|
157
161
|
end
|
158
162
|
end
|
159
163
|
end
|
metadata
CHANGED
@@ -1,82 +1,76 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mock_redis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.24.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Shane da Silva
|
8
8
|
- Samuel Merritt
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-06-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: redis
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '10'
|
21
|
-
- - "<"
|
18
|
+
- - "~>"
|
22
19
|
- !ruby/object:Gem::Version
|
23
|
-
version:
|
20
|
+
version: 4.2.0
|
24
21
|
type: :development
|
25
22
|
prerelease: false
|
26
23
|
version_requirements: !ruby/object:Gem::Requirement
|
27
24
|
requirements:
|
28
|
-
- - "
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '10'
|
31
|
-
- - "<"
|
25
|
+
- - "~>"
|
32
26
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
27
|
+
version: 4.2.0
|
34
28
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
29
|
+
name: rspec
|
36
30
|
requirement: !ruby/object:Gem::Requirement
|
37
31
|
requirements:
|
38
32
|
- - "~>"
|
39
33
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.
|
34
|
+
version: '3.0'
|
41
35
|
type: :development
|
42
36
|
prerelease: false
|
43
37
|
version_requirements: !ruby/object:Gem::Requirement
|
44
38
|
requirements:
|
45
39
|
- - "~>"
|
46
40
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.
|
41
|
+
version: '3.0'
|
48
42
|
- !ruby/object:Gem::Dependency
|
49
|
-
name: rspec
|
43
|
+
name: rspec-its
|
50
44
|
requirement: !ruby/object:Gem::Requirement
|
51
45
|
requirements:
|
52
46
|
- - "~>"
|
53
47
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
48
|
+
version: '1.0'
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
52
|
requirements:
|
59
53
|
- - "~>"
|
60
54
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
55
|
+
version: '1.0'
|
62
56
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
57
|
+
name: timecop
|
64
58
|
requirement: !ruby/object:Gem::Requirement
|
65
59
|
requirements:
|
66
60
|
- - "~>"
|
67
61
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
62
|
+
version: 0.9.1
|
69
63
|
type: :development
|
70
64
|
prerelease: false
|
71
65
|
version_requirements: !ruby/object:Gem::Requirement
|
72
66
|
requirements:
|
73
67
|
- - "~>"
|
74
68
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
69
|
+
version: 0.9.1
|
76
70
|
description: Instantiate one with `redis = MockRedis.new` and treat it like you would
|
77
71
|
a normal Redis object. It supports all the usual Redis operations.
|
78
72
|
email:
|
79
|
-
-
|
73
|
+
- shane@dasilva.io
|
80
74
|
executables: []
|
81
75
|
extensions: []
|
82
76
|
extra_rdoc_files: []
|
@@ -91,7 +85,7 @@ files:
|
|
91
85
|
- ".travis.yml"
|
92
86
|
- CHANGELOG.md
|
93
87
|
- Gemfile
|
94
|
-
- LICENSE
|
88
|
+
- LICENSE.md
|
95
89
|
- README.md
|
96
90
|
- Rakefile
|
97
91
|
- lib/mock_redis.rb
|
@@ -109,6 +103,9 @@ files:
|
|
109
103
|
- lib/mock_redis/pipelined_wrapper.rb
|
110
104
|
- lib/mock_redis/set_methods.rb
|
111
105
|
- lib/mock_redis/sort_method.rb
|
106
|
+
- lib/mock_redis/stream.rb
|
107
|
+
- lib/mock_redis/stream/id.rb
|
108
|
+
- lib/mock_redis/stream_methods.rb
|
112
109
|
- lib/mock_redis/string_methods.rb
|
113
110
|
- lib/mock_redis/transaction_wrapper.rb
|
114
111
|
- lib/mock_redis/undef_redis_methods.rb
|
@@ -134,6 +131,7 @@ files:
|
|
134
131
|
- spec/commands/decrby_spec.rb
|
135
132
|
- spec/commands/del_spec.rb
|
136
133
|
- spec/commands/disconnect_spec.rb
|
134
|
+
- spec/commands/dump_spec.rb
|
137
135
|
- spec/commands/echo_spec.rb
|
138
136
|
- spec/commands/eval_spec.rb
|
139
137
|
- spec/commands/evalsha_spec.rb
|
@@ -151,7 +149,6 @@ files:
|
|
151
149
|
- spec/commands/getbit_spec.rb
|
152
150
|
- spec/commands/getrange_spec.rb
|
153
151
|
- spec/commands/getset_spec.rb
|
154
|
-
- spec/commands/hash_operator_spec.rb
|
155
152
|
- spec/commands/hdel_spec.rb
|
156
153
|
- spec/commands/hexists_spec.rb
|
157
154
|
- spec/commands/hget_spec.rb
|
@@ -202,6 +199,7 @@ files:
|
|
202
199
|
- spec/commands/randomkey_spec.rb
|
203
200
|
- spec/commands/rename_spec.rb
|
204
201
|
- spec/commands/renamenx_spec.rb
|
202
|
+
- spec/commands/restore_spec.rb
|
205
203
|
- spec/commands/rpop_spec.rb
|
206
204
|
- spec/commands/rpoplpush_spec.rb
|
207
205
|
- spec/commands/rpush_spec.rb
|
@@ -240,11 +238,18 @@ files:
|
|
240
238
|
- spec/commands/type_spec.rb
|
241
239
|
- spec/commands/unwatch_spec.rb
|
242
240
|
- spec/commands/watch_spec.rb
|
241
|
+
- spec/commands/xadd_spec.rb
|
242
|
+
- spec/commands/xlen_spec.rb
|
243
|
+
- spec/commands/xrange_spec.rb
|
244
|
+
- spec/commands/xrevrange_spec.rb
|
245
|
+
- spec/commands/xtrim_spec.rb
|
243
246
|
- spec/commands/zadd_spec.rb
|
244
247
|
- spec/commands/zcard_spec.rb
|
245
248
|
- spec/commands/zcount_spec.rb
|
246
249
|
- spec/commands/zincrby_spec.rb
|
247
250
|
- spec/commands/zinterstore_spec.rb
|
251
|
+
- spec/commands/zpopmax_spec.rb
|
252
|
+
- spec/commands/zpopmin_spec.rb
|
248
253
|
- spec/commands/zrange_spec.rb
|
249
254
|
- spec/commands/zrangebyscore_spec.rb
|
250
255
|
- spec/commands/zrank_spec.rb
|
@@ -261,6 +266,7 @@ files:
|
|
261
266
|
- spec/mock_redis_spec.rb
|
262
267
|
- spec/spec_helper.rb
|
263
268
|
- spec/support/redis_multiplexer.rb
|
269
|
+
- spec/support/shared_examples/does_not_cleanup_empty_strings.rb
|
264
270
|
- spec/support/shared_examples/only_operates_on_hashes.rb
|
265
271
|
- spec/support/shared_examples/only_operates_on_lists.rb
|
266
272
|
- spec/support/shared_examples/only_operates_on_sets.rb
|
@@ -268,7 +274,7 @@ files:
|
|
268
274
|
- spec/support/shared_examples/only_operates_on_zsets.rb
|
269
275
|
- spec/support/shared_examples/sorts_enumerables.rb
|
270
276
|
- spec/transactions_spec.rb
|
271
|
-
homepage: https://github.com/
|
277
|
+
homepage: https://github.com/sds/mock_redis
|
272
278
|
licenses:
|
273
279
|
- MIT
|
274
280
|
metadata: {}
|
@@ -280,15 +286,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
280
286
|
requirements:
|
281
287
|
- - ">="
|
282
288
|
- !ruby/object:Gem::Version
|
283
|
-
version: '2.
|
289
|
+
version: '2.4'
|
284
290
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
285
291
|
requirements:
|
286
292
|
- - ">="
|
287
293
|
- !ruby/object:Gem::Version
|
288
294
|
version: '0'
|
289
295
|
requirements: []
|
290
|
-
|
291
|
-
rubygems_version: 2.7.3
|
296
|
+
rubygems_version: 3.1.1
|
292
297
|
signing_key:
|
293
298
|
specification_version: 4
|
294
299
|
summary: Redis mock that just lives in memory; useful for testing.
|
@@ -310,6 +315,7 @@ test_files:
|
|
310
315
|
- spec/commands/decrby_spec.rb
|
311
316
|
- spec/commands/del_spec.rb
|
312
317
|
- spec/commands/disconnect_spec.rb
|
318
|
+
- spec/commands/dump_spec.rb
|
313
319
|
- spec/commands/echo_spec.rb
|
314
320
|
- spec/commands/eval_spec.rb
|
315
321
|
- spec/commands/evalsha_spec.rb
|
@@ -327,7 +333,6 @@ test_files:
|
|
327
333
|
- spec/commands/getbit_spec.rb
|
328
334
|
- spec/commands/getrange_spec.rb
|
329
335
|
- spec/commands/getset_spec.rb
|
330
|
-
- spec/commands/hash_operator_spec.rb
|
331
336
|
- spec/commands/hdel_spec.rb
|
332
337
|
- spec/commands/hexists_spec.rb
|
333
338
|
- spec/commands/hget_spec.rb
|
@@ -378,6 +383,7 @@ test_files:
|
|
378
383
|
- spec/commands/randomkey_spec.rb
|
379
384
|
- spec/commands/rename_spec.rb
|
380
385
|
- spec/commands/renamenx_spec.rb
|
386
|
+
- spec/commands/restore_spec.rb
|
381
387
|
- spec/commands/rpop_spec.rb
|
382
388
|
- spec/commands/rpoplpush_spec.rb
|
383
389
|
- spec/commands/rpush_spec.rb
|
@@ -416,11 +422,18 @@ test_files:
|
|
416
422
|
- spec/commands/type_spec.rb
|
417
423
|
- spec/commands/unwatch_spec.rb
|
418
424
|
- spec/commands/watch_spec.rb
|
425
|
+
- spec/commands/xadd_spec.rb
|
426
|
+
- spec/commands/xlen_spec.rb
|
427
|
+
- spec/commands/xrange_spec.rb
|
428
|
+
- spec/commands/xrevrange_spec.rb
|
429
|
+
- spec/commands/xtrim_spec.rb
|
419
430
|
- spec/commands/zadd_spec.rb
|
420
431
|
- spec/commands/zcard_spec.rb
|
421
432
|
- spec/commands/zcount_spec.rb
|
422
433
|
- spec/commands/zincrby_spec.rb
|
423
434
|
- spec/commands/zinterstore_spec.rb
|
435
|
+
- spec/commands/zpopmax_spec.rb
|
436
|
+
- spec/commands/zpopmin_spec.rb
|
424
437
|
- spec/commands/zrange_spec.rb
|
425
438
|
- spec/commands/zrangebyscore_spec.rb
|
426
439
|
- spec/commands/zrank_spec.rb
|
@@ -437,6 +450,7 @@ test_files:
|
|
437
450
|
- spec/mock_redis_spec.rb
|
438
451
|
- spec/spec_helper.rb
|
439
452
|
- spec/support/redis_multiplexer.rb
|
453
|
+
- spec/support/shared_examples/does_not_cleanup_empty_strings.rb
|
440
454
|
- spec/support/shared_examples/only_operates_on_hashes.rb
|
441
455
|
- spec/support/shared_examples/only_operates_on_lists.rb
|
442
456
|
- spec/support/shared_examples/only_operates_on_sets.rb
|