Send emails via jobs instead of synchronously

This commit is contained in:
Rohan Mitchell
2015-04-10 15:54:03 +10:00
parent bb3bdf37cd
commit e9fbd74e88
6 changed files with 16 additions and 28 deletions

View File

@@ -348,7 +348,7 @@ class Enterprise < ActiveRecord::Base
end
def send_welcome_email
EnterpriseMailer.welcome(self).deliver
Delayed::Job.enqueue WelcomeEnterpriseJob.new(self.id)
end
def strip_url(url)

View File

@@ -216,14 +216,7 @@ Spree::Order.class_eval do
# Overrride of Spree method, that allows us to send separate confirmation emails to user and shop owners
def deliver_order_confirmation_email
begin
Spree::OrderMailer.confirm_email_for_customer(self.id).deliver
Spree::OrderMailer.confirm_email_for_shop(self.id).deliver
rescue Exception => e
Bugsnag.notify(e)
logger.error("#{e.class.name}: #{e.message}")
logger.error(e.backtrace * "\n")
end
Delayed::Job.enqueue ConfirmOrderJob.new(id)
end

View File

@@ -37,7 +37,7 @@ Spree.user_class.class_eval do
end
def send_signup_confirmation
Spree::UserMailer.signup_confirmation(self).deliver
Delayed::Job.enqueue ConfirmSignupJob.new(id)
end
def can_own_more_enterprises?

View File

@@ -29,10 +29,9 @@ describe Enterprise do
end
it "sends a welcome email" do
mail_message = double "Mail::Message"
expect(EnterpriseMailer).to receive(:welcome).and_return mail_message
mail_message.should_receive :deliver
create(:enterprise, owner: user, email: enterprise.email, confirmed_at: nil)
expect do
create(:enterprise, owner: user, email: enterprise.email, confirmed_at: nil)
end.to enqueue_job WelcomeEnterpriseJob
end
end
end
@@ -65,10 +64,9 @@ describe Enterprise do
unconfirmed_enterprise.unconfirmed_email = nil
unconfirmed_enterprise.save!
mail_message = double "Mail::Message"
expect(EnterpriseMailer).to receive(:welcome).and_return mail_message
mail_message.should_receive :deliver
unconfirmed_enterprise.confirm!
expect do
unconfirmed_enterprise.confirm!
end.to enqueue_job WelcomeEnterpriseJob, enterprise_id: unconfirmed_enterprise.id
end
end

View File

@@ -452,14 +452,10 @@ describe Spree::Order do
end
describe "sending confirmation emails" do
it "sends confirmation emails to both the user and the shop owner" do
customer_confirm_fake = double(:confirm_email_for_customer)
shop_confirm_fake = double(:confirm_email_for_shop)
expect(Spree::OrderMailer).to receive(:confirm_email_for_customer).and_return customer_confirm_fake
expect(Spree::OrderMailer).to receive(:confirm_email_for_shop).and_return shop_confirm_fake
expect(customer_confirm_fake).to receive :deliver
expect(shop_confirm_fake).to receive :deliver
create(:order).deliver_order_confirmation_email
it "sends confirmation emails" do
expect do
create(:order).deliver_order_confirmation_email
end.to enqueue_job ConfirmOrderJob
end
end
end

View File

@@ -49,8 +49,9 @@ describe Spree.user_class do
context "#create" do
it "should send a signup email" do
Spree::UserMailer.should_receive(:signup_confirmation).and_return(double(:deliver => true))
create(:user)
expect do
create(:user)
end.to enqueue_job ConfirmSignupJob
end
end