mock_redis 0.32.0 → 0.34.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9f945150c69e6ff81838d4e029f1620ade56e9da6c3cb2ed0550cd61060335a
4
- data.tar.gz: fbd58f70dbf78b770a6d3e04351771a1d94a7cac87afbff95213c92bceb16eaa
3
+ metadata.gz: 85e71d6b9f2fa3400db015c2c29a7f8c0d017c1c6c0f44f45c404fd1eb8d6fd6
4
+ data.tar.gz: b61b3a420aa7dc9232fffbddd263c82719665cc738e1e36834d95fcd9566cff3
5
5
  SHA512:
6
- metadata.gz: 9320958fc6e3360f26317dfcb47747bf8d39d626d54c0297cece31b9521fc4ad991acdccf885428d05f8b82765cfec12a37af4de33473f4106c7e3eb4e9c2b69
7
- data.tar.gz: 05c04acff0f82500f114a868ed40aef95fc115e367ed94008075ddd90de5550dd939ca12215ffb3c88021a6aeff18cd3f9ff51dfabcc3f14244b40465d6184f0
6
+ metadata.gz: ce57715bda59804aeed319d49a76d81ac9cd1e4d9093005402dd256b804b20245c2a723051eef79c7da883896e75b72b91fe0066ae6e830dd1d24130a751b965
7
+ data.tar.gz: b4a4d237d9705b64b973fd5959ed2544fd8fbf037f5525b1080d647c1b4a1743fb22110e8d5af4cf4077ba7a185e880f4cfbb303ff23346db3611adc64d5aab3
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # MockRedis Changelog
2
2
 
3
+ ### 0.34.0
4
+
5
+ * Add support for `with`
6
+
7
+ ### 0.33.0
8
+
9
+ * Add support for `GET` argument to `SET` command
10
+
3
11
  ### 0.32.0
4
12
 
5
13
  * Add support for `psetex`
data/README.md CHANGED
@@ -105,7 +105,7 @@ We recommend running Redis within a Docker container to make development as simp
105
105
 
106
106
  1. Start Redis.
107
107
  ```bash
108
- docker run --rm -p 6379:6379 redis
108
+ docker run --rm -p 6379:6379 redis:6.2-alpine
109
109
  ```
110
110
  2. Install dependencies.
111
111
  ```bash
@@ -71,7 +71,7 @@ class MockRedis
71
71
 
72
72
  def del(*keys)
73
73
  keys = keys.flatten.map(&:to_s)
74
- assert_has_args(keys, 'del')
74
+ # assert_has_args(keys, 'del') # no longer errors in redis > v4.5
75
75
 
76
76
  keys.
77
77
  find_all { |key| data[key] }.
@@ -206,8 +206,10 @@ class MockRedis
206
206
 
207
207
  # Parameer list required to ensure the ArgumentError is returned correctly
208
208
  # rubocop:disable Metrics/ParameterLists
209
- def set(key, value, ex: nil, px: nil, nx: nil, xx: nil, keepttl: nil)
209
+ def set(key, value, ex: nil, px: nil, nx: nil, xx: nil, keepttl: nil, get: nil)
210
210
  key = key.to_s
211
+ retval = self.get(key) if get
212
+
211
213
  return_true = false
212
214
  if nx
213
215
  if exists?(key)
@@ -240,7 +242,11 @@ class MockRedis
240
242
  pexpire(key, px)
241
243
  end
242
244
 
243
- return_true ? true : 'OK'
245
+ if get
246
+ retval
247
+ else
248
+ return_true ? true : 'OK'
249
+ end
244
250
  end
245
251
  # rubocop:enable Metrics/ParameterLists
246
252
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Defines the gem version.
4
4
  class MockRedis
5
- VERSION = '0.32.0'
5
+ VERSION = '0.34.0'
6
6
  end
data/lib/mock_redis.rb CHANGED
@@ -86,6 +86,10 @@ class MockRedis
86
86
  self
87
87
  end
88
88
 
89
+ def with
90
+ yield self
91
+ end
92
+
89
93
  def respond_to?(method, include_private = false)
90
94
  super || @db.respond_to?(method, include_private)
91
95
  end
data/mock_redis.gemspec CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.add_runtime_dependency 'ruby2_keywords'
27
27
 
28
- s.add_development_dependency 'redis', '~> 4.2.0'
28
+ s.add_development_dependency 'redis', '~> 4.5.0'
29
29
  s.add_development_dependency 'rspec', '~> 3.0'
30
30
  s.add_development_dependency 'rspec-its', '~> 1.0'
31
31
  s.add_development_dependency 'timecop', '~> 0.9.1'
data/spec/client_spec.rb CHANGED
@@ -26,4 +26,11 @@ describe 'client' do
26
26
  expect(MockRedis.new).to respond_to(:close)
27
27
  end
28
28
  end
29
+
30
+ context '#with' do
31
+ it 'supports with' do
32
+ redis = MockRedis.new
33
+ redis.with { |c| c.set('key', 'value') }.should == 'OK'
34
+ end
35
+ end
29
36
  end
@@ -40,7 +40,7 @@ describe '#del(key [, key, ...])' do
40
40
  end
41
41
 
42
42
  it 'raises an error if an empty array is given' do
43
- expect { @redises.del [] }.to raise_error Redis::CommandError
43
+ expect { @redises.del [] }.not_to raise_error Redis::CommandError
44
44
  end
45
45
 
46
46
  it 'removes a stream key' do
@@ -30,5 +30,6 @@ describe '#lpop(key)' do
30
30
  @redises.get(@key).should be_nil
31
31
  end
32
32
 
33
+ let(:default_error) { RedisMultiplexer::MismatchedResponse }
33
34
  it_should_behave_like 'a list-only command'
34
35
  end
@@ -30,5 +30,6 @@ describe '#rpop(key)' do
30
30
  @redises.get(@key).should be_nil
31
31
  end
32
32
 
33
+ let(:default_error) { RedisMultiplexer::MismatchedResponse }
33
34
  it_should_behave_like 'a list-only command'
34
35
  end
@@ -33,6 +33,21 @@ describe '#set(key, value)' do
33
33
  @redises.set(key, 1, xx: true).should == true
34
34
  end
35
35
 
36
+ it 'accepts GET on a string' do
37
+ @redises.set(key, '1').should == 'OK'
38
+ @redises.set(key, '2', get: true).should == '1'
39
+ @redises.set(key, '3', get: true).should == '2'
40
+ end
41
+
42
+ context 'when set key is not a String' do
43
+ it 'should error with Redis::CommandError' do
44
+ @redises.lpush(key, '1').should == 1
45
+ expect do
46
+ @redises.set(key, '2', get: true)
47
+ end.to raise_error(Redis::CommandError)
48
+ end
49
+ end
50
+
36
51
  it 'sets the ttl to -1' do
37
52
  @redises.set(key, 1)
38
53
  expect(@redises.ttl(key)).to eq(-1)
data/spec/spec_helper.rb CHANGED
@@ -62,7 +62,10 @@ RSpec.configure do |config|
62
62
  # databases mentioned in our tests
63
63
  [1, 0].each do |db|
64
64
  @redises.send_without_checking(:select, db)
65
- @redises.send_without_checking(:keys, 'mock-redis-test:*').each do |key|
65
+ keys = @redises.send_without_checking(:keys, 'mock-redis-test:*')
66
+ next unless keys.is_a?(Enumerable)
67
+
68
+ keys.each do |key|
66
69
  @redises.send_without_checking(:del, key)
67
70
  end
68
71
  end
@@ -8,7 +8,7 @@ shared_examples_for 'does not remove empty strings on error' do
8
8
  @redises.set(key, '')
9
9
  lambda do
10
10
  @redises.send(method, *args)
11
- end.should raise_error(RuntimeError)
11
+ end.should raise_error(defined?(default_error) ? default_error : RuntimeError)
12
12
  @redises.get(key).should == ''
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ shared_examples_for 'a list-only command' do
8
8
  @redises.set(key, 1)
9
9
  lambda do
10
10
  @redises.send(method, *args)
11
- end.should raise_error(RuntimeError)
11
+ end.should raise_error(defined?(default_error) ? default_error : RuntimeError)
12
12
  end
13
13
 
14
14
  it_should_behave_like 'does not remove empty strings on error'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mock_redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.32.0
4
+ version: 0.34.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane da Silva
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-06-12 00:00:00.000000000 Z
12
+ date: 2022-09-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby2_keywords
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 4.2.0
34
+ version: 4.5.0
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 4.2.0
41
+ version: 4.5.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement