summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlulalala <mark@goodlife.tw>2018-05-09 17:43:47 +0800
committerMark Chao <mchao@gitlab.com>2018-05-17 08:54:47 +0800
commit179a1ee7c669e758f8dc9fb5e9c8f2563012a6e1 (patch)
tree182a00cf5802bacc8bee05f51a46424e0925fdd4
parent7517105303c264484d8677c81268f9f43ecc5593 (diff)
downloadgitlab-ce-179a1ee7c669e758f8dc9fb5e9c8f2563012a6e1.tar.gz
Add MergeRequest#merge_participants
For notifying via todo or email.
-rw-r--r--app/models/merge_request.rb10
-rw-r--r--spec/models/merge_request_spec.rb35
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