require 'job_uniqueness/spec_helper' RSpec.describe CanvasSync::JobUniqueness::Strategy::WhileExecuting do include_context 'lock strategy specs', strategy: :while_executing include_examples "a lock implementation" describe "#on_enqueue" do it "does not lock jobs" do expect(process_one.on_enqueue {}) expect(process_one).not_to be_locked expect(process_two.on_enqueue {}) expect(process_two).not_to be_locked end end describe "#on_perform" do it "locks the process" do process_one.on_perform do expect(process_one).to be_locked end end it "prevents other processes from executing" do process_one.on_perform do expect do process_two.on_perform { } end.to raise_error(CanvasSync::JobUniqueness::CouldNotLockError) end end end end