Commit 351b39f1 authored by Igor's avatar Igor Committed by Nick Thomas

Backport splitting approval changes from CE

Author and committers approvals are split in EE
This commit provides backports for those changes

This reverts commit 886f00bc.
parent f21f93f9
...@@ -20,8 +20,8 @@ class CommitCollection ...@@ -20,8 +20,8 @@ class CommitCollection
commits.each(&block) commits.each(&block)
end end
def authors def committers
emails = without_merge_commits.map(&:author_email).uniq emails = without_merge_commits.map(&:committer_email).uniq
User.by_any_email(emails) User.by_any_email(emails)
end end
......
...@@ -323,12 +323,8 @@ class MergeRequest < ApplicationRecord ...@@ -323,12 +323,8 @@ class MergeRequest < ApplicationRecord
work_in_progress?(title) ? title : "WIP: #{title}" work_in_progress?(title) ? title : "WIP: #{title}"
end end
def commit_authors def committers
@commit_authors ||= commits.authors @committers ||= commits.committers
end
def authors
User.from_union([commit_authors, User.where(id: self.author_id)])
end end
# Verifies if title has changed not taking into account WIP prefix # Verifies if title has changed not taking into account WIP prefix
......
...@@ -14,26 +14,26 @@ describe CommitCollection do ...@@ -14,26 +14,26 @@ describe CommitCollection do
end end
end end
describe '.authors' do describe '.committers' do
it 'returns a relation of users when users are found' do it 'returns a relation of users when users are found' do
user = create(:user, email: commit.author_email.upcase) user = create(:user, email: commit.committer_email.upcase)
collection = described_class.new(project, [commit]) collection = described_class.new(project, [commit])
expect(collection.authors).to contain_exactly(user) expect(collection.committers).to contain_exactly(user)
end end
it 'returns empty array when authors cannot be found' do it 'returns empty array when committers cannot be found' do
collection = described_class.new(project, [commit]) collection = described_class.new(project, [commit])
expect(collection.authors).to be_empty expect(collection.committers).to be_empty
end end
it 'excludes authors of merge commits' do it 'excludes authors of merge commits' do
commit = project.commit("60ecb67744cb56576c30214ff52294f8ce2def98") commit = project.commit("60ecb67744cb56576c30214ff52294f8ce2def98")
create(:user, email: commit.author_email.upcase) create(:user, email: commit.committer_email.upcase)
collection = described_class.new(project, [commit]) collection = described_class.new(project, [commit])
expect(collection.authors).to be_empty expect(collection.committers).to be_empty
end end
end end
......
...@@ -476,7 +476,6 @@ describe MergeRequest do ...@@ -476,7 +476,6 @@ describe MergeRequest do
it 'does not cache issues from external trackers' do it 'does not cache issues from external trackers' do
issue = ExternalIssue.new('JIRA-123', subject.project) issue = ExternalIssue.new('JIRA-123', subject.project)
commit = double('commit1', safe_message: "Fixes #{issue.to_reference}") commit = double('commit1', safe_message: "Fixes #{issue.to_reference}")
allow(subject).to receive(:commits).and_return([commit]) allow(subject).to receive(:commits).and_return([commit])
expect { subject.cache_merge_request_closes_issues!(subject.author) }.not_to raise_error expect { subject.cache_merge_request_closes_issues!(subject.author) }.not_to raise_error
...@@ -1065,31 +1064,17 @@ describe MergeRequest do ...@@ -1065,31 +1064,17 @@ describe MergeRequest do
end end
end end
describe '#commit_authors' do describe '#committers' do
it 'returns all the authors of every commit in the merge request' do it 'returns all the committers of every commit in the merge request' do
users = subject.commits.without_merge_commits.map(&:author_email).uniq.map do |email| users = subject.commits.without_merge_commits.map(&:committer_email).uniq.map do |email|
create(:user, email: email)
end
expect(subject.commit_authors).to match_array(users)
end
it 'returns an empty array if no author is associated with a user' do
expect(subject.commit_authors).to be_empty
end
end
describe '#authors' do
it 'returns a list with all the commit authors in the merge request and author' do
users = subject.commits.without_merge_commits.map(&:author_email).uniq.map do |email|
create(:user, email: email) create(:user, email: email)
end end
expect(subject.authors).to match_array([subject.author, *users]) expect(subject.committers).to match_array(users)
end end
it 'returns only the author if no committer is associated with a user' do it 'returns an empty array if no committer is associated with a user' do
expect(subject.authors).to contain_exactly(subject.author) expect(subject.committers).to be_empty
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