From bb3bdf37cd446aa9c5f909b2c90a1e481d0cb417 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Fri, 10 Apr 2015 15:51:42 +1000 Subject: [PATCH] Add jobs for user, order and enterprise emails --- app/jobs/confirm_order_job.rb | 6 ++++++ app/jobs/confirm_signup_job.rb | 6 ++++++ app/jobs/welcome_enterprise_job.rb | 6 ++++++ spec/jobs/confirm_order_job_spec.rb | 16 ++++++++++++++++ spec/jobs/confirm_signup_job_spec.rb | 13 +++++++++++++ spec/jobs/welcome_enterprise_job_spec.rb | 13 +++++++++++++ spec/support/delayed_job_helper.rb | 7 +++++++ 7 files changed, 67 insertions(+) create mode 100644 app/jobs/confirm_order_job.rb create mode 100644 app/jobs/confirm_signup_job.rb create mode 100644 app/jobs/welcome_enterprise_job.rb create mode 100644 spec/jobs/confirm_order_job_spec.rb create mode 100644 spec/jobs/confirm_signup_job_spec.rb create mode 100644 spec/jobs/welcome_enterprise_job_spec.rb diff --git a/app/jobs/confirm_order_job.rb b/app/jobs/confirm_order_job.rb new file mode 100644 index 0000000000..e16df2d99a --- /dev/null +++ b/app/jobs/confirm_order_job.rb @@ -0,0 +1,6 @@ +ConfirmOrderJob = Struct.new(:order_id) do + def perform + Spree::OrderMailer.confirm_email_for_customer(order_id).deliver + Spree::OrderMailer.confirm_email_for_shop(order_id).deliver + end +end diff --git a/app/jobs/confirm_signup_job.rb b/app/jobs/confirm_signup_job.rb new file mode 100644 index 0000000000..d16aee714c --- /dev/null +++ b/app/jobs/confirm_signup_job.rb @@ -0,0 +1,6 @@ +ConfirmSignupJob = Struct.new(:user_id) do + def perform + user = Spree::User.find user_id + Spree::UserMailer.signup_confirmation(user).deliver + end +end diff --git a/app/jobs/welcome_enterprise_job.rb b/app/jobs/welcome_enterprise_job.rb new file mode 100644 index 0000000000..6665af9d5a --- /dev/null +++ b/app/jobs/welcome_enterprise_job.rb @@ -0,0 +1,6 @@ +WelcomeEnterpriseJob = Struct.new(:enterprise_id) do + def perform + enterprise = Enterprise.find enterprise_id + EnterpriseMailer.welcome(enterprise).deliver + end +end diff --git a/spec/jobs/confirm_order_job_spec.rb b/spec/jobs/confirm_order_job_spec.rb new file mode 100644 index 0000000000..e3138620e3 --- /dev/null +++ b/spec/jobs/confirm_order_job_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper' + +describe ConfirmOrderJob do + let(:order) { create(:order) } + + 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 + + run_job ConfirmOrderJob.new order.id + end +end diff --git a/spec/jobs/confirm_signup_job_spec.rb b/spec/jobs/confirm_signup_job_spec.rb new file mode 100644 index 0000000000..4d7b97bcc0 --- /dev/null +++ b/spec/jobs/confirm_signup_job_spec.rb @@ -0,0 +1,13 @@ +require 'spec_helper' + +describe ConfirmSignupJob do + let(:user) { create(:user) } + + it "sends a confirmation email to the user" do + mail = double(:mail) + Spree::UserMailer.should_receive(:signup_confirmation).with(user).and_return(mail) + mail.should_receive(:deliver) + + run_job ConfirmSignupJob.new user.id + end +end diff --git a/spec/jobs/welcome_enterprise_job_spec.rb b/spec/jobs/welcome_enterprise_job_spec.rb new file mode 100644 index 0000000000..051f4a31d1 --- /dev/null +++ b/spec/jobs/welcome_enterprise_job_spec.rb @@ -0,0 +1,13 @@ +require 'spec_helper' + +describe WelcomeEnterpriseJob do + let(:enterprise) { create(:enterprise) } + + it "sends a welcome email to the enterprise" do + mail = double(:mail) + EnterpriseMailer.should_receive(:welcome).with(enterprise).and_return(mail) + mail.should_receive(:deliver) + + run_job WelcomeEnterpriseJob.new(enterprise.id) + end +end diff --git a/spec/support/delayed_job_helper.rb b/spec/support/delayed_job_helper.rb index 1e94783586..5f9cfb6140 100644 --- a/spec/support/delayed_job_helper.rb +++ b/spec/support/delayed_job_helper.rb @@ -1,5 +1,12 @@ module OpenFoodNetwork module DelayedJobHelper + def run_job(job) + clear_jobs + Delayed::Job.enqueue job + flush_jobs + end + + # Process all pending Delayed jobs, keeping in mind jobs could spawn new # delayed job (so things might be added to the queue while processing) def flush_jobs(options = {})