From 8e7f19c60bea4eec86844be1e0db12ebf30f105e Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Sat, 2 Dec 2017 22:55:49 -0800 Subject: Add button to run scheduled pipeline immediately Closes #38741 --- spec/workers/run_pipeline_schedule_worker_spec.rb | 36 +++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 spec/workers/run_pipeline_schedule_worker_spec.rb (limited to 'spec/workers/run_pipeline_schedule_worker_spec.rb') diff --git a/spec/workers/run_pipeline_schedule_worker_spec.rb b/spec/workers/run_pipeline_schedule_worker_spec.rb new file mode 100644 index 00000000000..4a88ac51f62 --- /dev/null +++ b/spec/workers/run_pipeline_schedule_worker_spec.rb @@ -0,0 +1,36 @@ +require 'spec_helper' + +describe RunPipelineScheduleWorker do + describe '#perform' do + let(:project) { create(:project) } + let(:worker) { described_class.new } + let(:user) { create(:user) } + let(:pipeline_schedule) { create(:ci_pipeline_schedule, :nightly, project: project ) } + + context 'when a project not found' do + it 'does not call the Service' do + expect(Ci::CreatePipelineService).not_to receive(:new) + expect { worker.perform(100000, user.id) }.to raise_error(ActiveRecord::RecordNotFound) + end + end + + context 'when a user not found' do + it 'does not call the Service' do + expect(Ci::CreatePipelineService).not_to receive(:new) + expect { worker.perform(pipeline_schedule.id, 10000) }.to raise_error(ActiveRecord::RecordNotFound) + end + end + + context 'when everything is ok' do + let(:project) { create(:project) } + let(:create_pipeline_service) { instance_double(Ci::CreatePipelineService) } + + it 'calls the Service' do + expect(Ci::CreatePipelineService).to receive(:new).with(project, user, ref: pipeline_schedule.ref).and_return(create_pipeline_service) + expect(create_pipeline_service).to receive(:execute).with(:schedule, ignore_skip_ci: true, save_on_errors: false, schedule: pipeline_schedule) + + worker.perform(pipeline_schedule.id, user.id) + end + end + end +end -- cgit v1.2.3