Sha256: 25cb03bcabfbf6bed6dd49614662db57e5387c57923b3ad67e93cab193113d4f

Contents?: true

Size: 1.25 KB

Versions: 5

Compression:

Stored size: 1.25 KB

Contents

require 'spec_helper'
require 'json'

describe QueueBus::Worker do
  it "proxies to given class" do
    hash = {"bus_class_proxy" => "QueueBus::Driver", "ok" => true}
    expect(QueueBus::Driver).to receive(:perform).with(hash)
    QueueBus::Worker.perform(JSON.generate(hash))
  end

  it "uses an instance" do
    hash = {"bus_class_proxy" => "QueueBus::Rider", "ok" => true}
    expect(QueueBus::Rider).to receive(:perform).with(hash)
    QueueBus::Worker.new.perform(JSON.generate(hash))
  end

  it "does not freak out if class not there anymore" do
    hash = {"bus_class_proxy" => "QueueBus::BadClass", "ok" => true}
    expect {
      QueueBus::Worker.perform(JSON.generate(hash))
    }.not_to raise_error
  end

  it "raises error if proxy raises error" do
    hash = {"bus_class_proxy" => "QueueBus::Rider", "ok" => true}
    expect(QueueBus::Rider).to receive(:perform).with(hash).and_raise("rider crash")
    expect {
      QueueBus::Worker.perform(JSON.generate(hash))
    }.to raise_error(RuntimeError, 'rider crash')
  end

  it "runs the middleware stack" do
    hash = {"bus_class_proxy" => "QueueBus::Driver", "ok" => true}
    expect(QueueBus.worker_middleware_stack).to receive(:run).with(hash).and_yield
    QueueBus::Worker.perform(JSON.generate(hash))
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
queue-bus-0.9.0 spec/worker_spec.rb
queue-bus-0.8.1 spec/worker_spec.rb
queue-bus-0.8.0 spec/worker_spec.rb
queue-bus-0.7.0 spec/worker_spec.rb
queue-bus-0.6.0 spec/worker_spec.rb