diff options
author | Alberto Vena <kennyadsl@gmail.com> | 2021-07-12 17:04:48 +0200 |
---|---|---|
committer | Alberto Vena <kennyadsl@gmail.com> | 2021-07-13 16:23:34 +0200 |
commit | 0317e228bc79c13667940203add35fa13fac21f1 (patch) | |
tree | e7e511496ad1bb7b0b0d32607cf634332192d69b | |
parent | c9e26197b0abbe50b029c368017243314d572884 (diff) |
Pass installment to the processing error handler
This way we can provide more flexibility on things that can be
done when an error occurs.
In the provided RailsLogger handler, we'll also print the ID
of the installment.
3 files changed, 12 insertions, 8 deletions
diff --git a/app/jobs/solidus_subscriptions/process_installment_job.rb b/app/jobs/solidus_subscriptions/process_installment_job.rb index 53270e5..84d077a 100644 --- a/app/jobs/solidus_subscriptions/process_installment_job.rb +++ b/app/jobs/solidus_subscriptions/process_installment_job.rb @@ -7,7 +7,7 @@ module SolidusSubscriptions def perform(installment) Checkout.new(installment).process rescue StandardError => e - SolidusSubscriptions.configuration.processing_error_handler&.call(e) + SolidusSubscriptions.configuration.processing_error_handler&.call(e, installment) end end end diff --git a/lib/solidus_subscriptions/processing_error_handlers/rails_logger.rb b/lib/solidus_subscriptions/processing_error_handlers/rails_logger.rb index d209123..d6fcf7e 100644 --- a/lib/solidus_subscriptions/processing_error_handlers/rails_logger.rb +++ b/lib/solidus_subscriptions/processing_error_handlers/rails_logger.rb @@ -3,21 +3,23 @@ module SolidusSubscriptions module ProcessingErrorHandlers class RailsLogger - def self.call(exception) - new(exception).call + def self.call(exception, installment = nil) + new(exception, installment).call end - def initialize(exception) + def initialize(exception, installment = nil) @exception = exception + @installment = installment end def call - Rails.logger.error exception.message + Rails.logger.error("Error processing installment with ID=#{installment.id}:") if installment + Rails.logger.error(exception.message) end private - attr_reader :exception + attr_reader :exception, :installment end end end diff --git a/spec/jobs/solidus_subscriptions/process_installment_job_spec.rb b/spec/jobs/solidus_subscriptions/process_installment_job_spec.rb index 7211cfe..767d650 100644 --- a/spec/jobs/solidus_subscriptions/process_installment_job_spec.rb +++ b/spec/jobs/solidus_subscriptions/process_installment_job_spec.rb @@ -12,7 +12,8 @@ RSpec.describe SolidusSubscriptions::ProcessInstallmentJob do end context 'when handling #perform errors' do - it 'by default logs exception data without raising exceptions' do + it 'by default logs exception data without raising exceptions' do # rubocop:disable RSpec/MultipleExpectations + installment = build_stubbed(:installment) checkout = instance_double(SolidusSubscriptions::Checkout).tap do |c| allow(c).to receive(:process).and_raise('test error') end @@ -20,9 +21,10 @@ RSpec.describe SolidusSubscriptions::ProcessInstallmentJob do allow(Rails.logger).to receive(:error) expect { - described_class.perform_now(build_stubbed(:installment)) + described_class.perform_now(installment) }.not_to raise_error + expect(Rails.logger).to have_received(:error).with("Error processing installment with ID=#{installment.id}:").ordered expect(Rails.logger).to have_received(:error).with("test error").ordered end |