@@ -226,29 +226,52 @@ def project_manager.possible_definitions(_uri, _position)
226226 end
227227
228228 describe '#on_textDocument_completion' do
229+ let ( :completion_test_file ) do
230+ <<~CODE_FILE
231+ class CompletionTest
232+ def method_one
233+ @instance_var = 1
234+ end
235+
236+ def method_two
237+ met
238+ end
239+ end
240+ CODE_FILE
241+ end
242+
229243 before do
230244 params = {
231245 'rootPath' => '/test/project' ,
232246 'rootUri' => 'file:///test/project'
233247 }
234248 server . on_initialize ( params )
249+
250+ project_manager = server . instance_variable_get ( :@project_manager )
251+ project_manager . update_document_content ( 'file:///test.rb' , completion_test_file )
235252 end
236253
237254 it 'returns completions at position' do
238255 params = {
239256 'textDocument' => { 'uri' => 'file:///test.rb' } ,
240- 'position' => { 'line' => 3 , 'character' => 5 }
257+ 'position' => { 'line' => 6 , 'character' => 7 }
241258 }
242259
243- project_manager = server . instance_variable_get ( :@project_manager )
244- def project_manager . completion_at ( _uri , _position )
245- [ { label : 'method_name' , kind : 2 } ]
246- end
247-
248260 result = server . on_textDocument_completion ( params )
249261
250262 refute_nil ( result )
251- assert_equal [ { label : 'method_name' , kind : 2 } ] , result
263+ assert_instance_of Hash , result
264+ assert result . key? ( :items )
265+ assert_instance_of Array , result [ :items ]
266+
267+ # Should find completions starting with "met"
268+ method_completions = result [ :items ] . select { |item | item [ :label ] . start_with? ( 'met' ) }
269+ refute_empty method_completions
270+
271+ # Should include method_one and method_two
272+ labels = method_completions . map { |item | item [ :label ] }
273+ assert_includes labels , 'method_one'
274+ assert_includes labels , 'method_two'
252275 end
253276 end
254277
0 commit comments