Commit 13aa6f67 authored by Mark Chao's avatar Mark Chao

Add spec

parent b1ab1609
...@@ -1245,38 +1245,50 @@ describe MergeRequest do ...@@ -1245,38 +1245,50 @@ describe MergeRequest do
describe '#check_if_can_be_merged' do describe '#check_if_can_be_merged' do
let(:project) { create(:project, only_allow_merge_if_pipeline_succeeds: true) } let(:project) { create(:project, only_allow_merge_if_pipeline_succeeds: true) }
subject { create(:merge_request, source_project: project, merge_status: :unchecked) } shared_examples 'checking if can be merged' do
context 'when it is not broken and has no conflicts' do
before do
allow(subject).to receive(:broken?) { false }
allow(project.repository).to receive(:can_be_merged?).and_return(true)
end
context 'when it is not broken and has no conflicts' do it 'is marked as mergeable' do
before do expect { subject.check_if_can_be_merged }.to change { subject.merge_status }.to('can_be_merged')
allow(subject).to receive(:broken?) { false } end
allow(project.repository).to receive(:can_be_merged?).and_return(true)
end end
it 'is marked as mergeable' do context 'when broken' do
expect { subject.check_if_can_be_merged }.to change { subject.merge_status }.to('can_be_merged') before do
end allow(subject).to receive(:broken?) { true }
end end
context 'when broken' do it 'becomes unmergeable' do
before do expect { subject.check_if_can_be_merged }.to change { subject.merge_status }.to('cannot_be_merged')
allow(subject).to receive(:broken?) { true } end
end end
it 'becomes unmergeable' do context 'when it has conflicts' do
expect { subject.check_if_can_be_merged }.to change { subject.merge_status }.to('cannot_be_merged') before do
allow(subject).to receive(:broken?) { false }
allow(project.repository).to receive(:can_be_merged?).and_return(false)
end
it 'becomes unmergeable' do
expect { subject.check_if_can_be_merged }.to change { subject.merge_status }.to('cannot_be_merged')
end
end end
end end
context 'when it has conflicts' do context 'when merge_status is unchecked' do
before do subject { create(:merge_request, source_project: project, merge_status: :unchecked) }
allow(subject).to receive(:broken?) { false }
allow(project.repository).to receive(:can_be_merged?).and_return(false)
end
it 'becomes unmergeable' do it_behaves_like 'checking if can be merged'
expect { subject.check_if_can_be_merged }.to change { subject.merge_status }.to('cannot_be_merged') end
end
context 'when merge_status is unchecked' do
subject { create(:merge_request, source_project: project, merge_status: :cannot_be_merged_recheck) }
it_behaves_like 'checking if can be merged'
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