Sha256: bdaf1fd0cba1acee6d0e74c099ac196b74d20196bf0c79d37e83f3fd638146ef

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

require 'spec_helper'

describe Delayed::Heartbeat::DeleteWorkerResults do
  let(:worker) { create_worker(name: 'my-worker') }
  let(:job) { create_job(locked_by: worker.name) }
  let(:results) { create_results([worker], [job]) }

  describe "#workers" do
    specify { expect(results.workers).to eq [worker] }
  end

  describe "#unlocked_jobs" do
    specify { expect(results.unlocked_jobs).to eq [job] }
  end

  describe "#to_s" do
    it "includes workers" do
      results = create_results([worker], [])
      expect(results.to_s).to include(worker.name)
    end

    it "includes jobs for known workers" do
      results = create_results([worker], [job])
      expect(results.to_s).to include(job.id.to_s)
    end

    it "includes jobs locked by an unknown worker" do
      job = create_job(locked_by: 'unknown-worker')
      results = create_results([], [job])
      expect(results.to_s).to include(job.id.to_s)
      expect(results.to_s).to include(job.locked_by)
    end
  end

  def create_worker(attributes = {})
    Delayed::Heartbeat::Worker.create!(attributes)
  end

  def create_job(attributes = {})
    attributes = attributes.reverse_merge(payload_object: TestJob.new)
    Delayed::Job.create!(attributes)
  end

  def create_results(workers, unlocked_jobs)
    Delayed::Heartbeat::DeleteWorkerResults.new(workers, unlocked_jobs)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
delayed_job_heartbeat_plugin-0.1.0 spec/delayed/heartbeat/delete_worker_results_spec.rb