Commit f20966fda500963df82795e45488d50e7f83d122

Authored by Dmitriy Zaporozhets
2 parents 352bb972 28e6e1b1

Merge branch 'jsternberg/gitlab-ce-161-emails-on-push-service'

@@ -16,6 +16,7 @@ v 6.8.0 @@ -16,6 +16,7 @@ v 6.8.0
16 - Clean old created archives from repository downloads directory 16 - Clean old created archives from repository downloads directory
17 - Fix download link for huge MR diffs 17 - Fix download link for huge MR diffs
18 - Expose event and mergerequest timestamps in API 18 - Expose event and mergerequest timestamps in API
  19 + - Fix emails on push service when only one commit is pushed
19 20
20 v 6.7.3 21 v 6.7.3
21 - Fix the merge notification email not being sent (Pierre de La Morinerie) 22 - Fix the merge notification email not being sent (Pierre de La Morinerie)
app/mailers/emails/projects.rb
@@ -26,7 +26,7 @@ module Emails @@ -26,7 +26,7 @@ module Emails
26 if @commits.length > 1 26 if @commits.length > 1
27 @target_url = project_compare_url(@project, from: @commits.first, to: @commits.last) 27 @target_url = project_compare_url(@project, from: @commits.first, to: @commits.last)
28 else 28 else
29 - @target_url = project_commit_url(@project, @compare.commit) 29 + @target_url = project_commit_url(@project, @commits.first)
30 end 30 end
31 31
32 mail(from: sender(author_id), 32 mail(from: sender(author_id),
spec/mailers/notify_spec.rb
@@ -502,7 +502,7 @@ describe Notify do @@ -502,7 +502,7 @@ describe Notify do
502 end 502 end
503 end 503 end
504 504
505 - describe 'email on push' do 505 + describe 'email on push with multiple commits' do
506 let(:example_site_path) { root_path } 506 let(:example_site_path) { root_path }
507 let(:user) { create(:user) } 507 let(:user) { create(:user) }
508 let(:compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, 'cd5c4bac', 'b1e6a9db') } 508 let(:compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, 'cd5c4bac', 'b1e6a9db') }
@@ -537,4 +537,40 @@ describe Notify do @@ -537,4 +537,40 @@ describe Notify do
537 should have_body_text /#{diff_path}/ 537 should have_body_text /#{diff_path}/
538 end 538 end
539 end 539 end
  540 +
  541 + describe 'email on push with a single commit' do
  542 + let(:example_site_path) { root_path }
  543 + let(:user) { create(:user) }
  544 + let(:compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, '8716fc78', 'b1e6a9db') }
  545 + let(:commits) { Commit.decorate(compare.commits) }
  546 + let(:diff_path) { project_commit_path(project, commits.first) }
  547 +
  548 + subject { Notify.repository_push_email(project.id, 'devs@company.name', user.id, 'master', compare) }
  549 +
  550 + it 'is sent as the author' do
  551 + sender = subject.header[:from].addrs[0]
  552 + sender.display_name.should eq(user.name)
  553 + sender.address.should eq(gitlab_sender)
  554 + end
  555 +
  556 + it 'is sent to recipient' do
  557 + should deliver_to 'devs@company.name'
  558 + end
  559 +
  560 + it 'has the correct subject' do
  561 + should have_subject /New push to repository/
  562 + end
  563 +
  564 + it 'includes commits list' do
  565 + should have_body_text /tree css fixes/
  566 + end
  567 +
  568 + it 'includes diffs' do
  569 + should have_body_text /Checkout wiki pages for installation information/
  570 + end
  571 +
  572 + it 'contains a link to the diff' do
  573 + should have_body_text /#{diff_path}/
  574 + end
  575 + end
540 end 576 end