Commit 95be646d91be0fc8aa2078d977c11b8f770b4845
1 parent
f7de17d2
Exists in
master
and in
29 other branches
Set a locale in the background tasks
(ActionItem1640)
Showing
4 changed files
with
22 additions
and
6 deletions
Show diff stats
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 < 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 < 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 | ... | ... |