diff options
author | Nick Thomas <nick@gitlab.com> | 2019-04-02 11:01:08 +0000 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2019-04-02 11:01:08 +0000 |
commit | ee89d9550b6f0f5a04098564c96283121dee8f41 (patch) | |
tree | 6ae773097df4469714b0e2e5a7893f760d174f3f | |
parent | f21f93f904505a5c5041a2e0f040fdad7107d3df (diff) | |
parent | 351b39f172bf77f4eb0e84fb2e5a71af9fe72348 (diff) | |
download | gitlab-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.rb | 4 | ||||
-rw-r--r-- | app/models/merge_request.rb | 8 | ||||
-rw-r--r-- | spec/models/commit_collection_spec.rb | 14 | ||||
-rw-r--r-- | spec/models/merge_request_spec.rb | 27 |
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 |