riak-client 2.5.0 → 2.6.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.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/RELNOTES.md +3 -0
  4. data/lib/riak/bucket.rb +1 -1
  5. data/lib/riak/client.rb +14 -7
  6. data/lib/riak/client/beefcake/messages.rb +13 -0
  7. data/lib/riak/multi.rb +101 -0
  8. data/lib/riak/multiexist.rb +14 -0
  9. data/lib/riak/multiget.rb +7 -107
  10. data/lib/riak/version.rb +1 -1
  11. metadata +12 -234
  12. data/.document +0 -5
  13. data/.gitignore +0 -44
  14. data/.rspec +0 -2
  15. data/Gemfile +0 -17
  16. data/Guardfile +0 -20
  17. data/Rakefile +0 -124
  18. data/riak-client.gemspec +0 -71
  19. data/spec/failover/failover.rb +0 -59
  20. data/spec/fixtures/bitcask.txt +0 -25
  21. data/spec/fixtures/cat.jpg +0 -0
  22. data/spec/fixtures/multipart-basic-conflict.txt +0 -15
  23. data/spec/fixtures/multipart-blank.txt +0 -7
  24. data/spec/fixtures/multipart-mapreduce.txt +0 -10
  25. data/spec/fixtures/multipart-with-body.txt +0 -16
  26. data/spec/fixtures/multipart-with-marked-tombstones.txt +0 -17
  27. data/spec/fixtures/multipart-with-unmarked-tombstone.txt +0 -16
  28. data/spec/fixtures/server.cert.crt +0 -15
  29. data/spec/fixtures/server.cert.key +0 -15
  30. data/spec/fixtures/test.pem +0 -1
  31. data/spec/fixtures/yz_schema_template.xml +0 -18
  32. data/spec/integration/riak/bucket_types_spec.rb +0 -308
  33. data/spec/integration/riak/conflict_resolution_spec.rb +0 -96
  34. data/spec/integration/riak/counters_spec.rb +0 -36
  35. data/spec/integration/riak/crdt/configuration_spec.rb +0 -38
  36. data/spec/integration/riak/crdt_search_spec.rb +0 -176
  37. data/spec/integration/riak/crdt_spec.rb +0 -332
  38. data/spec/integration/riak/crdt_validation/map_spec.rb +0 -63
  39. data/spec/integration/riak/crdt_validation/set_spec.rb +0 -122
  40. data/spec/integration/riak/encodings/crdt_spec.rb +0 -122
  41. data/spec/integration/riak/encodings/kv_spec.rb +0 -87
  42. data/spec/integration/riak/encodings/yz_spec.rb +0 -142
  43. data/spec/integration/riak/preflist_spec.rb +0 -43
  44. data/spec/integration/riak/properties_spec.rb +0 -69
  45. data/spec/integration/riak/protobuffs/interrupted_request_spec.rb +0 -33
  46. data/spec/integration/riak/protobuffs/timeouts_spec.rb +0 -178
  47. data/spec/integration/riak/protobuffs_backends_spec.rb +0 -40
  48. data/spec/integration/riak/search_spec.rb +0 -104
  49. data/spec/integration/riak/secondary_index_spec.rb +0 -72
  50. data/spec/integration/riak/security_spec.rb +0 -105
  51. data/spec/integration/riak/threading_spec.rb +0 -154
  52. data/spec/integration/riak/time_series_spec.rb +0 -212
  53. data/spec/integration/yokozuna/index_spec.rb +0 -61
  54. data/spec/integration/yokozuna/queries_spec.rb +0 -115
  55. data/spec/integration/yokozuna/schema_spec.rb +0 -49
  56. data/spec/riak/beefcake_protobuffs_backend/bucket_properties_operator_spec.rb +0 -247
  57. data/spec/riak/beefcake_protobuffs_backend/crdt_operator_spec.rb +0 -244
  58. data/spec/riak/beefcake_protobuffs_backend/object_methods_spec.rb +0 -53
  59. data/spec/riak/beefcake_protobuffs_backend/protocol_spec.rb +0 -189
  60. data/spec/riak/beefcake_protobuffs_backend/ts_cell_codec_spec.rb +0 -124
  61. data/spec/riak/beefcake_protobuffs_backend_spec.rb +0 -162
  62. data/spec/riak/bucket_properties_spec.rb +0 -135
  63. data/spec/riak/bucket_spec.rb +0 -275
  64. data/spec/riak/bucket_type_spec.rb +0 -50
  65. data/spec/riak/bucket_typed/bucket_spec.rb +0 -78
  66. data/spec/riak/client_spec.rb +0 -304
  67. data/spec/riak/core_ext/to_param_spec.rb +0 -15
  68. data/spec/riak/counter_spec.rb +0 -122
  69. data/spec/riak/crdt/counter_spec.rb +0 -55
  70. data/spec/riak/crdt/hyper_log_log_spec.rb +0 -56
  71. data/spec/riak/crdt/inner_counter_spec.rb +0 -21
  72. data/spec/riak/crdt/inner_flag_spec.rb +0 -39
  73. data/spec/riak/crdt/inner_map_spec.rb +0 -47
  74. data/spec/riak/crdt/inner_register_spec.rb +0 -40
  75. data/spec/riak/crdt/inner_set_spec.rb +0 -33
  76. data/spec/riak/crdt/map_spec.rb +0 -78
  77. data/spec/riak/crdt/set_spec.rb +0 -61
  78. data/spec/riak/crdt/shared_examples.rb +0 -88
  79. data/spec/riak/crdt/typed_collection_spec.rb +0 -225
  80. data/spec/riak/escape_spec.rb +0 -72
  81. data/spec/riak/feature_detection_spec.rb +0 -77
  82. data/spec/riak/index_collection_spec.rb +0 -53
  83. data/spec/riak/instrumentation_spec.rb +0 -124
  84. data/spec/riak/link_spec.rb +0 -85
  85. data/spec/riak/list_buckets_spec.rb +0 -41
  86. data/spec/riak/map_reduce/filter_builder_spec.rb +0 -32
  87. data/spec/riak/map_reduce/phase_spec.rb +0 -142
  88. data/spec/riak/map_reduce_spec.rb +0 -434
  89. data/spec/riak/multiget_spec.rb +0 -81
  90. data/spec/riak/node_spec.rb +0 -26
  91. data/spec/riak/robject_spec.rb +0 -542
  92. data/spec/riak/search/index_spec.rb +0 -72
  93. data/spec/riak/search/query_spec.rb +0 -88
  94. data/spec/riak/search/result_collection_spec.rb +0 -89
  95. data/spec/riak/search/result_document_spec.rb +0 -106
  96. data/spec/riak/search/schema_spec.rb +0 -63
  97. data/spec/riak/search_spec.rb +0 -107
  98. data/spec/riak/secondary_index_spec.rb +0 -225
  99. data/spec/riak/serializers_spec.rb +0 -121
  100. data/spec/riak/stamp_spec.rb +0 -54
  101. data/spec/riak/time_series/deletion_spec.rb +0 -33
  102. data/spec/riak/time_series/listing_spec.rb +0 -51
  103. data/spec/riak/time_series/submission_spec.rb +0 -35
  104. data/spec/riak/util/gzip_spec.rb +0 -49
  105. data/spec/riak/walk_spec_spec.rb +0 -203
  106. data/spec/spec_helper.rb +0 -67
  107. data/spec/support/certs/README.md +0 -13
  108. data/spec/support/certs/ca.crt +0 -21
  109. data/spec/support/certs/client.crl +0 -13
  110. data/spec/support/certs/client.crt +0 -94
  111. data/spec/support/certs/client.csr +0 -18
  112. data/spec/support/certs/client.key +0 -27
  113. data/spec/support/certs/empty_ca.crt +0 -21
  114. data/spec/support/certs/server.crl +0 -13
  115. data/spec/support/certs/server.crt +0 -94
  116. data/spec/support/certs/server.key +0 -27
  117. data/spec/support/crdt_search_config.rb +0 -112
  118. data/spec/support/crdt_search_fixtures.rb +0 -42
  119. data/spec/support/integration_setup.rb +0 -10
  120. data/spec/support/search_config.rb +0 -83
  121. data/spec/support/search_corpus_setup.rb +0 -39
  122. data/spec/support/test_client.rb +0 -52
  123. data/spec/support/test_client.yml.example +0 -10
  124. data/spec/support/unified_backend_examples.rb +0 -402
  125. data/spec/support/version_filter.rb +0 -12
  126. data/spec/support/wait_until.rb +0 -20
@@ -1,225 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Riak::SecondaryIndex do
4
- before(:each) do
5
- @client = Riak::Client.new
6
- @bucket = Riak::Bucket.new @client, 'foo'
7
- end
8
-
9
- describe "initialization" do
10
- it "accepts a bucket, index name, and scalar" do
11
- expect { Riak::SecondaryIndex.new @bucket, 'asdf', 'aaaa' }.not_to raise_error
12
- expect { Riak::SecondaryIndex.new @bucket, 'asdf', 12345 }.not_to raise_error
13
- end
14
-
15
- it "accepts a bucket, index name, and a range" do
16
- expect { Riak::SecondaryIndex.new @bucket, 'asdf', 'aaaa'..'zzzz' }.not_to raise_error
17
- expect { Riak::SecondaryIndex.new @bucket, 'asdf', 1..5 }.not_to raise_error
18
- end
19
- end
20
-
21
- describe "operation" do
22
- before(:each) do
23
- @backend = double 'Backend'
24
- allow(@client).to receive(:backend).and_yield(@backend)
25
- @args = [@bucket, 'asdf', 'aaaa'..'zzzz', {}]
26
- @index = Riak::SecondaryIndex.new *@args
27
-
28
- expect(@backend).to receive(:get_index).with(*@args).and_return(%w{abcd efgh})
29
- end
30
-
31
- it "returns an array of keys" do
32
- @results = @index.keys
33
- expect(@results).to be_a Array
34
- expect(@results.first).to be_a String
35
- end
36
- it "returns an array of values" do
37
- expect(@backend).to receive(:fetch_object).with(@bucket, 'abcd', {}).and_return('abcd')
38
- expect(@backend).to receive(:fetch_object).with(@bucket, 'efgh', {}).and_return('efgh')
39
-
40
- @results = @index.values
41
- expect(@results).to be_a Array
42
- expect(@results.length).to eq(2)
43
- end
44
- end
45
-
46
- describe "streaming" do
47
- it "streams keys into a block" do
48
- @backend = double 'Backend'
49
- allow(@client).to receive(:backend).and_yield(@backend)
50
- @args = [@bucket, 'asdf', 'aaaa'..'zzzz', {stream: true}]
51
- @index = Riak::SecondaryIndex.new *@args
52
-
53
- expect(@backend).to receive(:get_index).with(*@args).and_yield('abcd').and_yield('efgh')
54
-
55
- @index.keys {|b| :noop }
56
- end
57
- end
58
-
59
- describe "pagination" do
60
- it "supports max_results" do
61
- @max_results = 5
62
-
63
- @expected_collection = Riak::IndexCollection.new_from_json({
64
- 'keys' => %w{aaaa bbbb cccc dddd eeee},
65
- 'continuation' => 'examplecontinuation'
66
- }.to_json)
67
-
68
- @backend = double 'Backend'
69
- allow(@client).to receive(:backend).and_yield(@backend)
70
- expect(@backend).
71
- to receive(:get_index).
72
- with(
73
- @bucket,
74
- 'asdf',
75
- ('aaaa'..'zzzz'),
76
- :max_results => @max_results
77
- ).
78
- and_return(@expected_collection)
79
- allow(@backend).to receive(:get_server_version).and_return('1.4.0')
80
-
81
-
82
- @index = Riak::SecondaryIndex.new(
83
- @bucket,
84
- 'asdf',
85
- 'aaaa'..'zzzz',
86
- :max_results => @max_results
87
- )
88
-
89
- @results = @index.keys
90
- expect(@results).to be_an Array
91
- expect(@results).to eq(@expected_collection)
92
- expect(@results.length).to eq(@max_results)
93
- end
94
-
95
- it "supports continuations" do
96
- @max_results = 5
97
-
98
- @expected_collection = Riak::IndexCollection.new_from_json({
99
- 'keys' => %w{ffff gggg hhhh}
100
- }.to_json)
101
-
102
- @backend = double 'Backend'
103
- allow(@client).to receive(:backend).and_yield(@backend)
104
- expect(@backend).
105
- to receive(:get_index).
106
- with(
107
- @bucket,
108
- 'asdf',
109
- ('aaaa'..'zzzz'),
110
- max_results: @max_results,
111
- continuation: 'examplecontinuation'
112
- ).
113
- and_return(@expected_collection)
114
- allow(@backend).to receive(:get_server_version).and_return('1.4.0')
115
-
116
-
117
- @index = Riak::SecondaryIndex.new(
118
- @bucket,
119
- 'asdf',
120
- 'aaaa'..'zzzz',
121
- max_results: @max_results,
122
- continuation: 'examplecontinuation'
123
- )
124
-
125
- @results = @index.keys
126
- expect(@results).to be_an Array
127
- expect(@results).to eq(@expected_collection)
128
- end
129
-
130
- it "supports a next_page method" do
131
- @max_results = 5
132
-
133
- @expected_collection = Riak::IndexCollection.new_from_json({
134
- 'keys' => %w{aaaa bbbb cccc dddd eeee},
135
- 'continuation' => 'examplecontinuation'
136
- }.to_json)
137
-
138
- @backend = double 'Backend'
139
- allow(@client).to receive(:backend).and_yield(@backend)
140
- expect(@backend).
141
- to receive(:get_index).
142
- once.
143
- with(
144
- @bucket,
145
- 'asdf',
146
- ('aaaa'..'zzzz'),
147
- :max_results => @max_results
148
- ).
149
- and_return(@expected_collection)
150
- allow(@backend).to receive(:get_server_version).and_return('1.4.0')
151
-
152
-
153
- @index = Riak::SecondaryIndex.new(
154
- @bucket,
155
- 'asdf',
156
- 'aaaa'..'zzzz',
157
- :max_results => @max_results
158
- )
159
-
160
- @results = @index.keys
161
- expect(@results).to eq(@expected_collection)
162
-
163
- @second_collection = Riak::IndexCollection.new_from_json({
164
- 'keys' => %w{ffff gggg hhhh}
165
- }.to_json)
166
- expect(@backend).
167
- to receive(:get_index).
168
- once.
169
- with(
170
- @bucket,
171
- 'asdf',
172
- ('aaaa'..'zzzz'),
173
- max_results: @max_results,
174
- continuation: 'examplecontinuation'
175
- ).
176
- and_return(@second_collection)
177
-
178
- @second_page = @index.next_page
179
- @second_results = @second_page.keys
180
- expect(@second_results).to eq(@second_collection)
181
- end
182
- end
183
-
184
- describe "return_terms" do
185
- it "optionally gives the index value" do
186
- @expected_collection = Riak::IndexCollection.new_from_json({
187
- 'results' => [
188
- {'aaaa' => 'aaaa'},
189
- {'bbbb' => 'bbbb'},
190
- {'bbbb' => 'bbbb2'}
191
- ]
192
- }.to_json)
193
-
194
-
195
- @backend = double 'Backend'
196
- allow(@client).to receive(:backend).and_yield(@backend)
197
- expect(@backend).
198
- to receive(:get_index).
199
- with(
200
- @bucket,
201
- 'asdf',
202
- ('aaaa'..'zzzz'),
203
- :return_terms => true
204
- ).
205
- and_return(@expected_collection)
206
- allow(@backend).to receive(:get_server_version).and_return('1.4.0')
207
-
208
-
209
- @index = Riak::SecondaryIndex.new(
210
- @bucket,
211
- 'asdf',
212
- 'aaaa'..'zzzz',
213
- :return_terms => true
214
- )
215
-
216
- @results = @index.keys
217
- expect(@results).to be_an Array
218
- expect(@results).to eq(@expected_collection)
219
- expect(@results.with_terms).to eq({
220
- 'aaaa' => %w{aaaa},
221
- 'bbbb' => %w{bbbb bbbb2}
222
- })
223
- end
224
- end
225
- end
@@ -1,121 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Riak::Serializers do
4
- shared_examples_for "a serializer" do |type, deserialized, serialized|
5
- context "for #{type}" do
6
- it "serializes #{deserialized} to #{serialized}" do
7
- expect(described_class.serialize(type, deserialized)).to eq(serialized)
8
- end
9
-
10
- it "deserializes #{serialized} to #{deserialized}" do
11
- expect(described_class.deserialize(type, serialized)).
12
- to eq(deserialized)
13
- end
14
-
15
- it "round trips properly" do
16
- str = described_class.serialize(type, deserialized)
17
- expect(described_class.deserialize(type, str)).to eq(deserialized)
18
- end
19
- end
20
- end
21
-
22
- it_behaves_like "a serializer", "text/plain", "a string", "a string"
23
- it_behaves_like "a serializer", "application/json", { "a" => 7 }, '{"a":7}'
24
- it_behaves_like "a serializer",
25
- "application/x-ruby-marshal",
26
- { a: 3 },
27
- Marshal.dump({ a: 3 })
28
-
29
- described_class::YAML_MIME_TYPES.each do |mime_type|
30
- it_behaves_like "a serializer",
31
- mime_type,
32
- { "a" => 7 },
33
- YAML.dump({ "a" => 7 })
34
- end
35
-
36
- %w[ serialize deserialize ].each do |meth|
37
- describe ".#{meth}" do
38
- it 'raises an IOError when given an unrecognized content type' do
39
- expect {
40
- described_class.send(meth, "application/unrecognized", "string")
41
- }.to raise_error(IOError)
42
- end
43
- end
44
- end
45
-
46
- describe "plain text serializer" do
47
- it 'calls #to_s to convert the object to a string' do
48
- expect(described_class.serialize('text/plain', :a_string)).
49
- to eq('a_string')
50
- end
51
- end
52
-
53
- describe "JSON serializer" do
54
- it "respects the max nesting option" do
55
- # Sadly, this spec will not fail for me when using yajl-ruby
56
- # on Ruby 1.9, even when passing the options to #to_json is
57
- # not implemented.
58
- Riak.json_options = {:max_nesting => 51}
59
- h = {}
60
- p = h
61
- (1..50).each do |i|
62
- p['a'] = {}
63
- p = p['a']
64
- end
65
- s = h.to_json(Riak.json_options)
66
- expect {
67
- described_class.serialize('application/json', h)
68
- }.to_not raise_error
69
-
70
- expect {
71
- described_class.deserialize('application/json', s)
72
- }.to_not raise_error
73
- end
74
- end
75
-
76
- describe "a custom serializer" do
77
- let(:custom_serializer) do
78
- Object.new.tap do |o|
79
- def o.dump(string)
80
- "The string is: #{string}"
81
- end
82
-
83
- def o.load(string)
84
- string.sub(/^The string is: /, '')
85
- end
86
- end
87
- end
88
-
89
- it 'can be registered' do
90
- described_class['application/custom-type-1'] = custom_serializer
91
- expect(described_class['application/custom-type-1']).
92
- to be(custom_serializer)
93
- # fail
94
- end
95
-
96
- it_behaves_like "a serializer",
97
- "application/custom-type-a",
98
- "foo",
99
- "The string is: foo" do
100
- before(:each) do
101
- described_class['application/custom-type-a'] = custom_serializer
102
- end
103
- end
104
-
105
- after(:each) do
106
- # Make sure to clean up the registered serializer
107
- %w{application/custom-type-1 application/custom-type-a}.each do |ctype|
108
- described_class.send(:serializers).delete(ctype)
109
- end
110
- end
111
- end
112
-
113
- it_behaves_like "a serializer",
114
- "application/json; charset=UTF-8",
115
- { "a" => 7 },
116
- '{"a":7}'
117
- it_behaves_like "a serializer",
118
- "application/json ;charset=UTF-8",
119
- { "a" => 7 },
120
- '{"a":7}'
121
- end
@@ -1,54 +0,0 @@
1
- require 'spec_helper'
2
- require 'riak/stamp'
3
-
4
- describe Riak::Stamp, test_client: true, integration: true do
5
- subject { described_class.new test_client }
6
- it "generates always increasing integer identifiers" do
7
- 1000.times do
8
- one = subject.next
9
- two = subject.next
10
- expect([one, two]).to be_all {|i| Integer === i }
11
- expect(two).to be > one
12
- end
13
- end
14
-
15
- it "delays until the next millisecond when the sequence overflows" do
16
- old = subject.instance_variable_get(:@timestamp) + 0
17
- subject.instance_variable_set(:@sequence, described_class::SEQUENCE_MASK)
18
- count = 0
19
- # Simulate the time_gen method returning the same thing multiple times
20
- allow(subject).to receive(:time_gen) do
21
- count += 1
22
- if count < 10
23
- old
24
- else
25
- old + 1
26
- end
27
- end
28
- expect((subject.next >> described_class::TIMESTAMP_SHIFT) & described_class::TIMESTAMP_MASK).to eq(old + 1)
29
- end
30
-
31
- it "raises an exception when the system clock moves backwards" do
32
- old = subject.instance_variable_get(:@timestamp)
33
- expect(subject).to receive(:time_gen).and_return(old - 10)
34
- expect {
35
- subject.next
36
- }.to raise_error(Riak::BackwardsClockError)
37
- end
38
-
39
- # The client/worker ID should be used for disambiguation, not for
40
- # primary ordering. This breaks from the Snowflake model where the
41
- # worker ID is in more significant bits.
42
- it "uses the client ID as the bottom component of the identifier" do
43
- expect(subject.next & described_class::CLIENT_ID_MASK).to eq(subject.client.client_id.hash & described_class::CLIENT_ID_MASK)
44
- end
45
-
46
- context "using a non-integer client ID" do
47
- subject { described_class.new(Riak::Client.new(:client_id => "ripple")) }
48
- let(:hash) { "ripple".hash }
49
-
50
- it "uses the hash of the client ID as the bottom component of the identifier" do
51
- expect(subject.next & described_class::CLIENT_ID_MASK).to eq(subject.client.client_id.hash & described_class::CLIENT_ID_MASK)
52
- end
53
- end
54
- end
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Riak::TimeSeries::Deletion do
4
- subject{ described_class.new client, table_name }
5
- let(:table_name){ 'GeoCheckin' }
6
- let(:client){ instance_double('Riak::Client') }
7
- let(:key){ double 'key' }
8
- let(:backend) do
9
- instance_double('Riak::Client::BeefcakeProtobuffsBackend').tap do |be|
10
- allow(client).to receive(:backend).and_yield be
11
- end
12
- end
13
- let(:operator) do
14
- Riak::Client::BeefcakeProtobuffsBackend.configured?
15
- instance_double(
16
- 'Riak::Client::BeefcakeProtobuffsBackend::TimeSeriesDeleteOperator'
17
- ).tap do |op|
18
- allow(backend).to receive(:time_series_delete_operator).
19
- and_return(op)
20
- end
21
- end
22
-
23
- it 'initializes with client and table name' do
24
- expect{ described_class.new client, table_name }.to_not raise_error
25
- expect{ described_class.new client }.to raise_error ArgumentError
26
- end
27
-
28
- it 'passes keys to delete to a delete operator' do
29
- expect{ subject.key = key }.to_not raise_error
30
- expect(operator).to receive(:delete).with(table_name, key, Hash.new)
31
- expect{ subject.delete! }.to_not raise_error
32
- end
33
- end
@@ -1,51 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Riak::TimeSeries::List do
4
- subject { described_class.new client, table_name }
5
- let(:table_name){ 'GeoCheckin' }
6
- let(:client){ instance_double('Riak::Client') }
7
- let(:key){ double 'key' }
8
- let(:backend) do
9
- instance_double('Riak::Client::BeefcakeProtobuffsBackend').tap do |be|
10
- allow(client).to receive(:backend).and_yield be
11
- allow(client).to receive(:convert_timestamp).and_return(true)
12
- end
13
- end
14
- let(:operator) do
15
- Riak::Client::BeefcakeProtobuffsBackend.configured?
16
- instance_double(
17
- 'Riak::Client::BeefcakeProtobuffsBackend::TimeSeriesListOperator'
18
- ).tap do |op|
19
- allow(backend).to receive(:time_series_list_operator).
20
- and_return(op)
21
- end
22
- end
23
-
24
- let(:list_results) do
25
- Riak::TimeSeries::Collection.new.tap do |buf|
26
- %w{family series timestamp}
27
- end
28
- end
29
-
30
- it 'initializes with client and table name' do
31
- expect{ described_class.new client, table_name }.to_not raise_error
32
- expect{ described_class.new client }.to raise_error ArgumentError
33
- end
34
-
35
- it 'passes a block to the operator' do
36
- streamer = proc { double 'block contents' }
37
-
38
- expect(operator).to receive(:list).with(table_name, streamer, timeout: nil)
39
-
40
- subject.issue! &streamer
41
- end
42
-
43
- it 'returns a list of results' do
44
- expect(operator).to receive(:list).
45
- with(table_name, nil, timeout: nil).
46
- and_return(list_results)
47
-
48
- expect(subject.issue!).to eq list_results
49
- expect(subject.results).to eq list_results
50
- end
51
- end