mock_redis 0.25.0 → 0.26.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e4a2d7e6a155059cb97120f7f95c1e992a87a3933be5fe337a443dc0a9ac30df
4
- data.tar.gz: 135172a723e9d5bfb058eec85863387093d56e3a6d7729f28da425f2b239e4bb
3
+ metadata.gz: c087a47dd536c50c70b1238484a41a46669ca210b53063efd87fc863c83aaa67
4
+ data.tar.gz: 41927d6f1904768faaa5f9bbeff4fa803f7dc1045aa76da8f885594326eab326
5
5
  SHA512:
6
- metadata.gz: 1e1b5cba39d01b11b2c85442c5d9485285bf661316e5196448484bc78dd9d866c3829648cd547ac0996d454f113d054c3bc43728f917740870f5fe191c97b15c
7
- data.tar.gz: bf5d20de1111be19c03cacb2639f303d0ced578656bfc5b4dae4e8cd6e28991be003e7a20702ab6825526fbee6f91ebcd676fbb27c9010792abd37a2e7eab218
6
+ metadata.gz: efe4f6cb8a7c3326e8ad06c1753a651dc41323ca1fb4a7f23a1ac080feb09a4192f5d140ddeb437ce7268c0325e9e8bc4270f6d68facc88696d9586b9342d388
7
+ data.tar.gz: 7392d8b37355b3c22dd7c51745df2f67497dfb88f2534a5cf5df606e07b6fe47cc7969e4e005da85b4a4e382ef8b7801e220f948db71313330079781a973ff75
@@ -1,5 +1,9 @@
1
1
  # MockRedis Changelog
2
2
 
3
+ ### 0.26.0
4
+
5
+ * Add block and count support to `xread` ([#194](https://github.com/sds/mock_redis/pull/194))
6
+
3
7
  ### 0.25.0
4
8
 
5
9
  * Add support for `xread` command ([#190](https://github.com/sds/mock_redis/pull/190))
@@ -60,9 +60,12 @@ class MockRedis
60
60
  items
61
61
  end
62
62
 
63
- def read(id)
63
+ def read(id, *opts_in)
64
+ opts = options opts_in, %w[count block]
64
65
  stream_id = MockRedis::Stream::Id.new(id)
65
- members.select { |m| (stream_id < m[0]) }.map { |m| [m[0].to_s, m[1]] }
66
+ items = members.select { |m| (stream_id < m[0]) }.map { |m| [m[0].to_s, m[1]] }
67
+ return items.first(opts['count'].to_i) if opts.key?('count')
68
+ items
66
69
  end
67
70
 
68
71
  def each
@@ -66,14 +66,16 @@ class MockRedis
66
66
  end
67
67
  end
68
68
 
69
- # TODO: Implement count and block parameters
70
- def xread(keys, ids)
69
+ def xread(keys, ids, count: nil, block: nil)
70
+ args = []
71
+ args += ['COUNT', count] if count
72
+ args += ['BLOCK', block.to_i] if block
71
73
  result = {}
72
74
  keys = keys.is_a?(Array) ? keys : [keys]
73
75
  ids = ids.is_a?(Array) ? ids : [ids]
74
76
  keys.each_with_index do |key, index|
75
77
  with_stream_at(key) do |stream|
76
- data = stream.read(ids[index])
78
+ data = stream.read(ids[index], *args)
77
79
  result[key] = data unless data.empty?
78
80
  end
79
81
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Defines the gem version.
4
4
  class MockRedis
5
- VERSION = '0.25.0'
5
+ VERSION = '0.26.0'
6
6
  end
@@ -47,4 +47,20 @@ describe '#xread(keys, ids)' do
47
47
  expect(@redises.xread([@key, @key1], %w[1234567891234-2 1234567891234-1]))
48
48
  .to eq({ @key1 => [['1234567891234-2', { 'key1' => 'value2' }]] })
49
49
  end
50
+
51
+ it 'supports the block parameter' do
52
+ @redises.xadd(@key, { key: 'value' }, id: '1234567891234-0')
53
+ expect(@redises.xread(@key, '0-0', block: 1000))
54
+ .to eq({ @key => [['1234567891234-0', { 'key' => 'value' }]] })
55
+ end
56
+
57
+ it 'limits results with count' do
58
+ @redises.xadd(@key, { key: 'value' }, id: '1234567891234-0')
59
+ @redises.xadd(@key, { key: 'value' }, id: '1234567891234-1')
60
+ @redises.xadd(@key, { key: 'value' }, id: '1234567891234-2')
61
+ expect(@redises.xread(@key, '0-0', count: 1))
62
+ .to eq({ @key => [['1234567891234-0', { 'key' => 'value' }]] })
63
+ expect(@redises.xread(@key, '1234567891234-0', count: 1))
64
+ .to eq({ @key => [['1234567891234-1', { 'key' => 'value' }]] })
65
+ end
50
66
  end
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.25.0
4
+ version: 0.26.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: 2020-06-25 00:00:00.000000000 Z
12
+ date: 2020-08-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis