Commit f20966fda500963df82795e45488d50e7f83d122

Authored by Dmitriy Zaporozhets
2 parents 352bb972 28e6e1b1

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

CHANGELOG
... ... @@ -16,6 +16,7 @@ v 6.8.0
16 16 - Clean old created archives from repository downloads directory
17 17 - Fix download link for huge MR diffs
18 18 - Expose event and mergerequest timestamps in API
  19 + - Fix emails on push service when only one commit is pushed
19 20  
20 21 v 6.7.3
21 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 26 if @commits.length > 1
27 27 @target_url = project_compare_url(@project, from: @commits.first, to: @commits.last)
28 28 else
29   - @target_url = project_commit_url(@project, @compare.commit)
  29 + @target_url = project_commit_url(@project, @commits.first)
30 30 end
31 31  
32 32 mail(from: sender(author_id),
... ...
spec/mailers/notify_spec.rb
... ... @@ -502,7 +502,7 @@ describe Notify do
502 502 end
503 503 end
504 504  
505   - describe 'email on push' do
  505 + describe 'email on push with multiple commits' do
506 506 let(:example_site_path) { root_path }
507 507 let(:user) { create(:user) }
508 508 let(:compare) { Gitlab::Git::Compare.new(project.repository.raw_repository, 'cd5c4bac', 'b1e6a9db') }
... ... @@ -537,4 +537,40 @@ describe Notify do
537 537 should have_body_text /#{diff_path}/
538 538 end
539 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 576 end
... ...