Remove triggers_helper. Add trigger_schedule_presenter.

This commit is contained in:
Shinya Maeda 2017-04-04 23:43:09 +09:00
parent 4a5c6a8e29
commit f229290ac8
4 changed files with 39 additions and 10 deletions

View File

@ -10,11 +10,4 @@ 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: Settings.cron_jobs['trigger_schedule_worker']['cron'],
worker_time_zone: Time.zone.name)
Gitlab::Ci::CronParser.new(worker_cron, worker_time_zone)
.next_time_from(trigger_schedule.next_run_at)
end
end

View File

@ -2,6 +2,7 @@ module Ci
class TriggerSchedule < ActiveRecord::Base
extend Ci::Model
include Importable
include Presentable
acts_as_paranoid

View File

@ -0,0 +1,11 @@
module Ci
class TriggerSchedulePresenter < Gitlab::View::Presenter::Delegated
presents :trigger_schedule
def real_next_run(worker_cron: Settings.cron_jobs['trigger_schedule_worker']['cron'],
worker_time_zone: Time.zone.name)
Gitlab::Ci::CronParser.new(worker_cron, worker_time_zone)
.next_time_from(next_run_at)
end
end
end

View File

@ -1,10 +1,34 @@
require 'rails_helper'
require 'spec_helper'
describe Ci::TriggerSchedulePresenter do
let(:trigger_schedule) { create(:ci_trigger_schedule) }
subject(:presenter) do
described_class.new(trigger_schedule)
end
it 'inherits from Gitlab::View::Presenter::Delegated' do
expect(described_class.superclass).to eq(Gitlab::View::Presenter::Delegated)
end
describe '#initialize' do
it 'takes a trigger_schedule and optional params' do
expect { presenter }.not_to raise_error
end
it 'exposes trigger_schedule' do
expect(presenter.trigger_schedule).to eq(trigger_schedule)
end
it 'forwards missing methods to trigger_schedule' do
expect(presenter.ref).to eq('master')
end
end
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, arguments) }
subject { described_class.new(trigger_schedule).real_next_run(arguments) }
context 'when next_run_at > worker_next_time' do
let(:arguments) { { worker_cron: '0 0 1 1 *', worker_time_zone: 'UTC' } } # every 00:00, January 1st