Move real_next_run to helper
This commit is contained in:
parent
5720919cd0
commit
21cabf381b
4 changed files with 40 additions and 37 deletions
|
@ -10,4 +10,17 @@ module TriggersHelper
|
|||
def service_trigger_url(service)
|
||||
"#{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
|
||||
end
|
||||
end
|
||||
|
|
|
@ -25,19 +25,6 @@ module Ci
|
|||
end
|
||||
end
|
||||
|
||||
def real_next_run(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 next_run_at > worker_next_time
|
||||
next_run_at
|
||||
else
|
||||
worker_next_time
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def less_than_1_hour_from_now?(time)
|
||||
|
|
27
spec/helpers/triggers_helper_spec.rb
Normal file
27
spec/helpers/triggers_helper_spec.rb
Normal file
|
@ -0,0 +1,27 @@
|
|||
require 'rails_helper'
|
||||
|
||||
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') }
|
||||
|
||||
context 'when next_run_at > worker_next_time' do
|
||||
let(:worker_cron) { '* * * * *' } # every minutes
|
||||
let(:user_cron) { '0 0 1 1 *' } # every 00:00, January 1st
|
||||
|
||||
it 'returns next_run_at' do
|
||||
is_expected.to eq(trigger_schedule.next_run_at)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when worker_next_time > next_run_at' do
|
||||
let(:worker_cron) { '0 0 1 1 *' } # every 00:00, January 1st
|
||||
let(:user_cron) { '0 */6 * * *' } # each six hours
|
||||
|
||||
it 'returns worker_next_time' do
|
||||
is_expected.to eq(Ci::CronParser.new(worker_cron, 'UTC').next_time_from(Time.now))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -54,28 +54,4 @@ describe Ci::TriggerSchedule, models: true do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#real_next_run' do
|
||||
let(:trigger_schedule) { create(:ci_trigger_schedule, cron: user_cron, cron_time_zone: 'UTC') }
|
||||
|
||||
subject { trigger_schedule.real_next_run(worker_cron: worker_cron, worker_time_zone: 'UTC') }
|
||||
|
||||
context 'when next_run_at > worker_next_time' do
|
||||
let(:worker_cron) { '* * * * *' } # every minutes
|
||||
let(:user_cron) { '0 0 1 1 *' } # every 00:00, January 1st
|
||||
|
||||
it 'returns next_run_at' do
|
||||
is_expected.to eq(trigger_schedule.next_run_at)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when worker_next_time > next_run_at' do
|
||||
let(:worker_cron) { '0 0 1 1 *' } # every 00:00, January 1st
|
||||
let(:user_cron) { '0 */6 * * *' } # each six hours
|
||||
|
||||
it 'returns worker_next_time' do
|
||||
is_expected.to eq(Ci::CronParser.new(worker_cron, 'UTC').next_time_from(Time.now))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue