Commit 95be646d91be0fc8aa2078d977c11b8f770b4845

Authored by Antonio Terceiro
1 parent f7de17d2

Set a locale in the background tasks

(ActionItem1640)
app/controllers/public/invite_controller.rb
@@ -22,7 +22,7 @@ class InviteController < PublicController @@ -22,7 +22,7 @@ class InviteController < PublicController
22 webmail_import_addresses = params[:webmail_import_addresses] 22 webmail_import_addresses = params[:webmail_import_addresses]
23 contacts_to_invite = Invitation.join_contacts(manual_import_addresses, webmail_import_addresses) 23 contacts_to_invite = Invitation.join_contacts(manual_import_addresses, webmail_import_addresses)
24 if !contacts_to_invite.empty? 24 if !contacts_to_invite.empty?
25 - Delayed::Job.enqueue InvitationJob.new(current_user.person.id, contacts_to_invite, params[:mail_template], profile.id, @contact_list.id) 25 + Delayed::Job.enqueue InvitationJob.new(current_user.person.id, contacts_to_invite, params[:mail_template], profile.id, @contact_list.id, locale)
26 session[:notice] = _('Your invitations are being sent.') 26 session[:notice] = _('Your invitations are being sent.')
27 if profile.person? 27 if profile.person?
28 redirect_to :controller => 'profile', :action => 'friends' 28 redirect_to :controller => 'profile', :action => 'friends'
lib/invitation_job.rb
1 -class InvitationJob < Struct.new(:person_id, :contacts_to_invite, :message, :profile_id, :contact_list_id) 1 +class InvitationJob < Struct.new(:person_id, :contacts_to_invite, :message, :profile_id, :contact_list_id, :locale)
2 def perform 2 def perform
3 - person = Person.find(person_id)  
4 - profile = Profile.find(profile_id)  
5 - Invitation.invite(person, contacts_to_invite, message, profile)  
6 - ContactList.find(contact_list_id).destroy 3 + Noosfero.with_locale(locale) do
  4 + person = Person.find(person_id)
  5 + profile = Profile.find(profile_id)
  6 + Invitation.invite(person, contacts_to_invite, message, profile)
  7 + ContactList.find(contact_list_id).destroy
  8 + end
7 end 9 end
8 end 10 end
test/functional/invite_controller_test.rb
@@ -225,4 +225,12 @@ class InviteControllerTest &lt; ActionController::TestCase @@ -225,4 +225,12 @@ class InviteControllerTest &lt; ActionController::TestCase
225 assert_redirected_to :action => 'select_address_book' 225 assert_redirected_to :action => 'select_address_book'
226 end 226 end
227 227
  228 + should 'set locale in the background job' do
  229 + @controller.stubs(:locale).returns('pt')
  230 +
  231 + contact_list = ContactList.create
  232 + post :select_friends, :profile => profile.identifier, :manual_import_addresses => "#{friend.name} <#{friend.email}>", :import_from => "manual", :mail_template => "click: <url>", :contact_list => contact_list.id
  233 + assert_equal 'pt', Delayed::Job.first.payload_object.locale
  234 + end
  235 +
228 end 236 end
test/unit/invitation_job_test.rb
@@ -19,4 +19,10 @@ class InvitationJobTest &lt; ActiveSupport::TestCase @@ -19,4 +19,10 @@ class InvitationJobTest &lt; ActiveSupport::TestCase
19 end 19 end
20 end 20 end
21 21
  22 + should 'change locale according to the locale informed' do
  23 + job = InvitationJob.new(nil, nil, nil, nil, nil, 'pt')
  24 + Noosfero.expects(:with_locale).with('pt')
  25 + job.perform
  26 + end
  27 +
22 end 28 end