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(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 | 
