summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2019-04-02 11:01:08 +0000
committerNick Thomas <nick@gitlab.com>2019-04-02 11:01:08 +0000
commitee89d9550b6f0f5a04098564c96283121dee8f41 (patch)
tree6ae773097df4469714b0e2e5a7893f760d174f3f
parentf21f93f904505a5c5041a2e0f040fdad7107d3df (diff)
parent351b39f172bf77f4eb0e84fb2e5a71af9fe72348 (diff)
downloadgitlab-ce-ee89d9550b6f0f5a04098564c96283121dee8f41.tar.gz
Merge branch 'id-split-self-approval-restrictions' into 'master'
Backport splitting approval changes from CE See merge request gitlab-org/gitlab-ce!26323
-rw-r--r--app/models/commit_collection.rb4
-rw-r--r--app/models/merge_request.rb8
-rw-r--r--spec/models/commit_collection_spec.rb14
-rw-r--r--spec/models/merge_request_spec.rb27
4 files changed, 17 insertions, 36 deletions
diff --git a/app/models/commit_collection.rb b/app/models/commit_collection.rb
index 52524456439..e8df46e1cc3 100644
--- a/app/models/commit_collection.rb
+++ b/app/models/commit_collection.rb
@@ -20,8 +20,8 @@ class CommitCollection
commits.each(&block)
end
- def authors
- emails = without_merge_commits.map(&:author_email).uniq
+ def committers
+ emails = without_merge_commits.map(&:committer_email).uniq
User.by_any_email(emails)
end
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 50e6391a700..b780b67492f 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -323,12 +323,8 @@ class MergeRequest < ApplicationRecord
work_in_progress?(title) ? title : "WIP: #{title}"
end
- def commit_authors
- @commit_authors ||= commits.authors
- end
-
- def authors
- User.from_union([commit_authors, User.where(id: self.author_id)])
+ def committers
+ @committers ||= commits.committers
end
# Verifies if title has changed not taking into account WIP prefix
diff --git a/spec/models/commit_collection_spec.rb b/spec/models/commit_collection_spec.rb
index 8a7fcb39fe2..0bdf83fa90f 100644
--- a/spec/models/commit_collection_spec.rb
+++ b/spec/models/commit_collection_spec.rb
@@ -14,26 +14,26 @@ describe CommitCollection do
end
end
- describe '.authors' do
+ describe '.committers' 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])
- expect(collection.authors).to contain_exactly(user)
+ expect(collection.committers).to contain_exactly(user)
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])
- expect(collection.authors).to be_empty
+ expect(collection.committers).to be_empty
end
it 'excludes authors of merge commits' do
commit = project.commit("60ecb67744cb56576c30214ff52294f8ce2def98")
- create(:user, email: commit.author_email.upcase)
+ create(:user, email: commit.committer_email.upcase)
collection = described_class.new(project, [commit])
- expect(collection.authors).to be_empty
+ expect(collection.committers).to be_empty
end
end
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index fb32f72e2de..892fdc4e4e9 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -476,7 +476,6 @@ describe MergeRequest do
it 'does not cache issues from external trackers' do
issue = ExternalIssue.new('JIRA-123', subject.project)
commit = double('commit1', safe_message: "Fixes #{issue.to_reference}")
-
allow(subject).to receive(:commits).and_return([commit])
expect { subject.cache_merge_request_closes_issues!(subject.author) }.not_to raise_error
@@ -1065,31 +1064,17 @@ describe MergeRequest do
end
end
- describe '#commit_authors' do
- it 'returns all the authors of every commit in the merge request' do
- users = subject.commits.without_merge_commits.map(&:author_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|
+ describe '#committers' do
+ it 'returns all the committers of every commit in the merge request' do
+ users = subject.commits.without_merge_commits.map(&:committer_email).uniq.map do |email|
create(:user, email: email)
end
- expect(subject.authors).to match_array([subject.author, *users])
+ expect(subject.committers).to match_array(users)
end
- it 'returns only the author if no committer is associated with a user' do
- expect(subject.authors).to contain_exactly(subject.author)
+ it 'returns an empty array if no committer is associated with a user' do
+ expect(subject.committers).to be_empty
end
end