summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberto Vena <kennyadsl@gmail.com>2021-07-12 17:04:48 +0200
committerAlberto Vena <kennyadsl@gmail.com>2021-07-13 16:23:34 +0200
commit0317e228bc79c13667940203add35fa13fac21f1 (patch)
treee7e511496ad1bb7b0b0d32607cf634332192d69b
parentc9e26197b0abbe50b029c368017243314d572884 (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.
-rw-r--r--app/jobs/solidus_subscriptions/process_installment_job.rb2
-rw-r--r--lib/solidus_subscriptions/processing_error_handlers/rails_logger.rb12
-rw-r--r--spec/jobs/solidus_subscriptions/process_installment_job_spec.rb6
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