mock_redis 0.25.0 → 0.26.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: 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