Commit 1ee101fc authored by Sean McGivern's avatar Sean McGivern

Resolve CE/EE differences in MergeRequestPresenter spec

The rebase_path specs were duplicated in the same file.
parent eaba1acc
require 'spec_helper' require 'spec_helper'
describe MergeRequestPresenter do describe MergeRequestPresenter do
let(:resource) { create :merge_request, source_project: project } let(:resource) { create(:merge_request, source_project: project) }
let(:project) { create(:project, :repository) } let(:project) { create(:project) }
let(:user) { create(:user) } let(:user) { create(:user) }
describe '#ci_status' do describe '#ci_status' do
...@@ -416,45 +416,48 @@ describe MergeRequestPresenter do ...@@ -416,45 +416,48 @@ describe MergeRequestPresenter do
end end
end end
describe '#can_push_to_source_branch' do describe '#target_branch_path' do
before do
allow(resource).to receive(:source_branch_exists?) { source_branch_exists }
allow_any_instance_of(Gitlab::UserAccess::RequestCacheExtension)
.to receive(:can_push_to_branch?)
.with(resource.source_branch)
.and_return(can_push_to_branch)
end
subject do subject do
described_class.new(resource, current_user: user).can_push_to_source_branch? described_class.new(resource, current_user: user).target_branch_path
end end
context 'when source branch exists AND user can push to source branch' do context 'when target branch exists' do
let(:source_branch_exists) { true } it 'returns path' do
let(:can_push_to_branch) { true } allow(resource).to receive(:target_branch_exists?) { true }
it 'returns true' do is_expected
is_expected.to eq(true) .to eq("/#{resource.source_project.full_path}/branches/#{resource.target_branch}")
end end
end end
context 'when source branch does not exists' do context 'when target branch does not exist' do
let(:source_branch_exists) { false } it 'returns nil' do
let(:can_push_to_branch) { true } allow(resource).to receive(:target_branch_exists?) { false }
it 'returns false' do is_expected.to be_nil
is_expected.to eq(false) end
end end
end end
context 'when user cannot push to source branch' do describe '#source_branch_with_namespace_link' do
let(:source_branch_exists) { true } subject do
let(:can_push_to_branch) { false } described_class.new(resource, current_user: user).source_branch_with_namespace_link
end
it 'returns false' do it 'returns link' do
is_expected.to eq(false) allow(resource).to receive(:source_branch_exists?) { true }
is_expected
.to eq("<a href=\"/#{resource.source_project.full_path}/tree/#{resource.source_branch}\">#{resource.source_branch}</a>")
end end
it 'escapes html, when source_branch does not exist' do
xss_attempt = "<img src='x' onerror=alert('bad stuff') />"
allow(resource).to receive(:source_branch) { xss_attempt }
allow(resource).to receive(:source_branch_exists?) { false }
is_expected.to eq(ERB::Util.html_escape(xss_attempt))
end end
end end
...@@ -521,32 +524,9 @@ describe MergeRequestPresenter do ...@@ -521,32 +524,9 @@ describe MergeRequestPresenter do
end end
end end
describe '#source_branch_with_namespace_link' do describe '#can_push_to_source_branch' do
subject do
described_class.new(resource, current_user: user).source_branch_with_namespace_link
end
it 'returns link' do
allow(resource).to receive(:source_branch_exists?) { true }
is_expected
.to eq("<a href=\"/#{resource.source_project.full_path}/tree/#{resource.source_branch}\">#{resource.source_branch}</a>")
end
it 'escapes html, when source_branch does not exist' do
xss_attempt = "<img src='x' onerror=alert('bad stuff') />"
allow(resource).to receive(:source_branch) { xss_attempt }
allow(resource).to receive(:source_branch_exists?) { false }
is_expected.to eq(ERB::Util.html_escape(xss_attempt))
end
end
describe '#rebase_path' do
before do before do
allow(resource).to receive(:rebase_in_progress?) { rebase_in_progress } allow(resource).to receive(:source_branch_exists?) { source_branch_exists }
allow(resource).to receive(:should_be_rebased?) { should_be_rebased }
allow_any_instance_of(Gitlab::UserAccess::RequestCacheExtension) allow_any_instance_of(Gitlab::UserAccess::RequestCacheExtension)
.to receive(:can_push_to_branch?) .to receive(:can_push_to_branch?)
...@@ -555,53 +535,33 @@ describe MergeRequestPresenter do ...@@ -555,53 +535,33 @@ describe MergeRequestPresenter do
end end
subject do subject do
described_class.new(resource, current_user: user).rebase_path described_class.new(resource, current_user: user).can_push_to_source_branch?
end end
context 'when can rebase' do context 'when source branch exists AND user can push to source branch' do
let(:rebase_in_progress) { false } let(:source_branch_exists) { true }
let(:can_push_to_branch) { true } let(:can_push_to_branch) { true }
let(:should_be_rebased) { true }
before do it 'returns true' do
allow(resource).to receive(:source_branch_exists?) { true } is_expected.to eq(true)
end
it 'returns path' do
is_expected
.to eq("/#{project.full_path}/merge_requests/#{resource.iid}/rebase")
end end
end end
context 'when cannot rebase' do context 'when source branch does not exists' do
context 'when rebase in progress' do let(:source_branch_exists) { false }
let(:rebase_in_progress) { true }
let(:can_push_to_branch) { true } let(:can_push_to_branch) { true }
let(:should_be_rebased) { true }
it 'returns nil' do it 'returns false' do
is_expected.to be_nil is_expected.to eq(false)
end end
end end
context 'when user cannot merge' do context 'when user cannot push to source branch' do
let(:rebase_in_progress) { false } let(:source_branch_exists) { true }
let(:can_push_to_branch) { false } let(:can_push_to_branch) { false }
let(:should_be_rebased) { true }
it 'returns nil' do it 'returns false' do
is_expected.to be_nil is_expected.to eq(false)
end
end
context 'should not be rebased' do
let(:rebase_in_progress) { false }
let(:can_push_to_branch) { true }
let(:should_be_rebased) { false }
it 'returns nil' do
is_expected.to be_nil
end
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment