2016-01-29 22:53:50 +05:30
require 'spec_helper'
describe Gitlab :: Diff :: Highlight , lib : true do
include RepoHelpers
let ( :project ) { create ( :project ) }
let ( :commit ) { project . commit ( sample_commit . id ) }
let ( :diff ) { commit . diffs . first }
let ( :diff_file ) { Gitlab :: Diff :: File . new ( diff , [ commit . parent , commit ] ) }
describe '#highlight' do
2016-04-02 18:10:28 +05:30
context " with a diff file " do
let ( :subject ) { Gitlab :: Diff :: Highlight . new ( diff_file ) . highlight }
2016-01-29 22:53:50 +05:30
2016-04-02 18:10:28 +05:30
it 'should return Gitlab::Diff::Line elements' do
expect ( subject . first ) . to be_an_instance_of ( Gitlab :: Diff :: Line )
end
2016-01-29 22:53:50 +05:30
2016-04-02 18:10:28 +05:30
it 'should not modify "match" lines' do
expect ( subject [ 0 ] . text ) . to eq ( '@@ -6,12 +6,18 @@ module Popen' )
expect ( subject [ 22 ] . text ) . to eq ( '@@ -19,6 +25,7 @@ module Popen' )
end
2016-01-29 22:53:50 +05:30
2016-04-02 18:10:28 +05:30
it 'highlights and marks unchanged lines' do
code = %Q{ <span id="LC7" class="line"> <span class="k">def</span> <span class="nf">popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="kp">nil</span><span class="p">)</span></span> \n }
2016-01-29 22:53:50 +05:30
2016-04-02 18:10:28 +05:30
expect ( subject [ 2 ] . text ) . to eq ( code )
end
2016-01-29 22:53:50 +05:30
2016-04-02 18:10:28 +05:30
it 'highlights and marks removed lines' do
code = %Q{ -<span id="LC9" class="line"> <span class="k">raise</span> <span class="s2">"System commands must be given as an array of strings"</span></span> \n }
2016-01-29 22:53:50 +05:30
2016-04-02 18:10:28 +05:30
expect ( subject [ 4 ] . text ) . to eq ( code )
end
it 'highlights and marks added lines' do
code = %Q{ +<span id="LC9" class="line"> <span class="k">raise</span> <span class="no"><span class='idiff left'>RuntimeError</span></span><span class="p"><span class='idiff'>,</span></span><span class='idiff right'> </span><span class="s2">"System commands must be given as an array of strings"</span></span> \n }
expect ( subject [ 5 ] . text ) . to eq ( code )
end
2016-01-29 22:53:50 +05:30
end
2016-04-02 18:10:28 +05:30
context " with diff lines " do
let ( :subject ) { Gitlab :: Diff :: Highlight . new ( diff_file . diff_lines ) . highlight }
it 'should return Gitlab::Diff::Line elements' do
expect ( subject . first ) . to be_an_instance_of ( Gitlab :: Diff :: Line )
end
it 'should not modify "match" lines' do
expect ( subject [ 0 ] . text ) . to eq ( '@@ -6,12 +6,18 @@ module Popen' )
expect ( subject [ 22 ] . text ) . to eq ( '@@ -19,6 +25,7 @@ module Popen' )
end
it 'marks unchanged lines' do
code = %Q{ def popen(cmd, path=nil) }
expect ( subject [ 2 ] . text ) . to eq ( code )
expect ( subject [ 2 ] . text ) . not_to be_html_safe
end
it 'marks removed lines' do
code = %Q{ - raise "System commands must be given as an array of strings" }
expect ( subject [ 4 ] . text ) . to eq ( code )
expect ( subject [ 4 ] . text ) . not_to be_html_safe
end
it 'marks added lines' do
code = %Q{ + raise <span class='idiff left right'>RuntimeError, </span>"System commands must be given as an array of strings" }
2016-01-29 22:53:50 +05:30
2016-04-02 18:10:28 +05:30
expect ( subject [ 5 ] . text ) . to eq ( code )
expect ( subject [ 5 ] . text ) . to be_html_safe
end
2016-01-29 22:53:50 +05:30
end
end
end