diff options
author | lulalala <mark@goodlife.tw> | 2018-05-09 17:43:47 +0800 |
---|---|---|
committer | Mark Chao <mchao@gitlab.com> | 2018-05-17 08:54:47 +0800 |
commit | 179a1ee7c669e758f8dc9fb5e9c8f2563012a6e1 (patch) | |
tree | 182a00cf5802bacc8bee05f51a46424e0925fdd4 | |
parent | 7517105303c264484d8677c81268f9f43ecc5593 (diff) | |
download | gitlab-ce-179a1ee7c669e758f8dc9fb5e9c8f2563012a6e1.tar.gz |
Add MergeRequest#merge_participants
For notifying via todo or email.
-rw-r--r-- | app/models/merge_request.rb | 10 | ||||
-rw-r--r-- | spec/models/merge_request_spec.rb | 35 |
2 files changed, 45 insertions, 0 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index ea5057c2a78..dd4daf3711b 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -333,6 +333,16 @@ class MergeRequest < ActiveRecord::Base update_column(:merge_jid, jid) end + def merge_participants + participants = [author] + + if merge_when_pipeline_succeeds? && !participants.include?(merge_user) + participants << merge_user + end + + participants + end + def first_commit merge_request_diff ? merge_request_diff.first_commit : compare_commits.first end diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index bcc836acefa..d1cc57fd103 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -2242,4 +2242,39 @@ describe MergeRequest do expect(merge_request.can_allow_maintainer_to_push?(user)).to be_truthy end end + + describe '#merge_participants' do + it 'contains author' do + expect(subject.merge_participants).to eq([subject.author]) + end + + describe 'when merge_when_pipeline_succeeds? is true' do + describe 'when merge user is author' do + let(:user) { create(:user) } + subject do + create(:merge_request, + merge_when_pipeline_succeeds: true, + merge_user: user, + author: user) + end + + it 'contains author only' do + expect(subject.merge_participants).to eq([subject.author]) + end + end + + describe 'when merge user and author are different users' do + let(:merge_user) { create(:user) } + subject do + create(:merge_request, + merge_when_pipeline_succeeds: true, + merge_user: merge_user) + end + + it 'contains author and merge user' do + expect(subject.merge_participants).to eq([subject.author, merge_user]) + end + end + end + end end |