Commit 28e6e1b1ab22f50a700408fa0c43528cd13ad360
Exists in
spb-stable
and in
3 other branches
Merge branch '161-emails-on-push-service' of https://gitlab.com/jsternberg/gitla…
…b-ce into jsternberg/gitlab-ce-161-emails-on-push-service Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> Conflicts: CHANGELOG
Showing
3 changed files
with
39 additions
and
2 deletions
Show diff stats
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 | ... | ... |