Sha256: 741c5aa574e13b19724fac5875ed81b95fc985c4d6f794eb2fd6801b25c59092

Contents?: true

Size: 1.74 KB

Versions: 4

Compression:

Stored size: 1.74 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

  describe "#find" do
    it "returns the Celluloid Actor from the registry" do
      SuckerPunch::Queue.new(FakeJob).register
      queue = SuckerPunch::Queue.find(FakeJob)
      queue.class == Celluloid::PoolManager
    end
  end

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

    it "initializes a celluloid pool" do
      queue.register
      expect(queue.pool.class).to eq(Celluloid::PoolManager)
    end

    it "registers the pool with Celluloid" do
      pool = queue.register
      expect(Celluloid::Actor[:fake_job]).to eq(pool)
    end

    it "registers the pool with Celluloid" do
      pool = queue.register(3)
      expect(Celluloid::Actor[:fake_job].size).to eq(3)
    end

    it "registers with master list of queues" do
      queue.register
      queues = SuckerPunch::Queues.all
      expect(queues.size).to be(1)
    end

    context "when too many workers are specified" do
      it "raises a MaxWorkersExceeded exception" do
        expect{ queue.register(101) }.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

4 entries across 4 versions & 1 rubygems

Version Path
sucker_punch-1.0.2 spec/sucker_punch/queue_spec.rb
sucker_punch-1.0.1 spec/sucker_punch/queue_spec.rb
sucker_punch-1.0.0 spec/sucker_punch/queue_spec.rb
sucker_punch-1.0.0.beta3 spec/sucker_punch/queue_spec.rb