diff options
author | Douwe Maan <douwe@gitlab.com> | 2016-03-18 22:07:03 +0300 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-03-18 23:22:41 +0300 |
commit | 17418461ba54fc5e668b888c19194d3d112ccd32 (patch) | |
tree | 576ff0ef990218be38f2761fc111de21f314db15 /spec | |
parent | 5b82e15bbc4b4c4d0c9e7c2597b368d369c13a60 (diff) |
Merge branch 'fix/14388' into 'master'
Fix an issue when the target branch of a MR had been deleted
Before displaying the "diverged commits" note, we're checking if the MR
is open, but we should check if it's mergeable instead because this
check ensure the source and target branches exist.
This was introduced by !2217 and fixes #14388.
See merge request !3294
Diffstat (limited to 'spec')
-rw-r--r-- | spec/models/merge_request_spec.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index 654c71b6825..2165cfb7a32 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -86,6 +86,16 @@ describe MergeRequest, models: true do end end + describe '#target_sha' do + context 'when the target branch does not exist anymore' do + subject { create(:merge_request).tap { |mr| mr.update_attribute(:target_branch, 'deleted') } } + + it 'returns nil' do + expect(subject.target_sha).to be_nil + end + end + end + describe '#source_sha' do let(:last_branch_commit) { subject.source_project.repository.commit(subject.source_branch) } @@ -310,6 +320,18 @@ describe MergeRequest, models: true do let(:project) { create(:project) } let(:fork_project) { create(:project, forked_from_project: project) } + context 'when the target branch does not exist anymore' do + subject { create(:merge_request).tap { |mr| mr.update_attribute(:target_branch, 'deleted') } } + + it 'does not crash' do + expect{ subject.diverged_commits_count }.not_to raise_error + end + + it 'returns 0' do + expect(subject.diverged_commits_count).to eq(0) + end + end + context 'diverged on same repository' do subject(:merge_request_with_divergence) { create(:merge_request, :diverged, source_project: project, target_project: project) } |