Sha256: a41556df5436ca5eb55b38de799be765c409ebba7e7f99ace62730de34ef2bd3

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

require 'spec_helper'

describe SuckerPunch::Queue do
  before :each do
    class ::FakeJob
      include SuckerPunch::Job

      def perform(name)
        "response #{name}"
      end
    end
  end

  after :each do
    Celluloid::Actor.clear_registry
  end

  describe ".find" do
    it "returns the Celluloid Actor from the registry" do
      SuckerPunch::Queue.new(FakeJob).register
      queue = SuckerPunch::Queue.find(FakeJob)
      expect(queue.class).to eq Celluloid::Supervision::Container::Pool
    end
  end

  describe "#register" do
    let(:job) { FakeJob }
    let(:queue) { SuckerPunch::Queue.new(job) }

    it "initializes and registers the pool with Celluloid" do
      expected_pool_name = "#{SuckerPunch::Queue::PREFIX}_fake_job".to_sym

      pool = queue.register

      expect(Celluloid::Actor[expected_pool_name]).to eq(pool)
    end

    it "registers the pool with Celluloid and 3 workers" do
      expected_pool_name = "#{SuckerPunch::Queue::PREFIX}_fake_job"

      queue.register(3)

      expect(Celluloid::Actor[expected_pool_name].size).to eq(3)
    end

    context "when too many workers are specified" do
      it "raises a MaxWorkersExceeded exception" do
        expect{ queue.register(201) }.to raise_error(SuckerPunch::Queue::MaxWorkersExceeded)
      end
    end

    context "when too few workers are specified" do
      it "raises a NotEnoughWorkers exception" do
        expect{ queue.register(0) }.to raise_error(SuckerPunch::Queue::NotEnoughWorkers)
      end
    end
  end

  describe "#registered?" do
    it "returns true if queue has already been registered" do
      queue = SuckerPunch::Queue.new(FakeJob)

      expect{
        queue.register
      }.to change{ queue.registered? }.from(false).to(true)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sucker_punch-1.6.0 spec/sucker_punch/queue_spec.rb