101 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'spec_helper'
 | |
| 
 | |
| describe BlobPresenter, :seed_helper do
 | |
|   let(:repository) { Gitlab::Git::Repository.new('default', TEST_REPO_PATH, '', 'group/project') }
 | |
| 
 | |
|   let(:git_blob) do
 | |
|     Gitlab::Git::Blob.find(
 | |
|       repository,
 | |
|       'fa1b1e6c004a68b7d8763b86455da9e6b23e36d6',
 | |
|       'files/ruby/regex.rb'
 | |
|     )
 | |
|   end
 | |
|   let(:blob) { Blob.new(git_blob) }
 | |
| 
 | |
|   describe '.web_url' do
 | |
|     let(:project) { create(:project, :repository) }
 | |
|     let(:repository) { project.repository }
 | |
|     let(:blob) { Gitlab::Graphql::Representation::TreeEntry.new(repository.tree.blobs.first, repository) }
 | |
| 
 | |
|     subject { described_class.new(blob) }
 | |
| 
 | |
|     it { expect(subject.web_url).to eq("http://localhost/#{project.full_path}/blob/#{blob.commit_id}/#{blob.path}") }
 | |
|   end
 | |
| 
 | |
|   describe '#highlight' do
 | |
|     subject { described_class.new(blob) }
 | |
| 
 | |
|     it 'returns highlighted content' do
 | |
|       expect(Gitlab::Highlight)
 | |
|         .to receive(:highlight)
 | |
|         .with(
 | |
|           'files/ruby/regex.rb',
 | |
|           git_blob.data,
 | |
|           since: nil,
 | |
|           plain: nil,
 | |
|           language: nil
 | |
|         )
 | |
| 
 | |
|       subject.highlight
 | |
|     end
 | |
| 
 | |
|     it 'returns plain content when :plain is true' do
 | |
|       expect(Gitlab::Highlight)
 | |
|         .to receive(:highlight)
 | |
|         .with(
 | |
|           'files/ruby/regex.rb',
 | |
|           git_blob.data,
 | |
|           since: nil,
 | |
|           plain: true,
 | |
|           language: nil
 | |
|         )
 | |
| 
 | |
|       subject.highlight(plain: true)
 | |
|     end
 | |
| 
 | |
|     context '"since" and "to" are present' do
 | |
|       before do
 | |
|         allow(git_blob)
 | |
|           .to receive(:data)
 | |
|           .and_return("line one\nline two\nline 3\nline 4")
 | |
|       end
 | |
| 
 | |
|       it 'returns limited highlighted content' do
 | |
|         expect(Gitlab::Highlight)
 | |
|           .to receive(:highlight)
 | |
|           .with(
 | |
|             'files/ruby/regex.rb',
 | |
|             "line two\nline 3\n",
 | |
|             since: 2,
 | |
|             language: nil,
 | |
|             plain: nil
 | |
|           )
 | |
| 
 | |
|         subject.highlight(since: 2, to: 3)
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     context 'gitlab-language contains a match' do
 | |
|       before do
 | |
|         allow(blob).to receive(:language_from_gitattributes).and_return('ruby')
 | |
|       end
 | |
| 
 | |
|       it 'passes language to inner call' do
 | |
|         expect(Gitlab::Highlight)
 | |
|           .to receive(:highlight)
 | |
|           .with(
 | |
|             'files/ruby/regex.rb',
 | |
|             git_blob.data,
 | |
|             since: nil,
 | |
|             plain: nil,
 | |
|             language: 'ruby'
 | |
|           )
 | |
| 
 | |
|         subject.highlight
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |