fluke/devops-service/spec/executors/helpers/job_waiter_spec.rb
2016-03-30 12:57:24 +03:00

36 lines
1.1 KiB
Ruby

require 'lib/helpers/job_waiter'
require "db/mongo/models/report"
module Devops::Helpers
RSpec.describe JobWaiter, stubbed_connector: true do
let(:job_waiter) { described_class.new('job_id') }
let(:report) { build(:report) }
before do
allow(stubbed_connector).to receive(:report) { report }
allow(job_waiter).to receive(:sleep)
end
it 'it returns 0 when job become completed' do
allow(report).to receive(:status) { 'completed' }
expect(job_waiter.wait).to eq 0
end
it 'returns error code when job failes' do
allow(report).to receive(:status) { 'failed' }
allow(report).to receive(:job_result_code) { 1 }
expect(job_waiter.wait).to eq 1
end
it 'sleeps until something happens' do
allow(report).to receive(:status).and_return('running', 'running', 'running', 'completed')
expect(job_waiter).to receive(:sleep).exactly(4).times
job_waiter.wait
end
it 'raises JobWaiter::TimeoutReached if nothing happens for too long' do
allow(report).to receive(:status) { 'running' }
expect { job_waiter.wait }.to raise_error(JobWaiter::TimeoutReached)
end
end
end