gitlab-org--gitlab-foss/spec/models/ci/trigger_schedule_spec.rb

56 lines
1.6 KiB
Ruby
Raw Normal View History

require 'spec_helper'
describe Ci::TriggerSchedule, models: true do
2017-03-30 14:16:24 -04:00
it { is_expected.to belong_to(:project) }
it { is_expected.to belong_to(:trigger) }
it { is_expected.to respond_to :ref }
2017-03-31 10:18:07 -04:00
it 'should validate ref existence' do
2017-03-31 06:08:39 -04:00
trigger_schedule = create(:ci_trigger_schedule, :cron_nightly_build)
2017-03-31 10:18:07 -04:00
trigger_schedule.trigger.ref = 'invalid-ref'
2017-03-31 06:08:39 -04:00
trigger_schedule.valid?
2017-03-31 10:18:07 -04:00
expect(trigger_schedule.errors[:ref].first).to include('does not exist')
end
describe 'cron limitation' do
let(:trigger_schedule) { create(:ci_trigger_schedule, :cron_nightly_build) }
before do
trigger_schedule.cron = cron
trigger_schedule.valid?
end
context 'when every hour' do
let(:cron) { '0 * * * *' } # 00:00, 01:00, 02:00, ..., 23:00
2017-03-31 13:02:26 -04:00
it 'gets an error' do
2017-03-31 10:18:07 -04:00
expect(trigger_schedule.errors[:cron].first).to include('can not be less than 1 hour')
end
end
context 'when each six hours' do
let(:cron) { '0 */6 * * *' } # 00:00, 06:00, 12:00, 18:00
2017-03-31 13:02:26 -04:00
it 'gets no errors' do
2017-03-31 10:18:07 -04:00
expect(trigger_schedule.errors[:cron]).to be_empty
end
end
2017-03-31 06:08:39 -04:00
end
2017-03-31 06:08:39 -04:00
describe '#schedule_next_run!' do
context 'when more_than_1_hour_from_now' do
let(:trigger_schedule) { create(:ci_trigger_schedule, :cron_nightly_build) }
2017-03-31 06:08:39 -04:00
before do
trigger_schedule.schedule_next_run!
end
it 'updates next_run_at' do
next_time = Ci::CronParser.new(trigger_schedule.cron, trigger_schedule.cron_time_zone).next_time_from(Time.now)
expect(Ci::TriggerSchedule.last.next_run_at).to eq(next_time)
end
end
end
end