Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <gitlab.shinyamaeda@gmail.com>2017-04-04 12:31:19 +0300
committerShinya Maeda <gitlab.shinyamaeda@gmail.com>2017-04-06 17:46:58 +0300
commit27f981b2901098f894e587bbd96b09e2a0f0c404 (patch)
treeeabe9c759495a1967f1b4c804a2c57ec11439846
parentf6be8c048555f2d1086e7beed336b6187edb4d58 (diff)
Improve real_next_run. Improve triggers_helper_spec.
-rw-r--r--app/helpers/triggers_helper.rb16
-rw-r--r--spec/helpers/triggers_helper_spec.rb27
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