summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-04-07 22:37:32 -0700
committerStan Hu <stanhu@gmail.com>2018-04-07 23:43:40 -0700
commit47b1528abe69f9b584536a3557f23d912b0ecfd8 (patch)
tree8236e924a12e66e932f287518f9337390398d522
parentdd552d06f6e39d5e6138a33bd7c1bffb2d3dbb1d (diff)
downloadgitlab-ce-47b1528abe69f9b584536a3557f23d912b0ecfd8.tar.gz
Fix undefined method `one?` when pushing to an existing merge requestsh-fix-issue-45152
An untested code path was triggering an Exception because Fixnum doesn't have `one?` implemented in Rails, while arrays and collections do. Closes #45152
-rw-r--r--app/views/notify/push_to_merge_request_email.html.haml2
-rw-r--r--app/views/notify/push_to_merge_request_email.text.haml2
-rw-r--r--spec/mailers/notify_spec.rb16
3 files changed, 16 insertions, 4 deletions
diff --git a/app/views/notify/push_to_merge_request_email.html.haml b/app/views/notify/push_to_merge_request_email.html.haml
index 4c507c08ed7..67744ec1cee 100644
--- a/app/views/notify/push_to_merge_request_email.html.haml
+++ b/app/views/notify/push_to_merge_request_email.html.haml
@@ -7,7 +7,7 @@
- count = @existing_commits.size
%ul
%li
- - if count.one?
+ - if count == 1
- commit_id = @existing_commits.first[:short_id]
= link_to(commit_id, project_commit_url(@merge_request.target_project, commit_id))
- else
diff --git a/app/views/notify/push_to_merge_request_email.text.haml b/app/views/notify/push_to_merge_request_email.text.haml
index 553f771f1a6..95759d127e2 100644
--- a/app/views/notify/push_to_merge_request_email.text.haml
+++ b/app/views/notify/push_to_merge_request_email.text.haml
@@ -4,7 +4,7 @@
\
- if @existing_commits.any?
- count = @existing_commits.size
- - commits_id = count.one? ? @existing_commits.first[:short_id] : "#{@existing_commits.first[:short_id]}...#{@existing_commits.last[:short_id]}"
+ - commits_id = count == 1 ? @existing_commits.first[:short_id] : "#{@existing_commits.first[:short_id]}...#{@existing_commits.last[:short_id]}"
- commits_text = "#{count} commit".pluralize(count)
* #{commits_id} - #{commits_text} from branch `#{@merge_request.target_branch}`
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index 971a88e9ee9..43e419cd7de 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -390,11 +390,11 @@ describe Notify do
end
end
- describe 'that have new commits' do
+ shared_examples 'a push to an existing merge request' do
let(:push_user) { create(:user) }
subject do
- described_class.push_to_merge_request_email(recipient.id, merge_request.id, push_user.id, new_commits: merge_request.commits)
+ described_class.push_to_merge_request_email(recipient.id, merge_request.id, push_user.id, new_commits: merge_request.commits, existing_commits: existing_commits)
end
it_behaves_like 'a multiple recipients email'
@@ -419,6 +419,18 @@ describe Notify do
end
end
end
+
+ describe 'that have new commits' do
+ let(:existing_commits) { [] }
+
+ it_behaves_like 'a push to an existing merge request'
+ end
+
+ describe 'that have new commits on top of an existing one' do
+ let(:existing_commits) { [merge_request.commits.first] }
+
+ it_behaves_like 'a push to an existing merge request'
+ end
end
context 'for issue notes' do