diff options
Diffstat (limited to 'spec/services/ci/create_cross_project_pipeline_service_spec.rb')
-rw-r--r-- | spec/services/ci/create_cross_project_pipeline_service_spec.rb | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/spec/services/ci/create_cross_project_pipeline_service_spec.rb b/spec/services/ci/create_cross_project_pipeline_service_spec.rb index 51cf18f8d87..09d44bcea0a 100644 --- a/spec/services/ci/create_cross_project_pipeline_service_spec.rb +++ b/spec/services/ci/create_cross_project_pipeline_service_spec.rb @@ -109,7 +109,7 @@ describe Ci::CreateCrossProjectPipelineService, '#execute' do expect(pipeline.source_bridge).to be_a ::Ci::Bridge end - it 'updates bridge status when downstream pipeline gets proceesed' do + it 'updates bridge status when downstream pipeline gets processed' do pipeline = service.execute(bridge) expect(pipeline.reload).to be_pending @@ -128,6 +128,37 @@ describe Ci::CreateCrossProjectPipelineService, '#execute' do end end + context 'when downstream pipeline has yaml configuration error' do + before do + stub_ci_pipeline_yaml_file(YAML.dump(job: { invalid: 'yaml' })) + end + + it 'creates only one new pipeline' do + expect { service.execute(bridge) } + .to change { Ci::Pipeline.count }.by(1) + end + + it 'creates a new pipeline in a downstream project' do + pipeline = service.execute(bridge) + + expect(pipeline.user).to eq bridge.user + expect(pipeline.project).to eq downstream_project + expect(bridge.sourced_pipelines.first.pipeline).to eq pipeline + expect(pipeline.triggered_by_pipeline).to eq upstream_pipeline + expect(pipeline.source_bridge).to eq bridge + expect(pipeline.source_bridge).to be_a ::Ci::Bridge + end + + it 'does not update bridge status when downstream pipeline gets processed' do + pipeline = service.execute(bridge) + + expect(pipeline.reload).to be_failed + # TODO: This should change to failed once #198354 gets fixed. + # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25706 + expect(bridge.reload).to be_pending + end + end + context 'when downstream project is the same as the job project' do let(:trigger) do { trigger: { project: upstream_project.full_path } } @@ -173,7 +204,7 @@ describe Ci::CreateCrossProjectPipelineService, '#execute' do expect(pipeline.source_bridge).to be_a ::Ci::Bridge end - it 'updates bridge status when downstream pipeline gets proceesed' do + it 'updates bridge status when downstream pipeline gets processed' do pipeline = service.execute(bridge) expect(pipeline.reload).to be_pending |