refator test

This commit is contained in:
simon lehericey 2020-12-03 11:17:27 +01:00
parent f56235c7ee
commit 05e9130634

View file

@ -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