Commit 6987ec29 authored by Lin Jen-Shin's avatar Lin Jen-Shin

For empty merge_request_diff st_commits would be nil

Closes #22438
parent 73b4eecd
...@@ -120,8 +120,10 @@ class MergeRequestDiff < ActiveRecord::Base ...@@ -120,8 +120,10 @@ class MergeRequestDiff < ActiveRecord::Base
def commits_sha def commits_sha
if @commits if @commits
commits.map(&:sha) commits.map(&:sha)
else elsif st_commits
st_commits.map { |commit| commit[:id] } st_commits.map { |commit| commit[:id] }
else
[]
end end
end end
......
...@@ -517,7 +517,7 @@ describe MergeRequest, models: true do ...@@ -517,7 +517,7 @@ describe MergeRequest, models: true do
context 'with multiple irrelevant merge_request_diffs' do context 'with multiple irrelevant merge_request_diffs' do
before do before do
subject.update(target_branch: 'markdown') subject.update(target_branch: 'v1.0.0')
end end
it_behaves_like 'returning pipelines with proper ordering' it_behaves_like 'returning pipelines with proper ordering'
...@@ -544,16 +544,31 @@ describe MergeRequest, models: true do ...@@ -544,16 +544,31 @@ describe MergeRequest, models: true do
subject.merge_request_diffs.flat_map(&:commits).map(&:sha).uniq subject.merge_request_diffs.flat_map(&:commits).map(&:sha).uniq
end end
before do shared_examples 'returning all SHA' do
subject.update(target_branch: 'markdown')
end
it 'returns all SHA from all merge_request_diffs' do it 'returns all SHA from all merge_request_diffs' do
expect(subject.merge_request_diffs.size).to eq(2) expect(subject.merge_request_diffs.size).to eq(2)
expect(subject.all_commits_sha).to eq(all_commits_sha) expect(subject.all_commits_sha).to eq(all_commits_sha)
end end
end end
context 'with a completely different branch' do
before do
subject.update(target_branch: 'v1.0.0')
end
it_behaves_like 'returning all SHA'
end
context 'with a branch having no difference' do
before do
subject.update(target_branch: 'v1.1.0')
subject.reload # make sure commits were not cached
end
it_behaves_like 'returning all SHA'
end
end
describe '#participants' do describe '#participants' do
let(:project) { create(:project, :public) } let(:project) { create(:project, :public) }
......
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