Sha256: 58750068188fe010635eb1b1efab10f0edcaec76fa424aa65fbbb9cd1473ceb5

Contents?: true

Size: 1.75 KB

Versions: 14

Compression:

Stored size: 1.75 KB

Contents

require 'spec_helper'

describe Vx::Worker::UpdateJobStatus do
  let(:exit_code)   { 0 }
  let(:app)         { ->(_) { exit_code } }
  let(:job)         { create :job }
  let(:env)         { OpenStruct.new job: job }
  let(:mid)         { described_class.new app }
  let(:messages)    { Vx::Worker::JobStatusConsumer.messages }

  subject { mid.call env }

  it "should delivery 2 messages" do
    expect {
      subject
    }.to change(messages, :size).by(2)
  end

  { 0 => 3, 1 => 4, -1 => 5 }.each do |code, status|
    context "when exit code is #{code}" do
      let(:exit_code) { code }
      it { should eq code }

      context "messages" do
        before { mid.call env }

        context "first" do
          subject { messages.first }
          it_should_behave_like "UpdateJobStatus message" do
            its(:status) { should eq 2 }
          end
        end

        context "last" do
          subject { messages.last }
          it_should_behave_like "UpdateJobStatus message" do
            its(:status) { should eq status }
          end
        end

      end
    end
  end

  context "when raise exception" do
    let(:app) { ->(_) { raise "Ignore Me" } }
    it { should eq(-1) }

    context "messages" do
      before { mid.call env }

      context "first" do
        subject { messages.first }
        it_should_behave_like "UpdateJobStatus message" do
          its(:status) { should eq 2 }
        end
      end

      context "last" do
        subject { messages.last }
        it_should_behave_like "UpdateJobStatus message" do
          its(:status) { should eq 5 }
        end
      end
    end

    context "Timeout::Error" do
      let(:app) { ->(_) { raise Timeout::Error.new("Timeout Ignore Me") } }

      it { should eq(-1) }
    end
  end

end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
vx-worker-0.3.0.pre1 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.3.0.pre0 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.1 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.0.pre38 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.0.pre37 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.0.pre36 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.0.pre35 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.0.pre34 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.0.pre33 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.0.pre32 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.0.pre31 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.0.pre30 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.0.pre29 spec/lib/worker/middlewares/update_job_status_spec.rb
vx-worker-0.2.0.pre28 spec/lib/worker/middlewares/update_job_status_spec.rb