diff options
Diffstat (limited to 'spec/models/ci/pipeline_spec.rb')
-rw-r--r-- | spec/models/ci/pipeline_spec.rb | 87 |
1 files changed, 61 insertions, 26 deletions
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index ee400bec04b..d0b42d103a5 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -80,11 +80,11 @@ describe Ci::Pipeline, :mailer do context 'when merge request pipelines exist' do let!(:merge_request_pipeline_1) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request) end let!(:merge_request_pipeline_2) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request) end let(:merge_request) do @@ -106,11 +106,11 @@ describe Ci::Pipeline, :mailer do let!(:branch_pipeline_2) { create(:ci_pipeline, source: :push) } let!(:merge_request_pipeline_1) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request) end let!(:merge_request_pipeline_2) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request) end let(:merge_request) do @@ -134,7 +134,7 @@ describe Ci::Pipeline, :mailer do subject { described_class.detached_merge_request_pipelines(merge_request) } let!(:pipeline) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request, target_sha: target_sha) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, target_sha: target_sha) end let(:merge_request) { create(:merge_request) } @@ -157,7 +157,7 @@ describe Ci::Pipeline, :mailer do subject { pipeline.detached_merge_request_pipeline? } let!(:pipeline) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request, target_sha: target_sha) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, target_sha: target_sha) end let(:merge_request) { create(:merge_request) } @@ -176,7 +176,7 @@ describe Ci::Pipeline, :mailer do subject { described_class.merge_request_pipelines(merge_request) } let!(:pipeline) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request, target_sha: target_sha) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, target_sha: target_sha) end let(:merge_request) { create(:merge_request) } @@ -199,7 +199,7 @@ describe Ci::Pipeline, :mailer do subject { pipeline.merge_request_pipeline? } let!(:pipeline) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request, target_sha: target_sha) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, target_sha: target_sha) end let(:merge_request) { create(:merge_request) } @@ -218,7 +218,7 @@ describe Ci::Pipeline, :mailer do subject { described_class.mergeable_merge_request_pipelines(merge_request) } let!(:pipeline) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request, target_sha: target_sha) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, target_sha: target_sha) end let(:merge_request) { create(:merge_request) } @@ -241,7 +241,7 @@ describe Ci::Pipeline, :mailer do subject { pipeline.mergeable_merge_request_pipeline? } let!(:pipeline) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request, target_sha: target_sha) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, target_sha: target_sha) end let(:merge_request) { create(:merge_request) } @@ -256,11 +256,11 @@ describe Ci::Pipeline, :mailer do end end - describe '.merge_request' do - subject { described_class.merge_request } + describe '.merge_request_event' do + subject { described_class.merge_request_event } context 'when there is a merge request pipeline' do - let!(:pipeline) { create(:ci_pipeline, source: :merge_request, merge_request: merge_request) } + let!(:pipeline) { create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request) } let(:merge_request) { create(:merge_request) } it 'returns merge request pipeline first' do @@ -281,7 +281,7 @@ describe Ci::Pipeline, :mailer do let(:pipeline) { build(:ci_pipeline, source: source, merge_request: merge_request) } context 'when source is merge request' do - let(:source) { :merge_request } + let(:source) { :merge_request_event } context 'when merge request is specified' do let(:merge_request) { create(:merge_request, source_project: project, source_branch: 'feature', target_project: project, target_branch: 'master') } @@ -505,7 +505,7 @@ describe Ci::Pipeline, :mailer do context 'when source is merge request' do let(:pipeline) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request) end let(:merge_request) do @@ -513,9 +513,16 @@ describe Ci::Pipeline, :mailer do source_project: project, source_branch: 'feature', target_project: project, - target_branch: 'master') + target_branch: 'master', + assignee: assignee, + milestone: milestone, + labels: labels) end + let(:assignee) { create(:user) } + let(:milestone) { create(:milestone, project: project) } + let(:labels) { create_list(:label, 2) } + it 'exposes merge request pipeline variables' do expect(subject.to_hash) .to include( @@ -531,7 +538,11 @@ describe Ci::Pipeline, :mailer do 'CI_MERGE_REQUEST_SOURCE_PROJECT_PATH' => merge_request.source_project.full_path, 'CI_MERGE_REQUEST_SOURCE_PROJECT_URL' => merge_request.source_project.web_url, 'CI_MERGE_REQUEST_SOURCE_BRANCH_NAME' => merge_request.source_branch.to_s, - 'CI_MERGE_REQUEST_SOURCE_BRANCH_SHA' => pipeline.source_sha.to_s) + 'CI_MERGE_REQUEST_SOURCE_BRANCH_SHA' => pipeline.source_sha.to_s, + 'CI_MERGE_REQUEST_TITLE' => merge_request.title, + 'CI_MERGE_REQUEST_ASSIGNEES' => assignee.username, + 'CI_MERGE_REQUEST_MILESTONE' => milestone.title, + 'CI_MERGE_REQUEST_LABELS' => labels.map(&:title).join(',')) end context 'when source project does not exist' do @@ -547,6 +558,30 @@ describe Ci::Pipeline, :mailer do CI_MERGE_REQUEST_SOURCE_BRANCH_NAME]) end end + + context 'without assignee' do + let(:assignee) { nil } + + it 'does not expose assignee variable' do + expect(subject.to_hash.keys).not_to include('CI_MERGE_REQUEST_ASSIGNEES') + end + end + + context 'without milestone' do + let(:milestone) { nil } + + it 'does not expose milestone variable' do + expect(subject.to_hash.keys).not_to include('CI_MERGE_REQUEST_MILESTONE') + end + end + + context 'without labels' do + let(:labels) { [] } + + it 'does not expose labels variable' do + expect(subject.to_hash.keys).not_to include('CI_MERGE_REQUEST_LABELS') + end + end end end @@ -1097,7 +1132,7 @@ describe Ci::Pipeline, :mailer do context 'when source is merge request' do let(:pipeline) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request) end let(:merge_request) do @@ -1147,7 +1182,7 @@ describe Ci::Pipeline, :mailer do context 'when ref is merge request' do let(:pipeline) do create(:ci_pipeline, - source: :merge_request, + source: :merge_request_event, merge_request: merge_request) end @@ -1310,7 +1345,7 @@ describe Ci::Pipeline, :mailer do context 'when source is merge request' do let(:pipeline) do - create(:ci_pipeline, source: :merge_request, merge_request: merge_request) + create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request) end let(:merge_request) do @@ -2217,7 +2252,7 @@ describe Ci::Pipeline, :mailer do end end - describe "#merge_requests" do + describe "#merge_requests_as_head_pipeline" do let(:project) { create(:project) } let(:pipeline) { create(:ci_empty_pipeline, status: 'created', project: project, ref: 'master', sha: 'a288a022a53a5a944fae87bcec6efc87b7061808') } @@ -2225,20 +2260,20 @@ describe Ci::Pipeline, :mailer do allow_any_instance_of(MergeRequest).to receive(:diff_head_sha) { 'a288a022a53a5a944fae87bcec6efc87b7061808' } merge_request = create(:merge_request, source_project: project, head_pipeline: pipeline, source_branch: pipeline.ref) - expect(pipeline.merge_requests).to eq([merge_request]) + expect(pipeline.merge_requests_as_head_pipeline).to eq([merge_request]) end it "doesn't return merge requests whose source branch doesn't match the pipeline's ref" do create(:merge_request, source_project: project, source_branch: 'feature', target_branch: 'master') - expect(pipeline.merge_requests).to be_empty + expect(pipeline.merge_requests_as_head_pipeline).to be_empty end it "doesn't return merge requests whose `diff_head_sha` doesn't match the pipeline's SHA" do create(:merge_request, source_project: project, source_branch: pipeline.ref) allow_any_instance_of(MergeRequest).to receive(:diff_head_sha) { '97de212e80737a608d939f648d959671fb0a0142b' } - expect(pipeline.merge_requests).to be_empty + expect(pipeline.merge_requests_as_head_pipeline).to be_empty end end @@ -2266,7 +2301,7 @@ describe Ci::Pipeline, :mailer do let!(:pipeline) do create(:ci_pipeline, - source: :merge_request, + source: :merge_request_event, project: pipeline_project, ref: source_branch, merge_request: merge_request) @@ -2289,7 +2324,7 @@ describe Ci::Pipeline, :mailer do let!(:pipeline_2) do create(:ci_pipeline, - source: :merge_request, + source: :merge_request_event, project: pipeline_project, ref: source_branch, merge_request: merge_request_2) |