refator test
This commit is contained in:
parent
f56235c7ee
commit
05e9130634
1 changed files with 22 additions and 31 deletions
|
@ -1,46 +1,37 @@
|
||||||
include ActiveJob::TestHelper
|
include ActiveJob::TestHelper
|
||||||
|
|
||||||
RSpec.describe ApiEntreprise::Job, type: :job do
|
RSpec.describe ApiEntreprise::Job, type: :job do
|
||||||
# https://api.rubyonrails.org/classes/ActiveJob/Exceptions/ClassMethods.html#method-i-retry_on
|
# https://api.rubyonrails.org/classes/ActiveJob/Exceptions/ClassMethods.html
|
||||||
context 'when an exception is raised' do
|
# #method-i-retry_on
|
||||||
subject do
|
describe '#perform' do
|
||||||
assert_performed_jobs(try) do
|
context 'when a un retryable error is raised' do
|
||||||
ExceptionJob.perform_later(error) rescue StandardError
|
let(:errors) { [:standard_error] }
|
||||||
|
|
||||||
|
it 'does not retry' do
|
||||||
|
ensure_errors_force_n_retry(errors, 1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when it is a service_unavaible' do
|
context 'when a retryable error is raised' do
|
||||||
let(:error) { :standard_error }
|
let(:errors) { [:service_unavaible, :bad_gateway, :timed_out] }
|
||||||
let(:try) { 1 }
|
|
||||||
|
|
||||||
it { subject }
|
it 'retries 5 times' do
|
||||||
|
ensure_errors_force_n_retry(errors, 5)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when it is a service_unavaible' do
|
def ensure_errors_force_n_retry(errors, retry_nb)
|
||||||
let(:error) { :service_unavaible }
|
errors.each do |error|
|
||||||
let(:try) { 5 }
|
assert_performed_jobs(retry_nb) do
|
||||||
|
ErrorJob.perform_later(error) rescue StandardError
|
||||||
it { subject }
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when it is a bad gateway' do
|
|
||||||
let(:error) { :bad_gateway }
|
|
||||||
let(:try) { 5 }
|
|
||||||
|
|
||||||
it { subject }
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when it is timed out' do
|
|
||||||
let(:error) { :timed_out }
|
|
||||||
let(:try) { 5 }
|
|
||||||
|
|
||||||
it { subject }
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class ExceptionJob < ApiEntreprise::Job
|
class ErrorJob < ApiEntreprise::Job
|
||||||
def perform(exception)
|
def perform(error)
|
||||||
case exception
|
case error
|
||||||
when :service_unavaible
|
when :service_unavaible
|
||||||
raise ApiEntreprise::API::ServiceUnavailable
|
raise ApiEntreprise::API::ServiceUnavailable
|
||||||
when :bad_gateway
|
when :bad_gateway
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue