Commit dd921053c8ef598bad3c7a16331c296d581f0080

Authored by Robb Kidd
1 parent 345f176a

Rename changed_issue_email to reassigned_issue_email & make resque friendly

#changed_issue_email was really sending emails about issue reassignments.
Updated method name to reflect that.

Update method to take ids and then perform #finds itself during mailer
queue worker kick-off.
app/mailers/notify.rb
@@ -66,12 +66,11 @@ class Notify < ActionMailer::Base @@ -66,12 +66,11 @@ class Notify < ActionMailer::Base
66 @project = @merge_request.project 66 @project = @merge_request.project
67 mail(:to => @user['email'], :subject => "gitlab | merge request changed | #{@merge_request.title} ") 67 mail(:to => @user['email'], :subject => "gitlab | merge request changed | #{@merge_request.title} ")
68 end 68 end
69 -  
70 - def changed_issue_email(user, issue)  
71 - @issue = Issue.find(issue['id'])  
72 - @user = user  
73 - @assignee_was ||= User.find(@issue.assignee_id_was)  
74 - @project = @issue.project  
75 - mail(:to => @user['email'], :subject => "gitlab | changed issue | #{@issue.title} ") 69 +
  70 + def reassigned_issue_email(recipient_id, issue_id, previous_assignee_id)
  71 + recipient = User.find(recipient_id)
  72 + @issue = Issue.find(issue_id)
  73 + @previous_assignee ||= User.find(previous_assignee_id)
  74 + mail(:to => recipient.email, :subject => "gitlab | changed issue | #{@issue.title} ")
76 end 75 end
77 end 76 end
app/models/mailer_observer.rb
@@ -78,8 +78,8 @@ class MailerObserver < ActiveRecord::Observer @@ -78,8 +78,8 @@ class MailerObserver < ActiveRecord::Observer
78 recipients_ids = issue.assignee_id_was, issue.assignee_id 78 recipients_ids = issue.assignee_id_was, issue.assignee_id
79 recipients_ids.delete current_user.id 79 recipients_ids.delete current_user.id
80 80
81 - User.find(recipients_ids).each do |user|  
82 - Notify.changed_issue_email(user, issue).deliver 81 + recipients_ids.each do |recipient_id|
  82 + Notify.reassigned_issue_email(recipient_id, issue.id, issue.assignee_id_was).deliver
83 end 83 end
84 end 84 end
85 85
app/views/notify/changed_issue_email.html.haml
@@ -1,16 +0,0 @@ @@ -1,16 +0,0 @@
1 -%td.content{:align => "left", :style => "font-family: Helvetica, Arial, sans-serif; padding: 20px 0 0;", :valign => "top", :width => "600"}  
2 - %table{:border => "0", :cellpadding => "0", :cellspacing => "0", :style => "color: #717171; font: normal 11px Helvetica, Arial, sans-serif; margin: 0; padding: 0;", :width => "600"}  
3 - %tr  
4 - %td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}  
5 - %td{:align => "left", :style => "padding: 20px 0 0;"}  
6 - %h2{:style => "color:#646464; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}  
7 - Reassigned Issue  
8 - = link_to truncate(@issue.title, :length => 16), project_issue_url(@project, @issue)  
9 - %td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}  
10 - %tr  
11 - %td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}  
12 - %td{:style => "padding: 15px 0 15px;", :valign => "top"}  
13 - %p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}  
14 - Assignee changed from #{@assignee_was.name} to #{@issue.assignee.name}  
15 - %td  
16 -  
app/views/notify/reassigned_issue_email.html.haml 0 → 100644
@@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
  1 +%td.content{:align => "left", :style => "font-family: Helvetica, Arial, sans-serif; padding: 20px 0 0;", :valign => "top", :width => "600"}
  2 + %table{:border => "0", :cellpadding => "0", :cellspacing => "0", :style => "color: #717171; font: normal 11px Helvetica, Arial, sans-serif; margin: 0; padding: 0;", :width => "600"}
  3 + %tr
  4 + %td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
  5 + %td{:align => "left", :style => "padding: 20px 0 0;"}
  6 + %h2{:style => "color:#646464; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
  7 + Reassigned Issue
  8 + = link_to truncate(@issue.title, :length => 16), project_issue_url(@issue.project, @issue)
  9 + %td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
  10 + %tr
  11 + %td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
  12 + %td{:style => "padding: 15px 0 15px;", :valign => "top"}
  13 + %p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
  14 + Assignee changed from #{@previous_assignee.name} to #{@issue.assignee_name}
  15 + %td
  16 +
spec/mailers/notify_spec.rb
@@ -47,7 +47,7 @@ describe Notify do @@ -47,7 +47,7 @@ describe Notify do
47 context 'for a project' do 47 context 'for a project' do
48 describe 'items that are assignable, the email' do 48 describe 'items that are assignable, the email' do
49 let(:assignee) { Factory.create(:user, :email => 'assignee@example.com') } 49 let(:assignee) { Factory.create(:user, :email => 'assignee@example.com') }
50 - let(:old_assignee) { Factory.create(:user, :name => 'Old Assignee Guy') } 50 + let(:previous_assignee) { Factory.create(:user, :name => 'Previous Assignee') }
51 51
52 shared_examples 'an assignee email' do 52 shared_examples 'an assignee email' do
53 it 'is sent to the assignee' do 53 it 'is sent to the assignee' do
@@ -73,9 +73,9 @@ describe Notify do @@ -73,9 +73,9 @@ describe Notify do
73 end 73 end
74 74
75 describe 'that have been reassigned' do 75 describe 'that have been reassigned' do
76 - before(:each) { issue.stub(:assignee_id_was).and_return(old_assignee.id) } 76 + before(:each) { issue.stub(:assignee_id_was).and_return(previous_assignee.id) }
77 77
78 - subject { Notify.changed_issue_email(recipient, issue) } 78 + subject { Notify.reassigned_issue_email(recipient.id, issue.id, previous_assignee.id) }
79 79
80 it_behaves_like 'a multiple recipients email' 80 it_behaves_like 'a multiple recipients email'
81 81
@@ -84,7 +84,7 @@ describe Notify do @@ -84,7 +84,7 @@ describe Notify do
84 end 84 end
85 85
86 it 'contains the name of the previous assignee' do 86 it 'contains the name of the previous assignee' do
87 - should have_body_text /#{old_assignee.name}/ 87 + should have_body_text /#{previous_assignee.name}/
88 end 88 end
89 89
90 it 'contains the name of the new assignee' do 90 it 'contains the name of the new assignee' do