fluke/devops-service/spec/executors/expiration_scheduler_spec.rb

47 lines
1.3 KiB
Ruby

require 'lib/executors/expiration_scheduler'
RSpec.describe Devops::Executor::ExpirationScheduler do
let(:server) { build(:server) }
describe '#schedule_expiration!' do
it 'schedules server deleting at given time' do
expect(DeleteExpiredServerWorker).to receive(:perform_in).with(120, server_chef_node_name: 'chef_node_name')
described_class.new('2m', server).schedule_expiration!
end
it "doesn't schedule job if expires is nil" do
expect(DeleteExpiredServerWorker).not_to receive(:perform_in)
described_class.new(nil, server).schedule_expiration!
end
end
describe '#interval_in_seconds' do
def interval_in_seconds(expires)
described_class.new(expires, server).interval_in_seconds
end
it 'recognizes seconds' do
expect(interval_in_seconds('2s')).to eq 2
end
it 'recognizes minutes' do
expect(interval_in_seconds('3m')).to eq 180
end
it 'recognizes hours' do
expect(interval_in_seconds('1h')).to eq 3600
end
it 'recognizes days' do
expect(interval_in_seconds('1d')).to eq 86400
end
it 'recognizes weeks' do
expect(interval_in_seconds('1w')).to eq 604800
end
it 'raises on wrong format' do
expect { interval_in_seconds('wrong') }.to raise_error(StandardError)
end
end
end