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 22 webmail_import_addresses = params[:webmail_import_addresses]
23 23 contacts_to_invite = Invitation.join_contacts(manual_import_addresses, webmail_import_addresses)
24 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 26 session[:notice] = _('Your invitations are being sent.')
27 27 if profile.person?
28 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 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 9 end
8 10 end
... ...
test/functional/invite_controller_test.rb
... ... @@ -225,4 +225,12 @@ class InviteControllerTest &lt; ActionController::TestCase
225 225 assert_redirected_to :action => 'select_address_book'
226 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 236 end
... ...
test/unit/invitation_job_test.rb
... ... @@ -19,4 +19,10 @@ class InvitationJobTest &lt; ActiveSupport::TestCase
19 19 end
20 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 28 end
... ...