47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			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(DeleteServerWorker).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(DeleteServerWorker).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 |