diff options
author | Shinya Maeda <gitlab.shinyamaeda@gmail.com> | 2017-04-04 12:31:19 +0300 |
---|---|---|
committer | Shinya Maeda <gitlab.shinyamaeda@gmail.com> | 2017-04-06 17:46:58 +0300 |
commit | 27f981b2901098f894e587bbd96b09e2a0f0c404 (patch) | |
tree | eabe9c759495a1967f1b4c804a2c57ec11439846 | |
parent | f6be8c048555f2d1086e7beed336b6187edb4d58 (diff) |
Improve real_next_run. Improve triggers_helper_spec.
-rw-r--r-- | app/helpers/triggers_helper.rb | 16 | ||||
-rw-r--r-- | spec/helpers/triggers_helper_spec.rb | 27 |
2 files changed, 25 insertions, 18 deletions
diff --git a/app/helpers/triggers_helper.rb b/app/helpers/triggers_helper.rb index be5cce9aea0..932ba595b73 100644 --- a/app/helpers/triggers_helper.rb +++ b/app/helpers/triggers_helper.rb @@ -11,16 +11,10 @@ module TriggersHelper "#{Settings.gitlab.url}/api/v3/projects/#{service.project_id}/services/#{service.to_param}/trigger" end - def real_next_run(trigger_schedule, worker_cron: nil, worker_time_zone: nil) - worker_cron = Settings.cron_jobs['trigger_schedule_worker']['cron'] unless worker_cron.present? - worker_time_zone = Time.zone.name unless worker_time_zone.present? - - worker_next_time = Ci::CronParser.new(worker_cron, worker_time_zone).next_time_from(Time.now) - - if trigger_schedule.next_run_at > worker_next_time - trigger_schedule.next_run_at - else - worker_next_time - end + def real_next_run(trigger_schedule, + worker_cron: Settings.cron_jobs['trigger_schedule_worker']['cron'], + worker_time_zone: Time.zone.name) + Ci::CronParser.new(worker_cron, worker_time_zone) + .next_time_from(trigger_schedule.next_run_at) end end diff --git a/spec/helpers/triggers_helper_spec.rb b/spec/helpers/triggers_helper_spec.rb index d801760335b..61d233421b2 100644 --- a/spec/helpers/triggers_helper_spec.rb +++ b/spec/helpers/triggers_helper_spec.rb @@ -4,23 +4,36 @@ describe TriggersHelper do describe '#real_next_run' do let(:trigger_schedule) { create(:ci_trigger_schedule, cron: user_cron, cron_time_zone: 'UTC') } - subject { helper.real_next_run(trigger_schedule, worker_cron: worker_cron, worker_time_zone: 'UTC') } + subject { helper.real_next_run(trigger_schedule, arguments) } context 'when next_run_at > worker_next_time' do - let(:worker_cron) { '0 0 1 1 *' } # every 00:00, January 1st + let(:arguments) { { worker_cron: '0 0 1 1 *', worker_time_zone: 'UTC' } } # every 00:00, January 1st let(:user_cron) { '1 0 1 1 *' } # every 00:01, January 1st - it 'returns next_run_at' do - is_expected.to eq(trigger_schedule.next_run_at) + it 'returns nearest worker_next_time from next_run_at' do + is_expected.to eq(Ci::CronParser.new(arguments[:worker_cron], arguments[:worker_time_zone]) + .next_time_from(trigger_schedule.next_run_at)) end end context 'when worker_next_time > next_run_at' do - let(:worker_cron) { '1 0 1 1 *' } # every 00:01, January 1st + let(:arguments) { { worker_cron: '1 0 1 1 *', worker_time_zone: 'UTC' } } # every 00:01, January 1st let(:user_cron) { '0 0 1 1 *' } # every 00:00, January 1st - it 'returns worker_next_time' do - is_expected.to eq(Ci::CronParser.new(worker_cron, 'UTC').next_time_from(Time.now)) + it 'returns nearest worker_next_time from next_run_at' do + is_expected.to eq(Ci::CronParser.new(arguments[:worker_cron], arguments[:worker_time_zone]) + .next_time_from(trigger_schedule.next_run_at)) + end + end + + context 'when worker_cron and worker_time_zone are ommited' do + let(:arguments) { {} } + let(:user_cron) { '* * * * *' } # every minutes + + it 'returns nearest worker_next_time from next_run_at by server configuration' do + is_expected.to eq(Ci::CronParser.new(Settings.cron_jobs['trigger_schedule_worker']['cron'], + Time.zone.name) + .next_time_from(trigger_schedule.next_run_at)) end end end |