require 'job_uniqueness/spec_helper' RSpec.describe CanvasSync::JobUniqueness::OnConflict::Reschedule do include_context "on_conflict specs" include_examples "OnConflict is compatible with", %i[while_executing] it "calls reenqueue" do expect(lock_context).to receive(:reenqueue) do |*args, **kwargs| expect(Thread.current[:unique_jobs_previous_context]).to be_present end on_conflict.call end it "reschedules successfully" do TestWorker.unique_job_options.merge!({ strategy: :until_and_while_executing, on_conflict: { enqueue: :raise, perform: :reschedule }}) lock_context.handle_lifecycle!(:enqueue) {} lock_context.handle_lifecycle!(:perform) {} lock_context2 = CanvasSync::JobUniqueness::Compat::Sidekiq::SidekiqLockContext.new({ jid: 'j2', queue: 'default', job_clazz: 'TestWorker'}, job_instance: {}) lock_context2.handle_lifecycle!(:enqueue) {} lock_context2.handle_lifecycle!(:perform) {} end end