Last active
March 12, 2025 21:24
Revisions
-
ChuckJHardy revised this gist
Mar 11, 2017 . 1 changed file with 14 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -46,4 +46,18 @@ def perform(*args) clear_enqueued_jobs clear_performed_jobs end end # As of RSpec 3.4.0 we now have #have_enqueued_job # https://www.relishapp.com/rspec/rspec-rails/v/3-5/docs/matchers/have-enqueued-job-matcher RSpec.describe MyJob, type: :job do subject(:job) { described_class.perform_later(key) } let(:key) { 123 } it 'queues the job' do expect { job }.to have_enqueued_job(described_class) .with(key) .on_queue("urgent") end end -
ChuckJHardy revised this gist
Jun 22, 2015 . 1 changed file with 2 additions and 28 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,14 +1,8 @@ class MyJob < ActiveJob::Base queue_as :urgent rescue_from(NoResultsError) do retry_job wait: 5.minutes, queue: :default end def perform(*args) @@ -37,32 +31,12 @@ def perform(*args) perform_enqueued_jobs { job } end it 'handles no results error' do allow(MyService).to receive(:call).and_raise(NoResultsError) perform_enqueued_jobs do expect_any_instance_of(MyJob) .to receive(:retry_job).with(wait: 10.minutes, queue: :default) job end -
ChuckJHardy created this gist
Jun 22, 2015 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,75 @@ class MyJob < ActiveJob::Base queue_as :urgent rescue_from(UnauthorizedError) {} rescue_from(ExternalAPIError) do retry_job wait: 10.minutes, queue: :low_priority end rescue_from(NoResultsError) do retry_job wait: 5.minutes, queue: :medium_priority end def perform(*args) MyService.call(*args) end end require 'rails_helper' RSpec.describe MyJob, type: :job do include ActiveJob::TestHelper subject(:job) { described_class.perform_later(123) } it 'queues the job' do expect { job } .to change(ActiveJob::Base.queue_adapter.enqueued_jobs, :size).by(1) end it 'is in urgent queue' do expect(MyJob.new.queue_name).to eq('urgent') end it 'executes perform' do expect(MyService).to receive(:call).with(123) perform_enqueued_jobs { job } end it 'handles no unauthorised error' do allow(MyService).to receive(:call).and_raise(UnauthorizedError) perform_enqueued_jobs do expect_any_instance_of(MyJob).to_not receive(:retry_job) job end end it 'handles no external api error' do allow(MyService).to receive(:call).and_raise(ExternalAPIError) perform_enqueued_jobs do expect_any_instance_of(MyJob) .to receive(:retry_job).with(wait: 10.minutes, queue: :low_priority) job end end it 'handles no results error' do allow(MyService).to receive(:call).and_raise(NoResultsError) perform_enqueued_jobs do expect_any_instance_of(MyJob) .to receive(:retry_job).with(wait: 10.minutes, queue: :medium_priority) job end end after do clear_enqueued_jobs clear_performed_jobs end end