diff --git a/app/jobs/payment_notification_email_donor_job.rb b/app/jobs/payment_notification_email_donor_job.rb new file mode 100644 index 00000000..f4cca0b9 --- /dev/null +++ b/app/jobs/payment_notification_email_donor_job.rb @@ -0,0 +1,7 @@ +class PaymentNotificationEmailDonorJob < ApplicationJob + queue_as :default + + def perform(donation, locale) + DonationMailer.donor_payment_notification(donation.id, locale).deliver_now + end +end diff --git a/app/jobs/payment_notification_email_nonprofit_job.rb b/app/jobs/payment_notification_email_nonprofit_job.rb new file mode 100644 index 00000000..98c8d2f7 --- /dev/null +++ b/app/jobs/payment_notification_email_nonprofit_job.rb @@ -0,0 +1,7 @@ +class PaymentNotificationEmailNonprofitJob < ApplicationJob + queue_as :default + + def perform(*args) + # Do something later + end +end diff --git a/app/jobs/payment_notification_job.rb b/app/jobs/payment_notification_job.rb new file mode 100644 index 00000000..56305f9b --- /dev/null +++ b/app/jobs/payment_notification_job.rb @@ -0,0 +1,8 @@ +class PaymentNotificationJob < ApplicationJob + queue_as :default + + def perform(donation, locale) + PaymentNotificationEmailDonorJob.perform_later donation, locale + PaymentNotificaitonEmailNonprofitJob. + end +end diff --git a/app/mailers/payment_mailer.rb b/app/mailers/payment_mailer.rb index 21762c5d..7b0a1162 100644 --- a/app/mailers/payment_mailer.rb +++ b/app/mailers/payment_mailer.rb @@ -18,7 +18,7 @@ class PaymentMailer < BaseMailer def resend_donor_receipt(payment_id) payment = Payment.find(payment_id) if payment.kind == 'Donation' || payment.kind == 'RecurringDonation' - Delayed::Job.enqueue JobTypes::DonorPaymentNotificationJob.new(payment.donation.id) + PaymentNotificationEmailDonorJob.perform_later payment.donation elsif payment.kind == 'Ticket' return TicketMailer.followup(payment.tickets.pluck(:id), payment.charge.id).deliver end diff --git a/lib/insert/insert_donation.rb b/lib/insert/insert_donation.rb index 0b838da9..84637159 100644 --- a/lib/insert/insert_donation.rb +++ b/lib/insert/insert_donation.rb @@ -44,7 +44,7 @@ module InsertDonation update_donation_keys(result) result['activity'] = InsertActivities.for_one_time_donations([result['payment'].id]) EmailJobQueue.queue(JobTypes::NonprofitPaymentNotificationJob, result['donation'].id) - EmailJobQueue.queue(JobTypes::DonorPaymentNotificationJob, result['donation'].id, entities[:supporter_id].locale) + PaymentNotificationJob.perform_later result['donation'], entities[:supporter_id].locale QueueDonations.delay.execute_for_donation(result['donation'].id) result end diff --git a/lib/insert/insert_recurring_donation.rb b/lib/insert/insert_recurring_donation.rb index 021fdfc6..603ffa97 100644 --- a/lib/insert/insert_recurring_donation.rb +++ b/lib/insert/insert_recurring_donation.rb @@ -71,7 +71,7 @@ module InsertRecurringDonation end # Send receipts EmailJobQueue.queue(JobTypes::NonprofitPaymentNotificationJob, result['donation'].id) - EmailJobQueue.queue(JobTypes::DonorPaymentNotificationJob, result['donation'].id, entities[:supporter_id].locale) + PaymentNotificationJob.perform_later result['donation'], entities[:supporter_id].locale QueueDonations.delay.execute_for_donation(result['donation']['id']) result end diff --git a/lib/job_types/donor_payment_notification_job.rb b/lib/job_types/donor_payment_notification_job.rb deleted file mode 100644 index ca85280f..00000000 --- a/lib/job_types/donor_payment_notification_job.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -module JobTypes - class DonorPaymentNotificationJob < EmailJob - attr_reader :donation_id - def initialize(donation_id, locale = I18n.locale) - @donation_id = donation_id - @locale = locale - end - - def perform - DonationMailer.donor_payment_notification(@donation_id, @locale).deliver - end - end -end diff --git a/lib/pay_recurring_donation.rb b/lib/pay_recurring_donation.rb index f8f798cb..1330113b 100644 --- a/lib/pay_recurring_donation.rb +++ b/lib/pay_recurring_donation.rb @@ -94,7 +94,7 @@ module PayRecurringDonation Qexpr.new.update(:recurring_donations, n_failures: 0) .where('id=$id', id: rd_id).returning('*') ).first - Delayed::Job.enqueue JobTypes::DonorPaymentNotificationJob.new(rd['donation_id']) + PaymentNotificationJob.perform_later donation, donation&.supporter&.locale || 'en' Delayed::Job.enqueue JobTypes::NonprofitPaymentNotificationJob.new(rd['donation_id']) InsertActivities.for_recurring_donations([result['payment']['id']]) else @@ -146,6 +146,7 @@ module PayRecurringDonation Qexpr.new.update(:recurring_donations, n_failures: 0) .where('id=$id', id: rd_id).returning('*') ).first + ## add PaymentNotificationJobHere Delayed::Job.enqueue JobTypes::DonorPaymentNotificationJob.new(rd['donation_id']) Delayed::Job.enqueue JobTypes::NonprofitPaymentNotificationJob.new(rd['donation_id']) InsertActivities.for_recurring_donations([result['payment']['id']]) diff --git a/spec/lib/job_types/donor_payment_notification_job_spec.rb b/spec/lib/job_types/donor_payment_notification_job_spec.rb deleted file mode 100644 index 3af0d841..00000000 --- a/spec/lib/job_types/donor_payment_notification_job_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -require 'rails_helper.rb' - -describe JobTypes::DonorPaymentNotificationJob do - describe '.perform' do - it 'calls the correct active mailer' do - expect(DonationMailer).to receive(:donor_payment_notification).with(1, 2).and_wrap_original { |_m, *_args| mailer = double('object'); expect(mailer).to receive(:deliver).and_return(nil); mailer } - - job = JobTypes::DonorPaymentNotificationJob.new(1, 2) - job.perform - end - end -end diff --git a/spec/support/contexts/shared_rd_donation_value_context.rb b/spec/support/contexts/shared_rd_donation_value_context.rb index 54ed9fe4..f46a39ff 100644 --- a/spec/support/contexts/shared_rd_donation_value_context.rb +++ b/spec/support/contexts/shared_rd_donation_value_context.rb @@ -327,11 +327,12 @@ RSpec.shared_context :shared_rd_donation_value_context do def before_each_success(expect_charge = true) expect(InsertDonation).to receive(:insert_donation).and_wrap_original do |m, *args| - result = m.call(*args) + expect { + result = m.call(*args) + }.to have_enqueued_job(PaymentNotificationJob).with(result, supporter.local) @donation_id = result.id expect_email_queued.with(JobTypes::NonprofitPaymentNotificationJob, @donation_id) - expect_email_queued.with(JobTypes::DonorPaymentNotificationJob, @donation_id, supporter.locale) expect(QueueDonations).to receive(:execute_for_donation).with(@donation_id) result