From 33f858b5588cfb32d626260a20816555c0667466 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 1 Jul 2013 20:43:43 -0400 Subject: [PATCH 1/2] Create an InviteEmail worker. --- ...{invite_user_by_email.rb => invite_email.rb} | 11 ++++------- spec/workers/mail/invite_email_spec.rb | 14 ++++++++++++++ spec/workers/mail/invite_user_by_email_spec.rb | 17 ----------------- 3 files changed, 18 insertions(+), 24 deletions(-) rename app/workers/mail/{invite_user_by_email.rb => invite_email.rb} (56%) create mode 100644 spec/workers/mail/invite_email_spec.rb delete mode 100644 spec/workers/mail/invite_user_by_email_spec.rb diff --git a/app/workers/mail/invite_user_by_email.rb b/app/workers/mail/invite_email.rb similarity index 56% rename from app/workers/mail/invite_user_by_email.rb rename to app/workers/mail/invite_email.rb index 87946cde5..685d628e5 100644 --- a/app/workers/mail/invite_user_by_email.rb +++ b/app/workers/mail/invite_email.rb @@ -4,14 +4,11 @@ module Workers module Mail - class InviteUserByEmail < Base + class InviteEmail < Base sidekiq_options queue: :mail - - def perform(invite_id) - invite = Invitation.find(invite_id) - I18n.with_locale(invite.language) do - invite.send! - end + + def perform(emails, inviter_id, options={}) + EmailInviter.new(emails, User.find(inviter_id), options).send! end end end diff --git a/spec/workers/mail/invite_email_spec.rb b/spec/workers/mail/invite_email_spec.rb new file mode 100644 index 000000000..ca0a2d6e2 --- /dev/null +++ b/spec/workers/mail/invite_email_spec.rb @@ -0,0 +1,14 @@ +require 'spec_helper' + +describe Workers::Mail::InviteEmail do + let(:emails) { ['foo@bar.com', 'baz@bar.com'] } + let(:message) { 'get over here!' } + let(:email_inviter) { double('EmailInviter') } + + it 'creates a new email inviter' do + EmailInviter.should_receive(:new).with(emails, alice, message: message) + .and_return(email_inviter) + email_inviter.should_receive(:send!) + Workers::Mail::InviteEmail.new.perform(emails, alice, message: message) + end +end diff --git a/spec/workers/mail/invite_user_by_email_spec.rb b/spec/workers/mail/invite_user_by_email_spec.rb deleted file mode 100644 index 4137361ad..000000000 --- a/spec/workers/mail/invite_user_by_email_spec.rb +++ /dev/null @@ -1,17 +0,0 @@ -require 'spec_helper' - -describe Workers::Mail::InviteUserByEmail do - before do - @sender = alice - @email = 'bob@bob.com' - @aspect = alice.aspects.first - @message = 'invite message' - end - - it 'calls invite_user with email param' do - invitation = Invitation.create(:sender => @sender, :identifier => @email, :service => "email", :aspect => @aspect, :message => @message) - invitation.should_receive(:send!) - Invitation.stub(:find).and_return(invitation) - Workers::Mail::InviteUserByEmail.new.perform(invitation.id) - end -end From 0cc02fb5122366e34db0b12cc1331310659eadf3 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 1 Jul 2013 21:07:24 -0400 Subject: [PATCH 2/2] Use InviteEmail worker in InvitationsController create action. --- app/controllers/invitations_controller.rb | 7 ++++--- spec/controllers/invitations_controller_spec.rb | 16 +++++++--------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/app/controllers/invitations_controller.rb b/app/controllers/invitations_controller.rb index 3754d1b22..538f025aa 100644 --- a/app/controllers/invitations_controller.rb +++ b/app/controllers/invitations_controller.rb @@ -58,9 +58,10 @@ class InvitationsController < ApplicationController session[:invalid_email_invites] = invalid_emails unless valid_emails.empty? - inviter = EmailInviter.new(valid_emails.join(','), current_user, - params[:email_inviter]) - inviter.send! + Workers::Mail::InviteEmail.perform_async(valid_emails.join(','), + current_user.id, + params[:email_inviter]) + end if emails.empty? diff --git a/spec/controllers/invitations_controller_spec.rb b/spec/controllers/invitations_controller_spec.rb index 5d3cc62ed..2e07876df 100644 --- a/spec/controllers/invitations_controller_spec.rb +++ b/spec/controllers/invitations_controller_spec.rb @@ -26,7 +26,7 @@ describe InvitationsController do end it 'does not create an EmailInviter' do - EmailInviter.should_not_receive(:new) + Workers::Mail::InviteEmail.should_not_receive(:perform_async) post :create, @invite end @@ -47,10 +47,9 @@ describe InvitationsController do @invite = {'email_inviter' => {'message' => "test", 'emails' => @emails}} end - it 'creates an EmailInviter' do + it 'creates an InviteEmail worker' do inviter = stub(:emails => [@emails], :send! => true) - EmailInviter.should_receive(:new).with(@invite['email_inviter']['emails'], @user, @invite['email_inviter']). - and_return(inviter) + Workers::Mail::InviteEmail.should_receive(:perform_async).with(@invite['email_inviter']['emails'], @user.id, @invite['email_inviter']) post :create, @invite end @@ -72,8 +71,8 @@ describe InvitationsController do @invite = {'email_inviter' => {'message' => "test", 'emails' => @emails}} end - it 'does not create an EmailInviter' do - EmailInviter.should_not_receive(:new) + it 'does not create an InviteEmail worker' do + Workers::Mail::InviteEmail.should_not_receive(:perform_async) post :create, @invite end @@ -98,10 +97,9 @@ describe InvitationsController do @valid_emails + ',' + @invalid_emails}} end - it 'creates an EmailInviter' do + it 'creates an InviteEmail worker' do inviter = stub(:emails => [@emails], :send! => true) - EmailInviter.should_receive(:new).with(@valid_emails, @user, @invite['email_inviter']). - and_return(inviter) + Workers::Mail::InviteEmail.should_receive(:perform_async).with(@valid_emails, @user.id, @invite['email_inviter']) post :create, @invite end