diff options
Diffstat (limited to 'spec/services/projects/lsif_data_service_spec.rb')
-rw-r--r-- | spec/services/projects/lsif_data_service_spec.rb | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/spec/services/projects/lsif_data_service_spec.rb b/spec/services/projects/lsif_data_service_spec.rb deleted file mode 100644 index 4866f848121..00000000000 --- a/spec/services/projects/lsif_data_service_spec.rb +++ /dev/null @@ -1,126 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -describe Projects::LsifDataService do - let(:artifact) { create(:ci_job_artifact, :lsif) } - let(:project) { build_stubbed(:project) } - let(:path) { 'main.go' } - let(:commit_id) { Digest::SHA1.hexdigest(SecureRandom.hex) } - - let(:service) { described_class.new(artifact.file, project, commit_id) } - - describe '#execute' do - def highlighted_value(value) - [{ language: 'go', value: Gitlab::Highlight.highlight(nil, value, language: 'go') }] - end - - context 'fetched lsif file', :use_clean_rails_memory_store_caching do - it 'is cached' do - service.execute(path) - - cached_data = Rails.cache.fetch("project:#{project.id}:lsif:#{commit_id}") - - expect(cached_data.keys).to eq(%w[def_refs doc_ranges docs hover_refs ranges]) - end - end - - context 'for main.go' do - let(:path_prefix) { "/#{project.full_path}/-/blob/#{commit_id}" } - - it 'returns lsif ranges for the file' do - expect(service.execute(path)).to eq([ - { - end_char: 9, - end_line: 6, - start_char: 5, - start_line: 6, - definition_url: "#{path_prefix}/main.go#L7", - hover: highlighted_value('func main()') - }, - { - end_char: 36, - end_line: 3, - start_char: 1, - start_line: 3, - definition_url: "#{path_prefix}/main.go#L4", - hover: highlighted_value('package "github.com/user/hello/morestrings" ("github.com/user/hello/morestrings")') - }, - { - end_char: 12, - end_line: 7, - start_char: 1, - start_line: 7, - definition_url: "#{path_prefix}/main.go#L4", - hover: highlighted_value('package "github.com/user/hello/morestrings" ("github.com/user/hello/morestrings")') - }, - { - end_char: 20, - end_line: 7, - start_char: 13, - start_line: 7, - definition_url: "#{path_prefix}/morestrings/reverse.go#L11", - hover: highlighted_value('func Reverse(s string) string') + [{ value: "This method reverses a string \n\n" }] - }, - { - end_char: 12, - end_line: 8, - start_char: 1, - start_line: 8, - definition_url: "#{path_prefix}/main.go#L4", - hover: highlighted_value('package "github.com/user/hello/morestrings" ("github.com/user/hello/morestrings")') - }, - { - end_char: 18, - end_line: 8, - start_char: 13, - start_line: 8, - definition_url: "#{path_prefix}/morestrings/reverse.go#L5", - hover: highlighted_value('func Func2(i int) string') - } - ]) - end - end - - context 'for morestring/reverse.go' do - let(:path) { 'morestrings/reverse.go' } - - it 'returns lsif ranges for the file' do - expect(service.execute(path).first).to eq({ - end_char: 2, - end_line: 11, - start_char: 1, - start_line: 11, - definition_url: "/#{project.full_path}/-/blob/#{commit_id}/morestrings/reverse.go#L12", - hover: highlighted_value('var a string') - }) - end - end - - context 'for an unknown file' do - let(:path) { 'unknown.go' } - - it 'returns nil' do - expect(service.execute(path)).to eq(nil) - end - end - end - - describe '#doc_id' do - context 'when the passed path matches multiple files' do - let(:path) { 'check/main.go' } - let(:docs) do - { - 1 => 'cmd/check/main.go', - 2 => 'cmd/command.go', - 3 => 'check/main.go', - 4 => 'cmd/nested/check/main.go' - } - end - - it 'fetches the document with the shortest absolute path' do - expect(service.__send__(:find_doc_id, docs, path)).to eq(3) - end - end - end -end |