|
1 | 1 | require 'spec_helper' |
2 | 2 |
|
3 | 3 | describe 'PuppetLanguageServer::LanguageClient' do |
| 4 | + let(:json_rpc_handler) { MockJSONRPCHandler.new } |
| 5 | + let(:message_router) { MockMessageRouter.new.tap { |i| i.json_rpc_handler = json_rpc_handler } } |
4 | 6 | let(:subject_options) {} |
5 | | - let(:subject) { PuppetLanguageServer::LanguageClient.new } |
| 7 | + let(:subject) { PuppetLanguageServer::LanguageClient.new(message_router) } |
6 | 8 | let(:initialize_params) do |
7 | 9 | # Example capabilities from VS Code |
8 | 10 | { |
|
139 | 141 | } |
140 | 142 | } |
141 | 143 | end |
142 | | - let(:json_rpc_handler) { MockJSONRPCHandler.new } |
143 | | - let(:message_router) { MockMessageRouter.new.tap { |i| i.json_rpc_handler = json_rpc_handler } } |
144 | 144 |
|
145 | 145 | before(:each) do |
146 | 146 | allow(PuppetLanguageServer).to receive(:log_message) |
|
167 | 167 | describe '#send_configuration_request' do |
168 | 168 | it 'should send a client request and return true' do |
169 | 169 | expect(json_rpc_handler).to receive(:send_client_request).with('workspace/configuration', Object) |
170 | | - expect(subject.send_configuration_request(message_router)).to eq(true) |
| 170 | + expect(subject.send_configuration_request).to eq(true) |
171 | 171 | end |
172 | 172 |
|
173 | 173 | it 'should include the puppet settings' do |
174 | | - subject.send_configuration_request(message_router) |
| 174 | + subject.send_configuration_request |
175 | 175 | expect(json_rpc_handler.connection.buffer).to include('{"section":"puppet"}') |
176 | 176 | end |
177 | 177 | end |
|
207 | 207 | # Should start out not registered |
208 | 208 | expect(subject.capability_registrations(method_name)).to eq([{:registered => false, :state => :complete}]) |
209 | 209 | # Send as registration request |
210 | | - subject.register_capability(message_router, method_name, method_options) |
| 210 | + subject.register_capability(method_name, method_options) |
211 | 211 | # Should show as in progress |
212 | 212 | expect(subject.capability_registrations(method_name)).to eq([{:registered => false, :state => :pending, :id => request_id}]) |
213 | 213 | # Mock a valid response |
214 | 214 | response = { 'jsonrpc'=>'2.0', 'id'=> 0, 'result' => nil } |
215 | 215 | original_request = { 'jsonrpc'=>'2.0', 'id' => 0, 'method' => req_method_name, 'params' => req_method_params } |
216 | | - subject.parse_register_capability_response!(message_router, response, original_request) |
| 216 | + subject.parse_register_capability_response!(response, original_request) |
217 | 217 | # Should show registered |
218 | 218 | expect(subject.capability_registrations(method_name)).to eq([{:registered => true, :state => :complete, :id => request_id}]) |
219 | 219 | end |
|
232 | 232 | # Should start out not registered |
233 | 233 | expect(subject.capability_registrations(method_name)).to eq([{:registered => false, :state => :complete}]) |
234 | 234 | # Send as registration request |
235 | | - subject.register_capability(message_router, method_name, method_options) |
| 235 | + subject.register_capability(method_name, method_options) |
236 | 236 | # Should show as in progress |
237 | 237 | expect(subject.capability_registrations(method_name)).to eq([{:registered => false, :state => :pending, :id => request_id}]) |
238 | 238 | # Mock an error response |
239 | 239 | response = { 'jsonrpc'=>'2.0', 'id'=> 0, 'error' => { 'code' => -1, 'message' => 'mock message' } } |
240 | 240 | original_request = { 'jsonrpc'=>'2.0', 'id' => 0, 'method' => req_method_name, 'params' => req_method_params } |
241 | | - subject.parse_register_capability_response!(message_router, response, original_request) |
| 241 | + subject.parse_register_capability_response!(response, original_request) |
242 | 242 | # Should show registered |
243 | 243 | expect(subject.capability_registrations(method_name)).to eq([{:registered => false, :state => :complete, :id => request_id}]) |
244 | 244 | end |
|
258 | 258 | # Should start out not registered |
259 | 259 | expect(subject.capability_registrations(method_name)).to eq([{:registered => false, :state => :complete}]) |
260 | 260 | # Send as registration request |
261 | | - subject.register_capability(message_router, method_name, method_options) |
| 261 | + subject.register_capability(method_name, method_options) |
262 | 262 | # Mock a valid response |
263 | 263 | response = { 'jsonrpc'=>'2.0', 'id'=> 0, 'result' => nil } |
264 | 264 | original_request = { 'jsonrpc'=>'2.0', 'id' => 0, 'method' => req_method_name, 'params' => req_method_params } |
265 | | - subject.parse_register_capability_response!(message_router, response, original_request) |
| 265 | + subject.parse_register_capability_response!(response, original_request) |
266 | 266 | # Should show registered |
267 | 267 | expect(subject.capability_registrations(method_name)).to eq([{:registered => true, :state => :complete, :id => request_id}]) |
268 | 268 | # Send another registration request |
269 | | - subject.register_capability(message_router, method_name, method_options) |
| 269 | + subject.register_capability(method_name, method_options) |
270 | 270 | # Should show as in progress |
271 | 271 | expect(subject.capability_registrations(method_name)).to eq([ |
272 | 272 | {:registered => true, :state => :complete, :id => request_id}, |
|
275 | 275 | # Mock an error response |
276 | 276 | response = { 'jsonrpc'=>'2.0', 'id'=> 0, 'error' => { 'code' => -1, 'message' => 'mock message' } } |
277 | 277 | original_request = { 'jsonrpc'=>'2.0', 'id' => 0, 'method' => req_method_name, 'params' => req_method_params } |
278 | | - subject.parse_register_capability_response!(message_router, response, original_request) |
| 278 | + subject.parse_register_capability_response!(response, original_request) |
279 | 279 | # Should still show registered |
280 | 280 | expect(subject.capability_registrations(method_name)).to eq([ |
281 | 281 | {:registered => true, :state => :complete, :id => request_id}, |
|
290 | 290 |
|
291 | 291 | it 'should send a client request and return true' do |
292 | 292 | expect(json_rpc_handler).to receive(:send_client_request).with('client/registerCapability', Object) |
293 | | - expect(subject.register_capability(message_router, method_name, method_options)).to eq(true) |
| 293 | + expect(subject.register_capability(method_name, method_options)).to eq(true) |
294 | 294 | end |
295 | 295 |
|
296 | 296 | it 'should include the method to register' do |
297 | | - subject.register_capability(message_router, method_name, method_options) |
| 297 | + subject.register_capability(method_name, method_options) |
298 | 298 | expect(json_rpc_handler.connection.buffer).to include("\"method\":\"#{method_name}\"") |
299 | 299 | end |
300 | 300 |
|
301 | 301 | it 'should include the parameters to register' do |
302 | | - subject.register_capability(message_router, method_name, method_options) |
| 302 | + subject.register_capability(method_name, method_options) |
303 | 303 | expect(json_rpc_handler.connection.buffer).to include('"registerOptions":{}') |
304 | 304 | end |
305 | 305 |
|
306 | 306 | it 'should log a message if a registration is already in progress' do |
307 | 307 | allow(json_rpc_handler).to receive(:send_client_request) |
308 | 308 | expect(PuppetLanguageServer).to receive(:log_message).with(:warn, /#{method_name}/) |
309 | 309 |
|
310 | | - subject.register_capability(message_router, method_name, method_options) |
311 | | - subject.register_capability(message_router, method_name, method_options) |
| 310 | + subject.register_capability(method_name, method_options) |
| 311 | + subject.register_capability(method_name, method_options) |
312 | 312 | end |
313 | 313 |
|
314 | 314 | it 'should not log a message if a previous registration completed' do |
|
321 | 321 | end |
322 | 322 | expect(PuppetLanguageServer).to_not receive(:log_message).with(:warn, /#{method_name}/) |
323 | 323 | # Send as registration request |
324 | | - subject.register_capability(message_router, method_name, method_options) |
| 324 | + subject.register_capability(method_name, method_options) |
325 | 325 | # Mock a valid response |
326 | 326 | response = { 'jsonrpc'=>'2.0', 'id'=> 0, 'result' => nil } |
327 | 327 | original_request = { 'jsonrpc'=>'2.0', 'id' => 0, 'method' => method_name, 'params' => method_params } |
328 | | - subject.parse_register_capability_response!(message_router, response, original_request) |
| 328 | + subject.parse_register_capability_response!(response, original_request) |
329 | 329 |
|
330 | | - subject.register_capability(message_router, method_name, method_options) |
| 330 | + subject.register_capability(method_name, method_options) |
331 | 331 | end |
332 | 332 | end |
333 | 333 |
|
|
342 | 342 | let(:request_params) { {} } |
343 | 343 |
|
344 | 344 | it 'should raise an error if the original request was not a registration' do |
345 | | - expect{ subject.parse_register_capability_response!(message_router, response, original_request) }.to raise_error(/client\/registerCapability/) |
| 345 | + expect{ subject.parse_register_capability_response!(response, original_request) }.to raise_error(/client\/registerCapability/) |
346 | 346 | end |
347 | 347 | end |
348 | 348 |
|
|
355 | 355 | end |
356 | 356 |
|
357 | 357 | it 'should send a configuration request' do |
358 | | - expect(subject).to receive(:send_configuration_request).with(message_router) |
359 | | - subject.parse_register_capability_response!(message_router, response, original_request) |
| 358 | + expect(subject).to receive(:send_configuration_request) |
| 359 | + subject.parse_register_capability_response!(response, original_request) |
360 | 360 | end |
361 | 361 | end |
362 | 362 |
|
|
377 | 377 | it 'should not log the registration' do |
378 | 378 | expect(PuppetLanguageServer).to_not receive(:log_message).with(:info, /validMethod/) |
379 | 379 |
|
380 | | - subject.parse_register_capability_response!(message_router, response, original_request) |
| 380 | + subject.parse_register_capability_response!(response, original_request) |
381 | 381 | end |
382 | 382 | end |
383 | 383 |
|
384 | 384 | context 'that succeeded' do |
385 | 385 | it 'should log the registration' do |
386 | 386 | expect(PuppetLanguageServer).to receive(:log_message).with(:info, /validMethod/) |
387 | 387 |
|
388 | | - subject.parse_register_capability_response!(message_router, response, original_request) |
| 388 | + subject.parse_register_capability_response!(response, original_request) |
389 | 389 | end |
390 | 390 | end |
391 | 391 | end |
|
0 commit comments