summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2019-04-02 14:07:11 +0700
committerShinya Maeda <shinya@gitlab.com>2019-04-02 15:55:06 +0700
commita04e1d5e32f7ae1740ba8b9daaf3f71a5048126c (patch)
treece9b5458a09928c9827c1bc7e89ec57f97451a52
parentba23d6377c650ecaac420c8085a2cd82737d3ced (diff)
downloadgitlab-ce-expose-mr-pipeline-parameters-for-merge-widget-ce.tar.gz
This is for merge request pipelines
-rw-r--r--app/models/ci/pipeline.rb8
-rw-r--r--app/serializers/merge_request_widget_entity.rb1
-rw-r--r--app/serializers/pipeline_entity.rb2
-rw-r--r--spec/models/ci/pipeline_spec.rb42
-rw-r--r--spec/serializers/merge_request_widget_entity_spec.rb4
-rw-r--r--spec/serializers/pipeline_entity_spec.rb10
6 files changed, 17 insertions, 50 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index abac16a138d..01d96754518 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -206,10 +206,6 @@ module Ci
triggered_by_merge_request(merge_request).for_source_sha(source_sha)
end
- scope :mergeable_merge_request_pipelines, -> (merge_request) do
- triggered_by_merge_request(merge_request).where(target_sha: merge_request.target_branch_sha)
- end
-
scope :triggered_for_branch, -> (ref) do
where(source: branch_pipeline_sources).where(ref: ref, tag: false)
end
@@ -746,10 +742,6 @@ module Ci
triggered_by_merge_request? && target_sha.present?
end
- def mergeable_merge_request_pipeline?
- triggered_by_merge_request? && target_sha == merge_request.target_branch_sha
- end
-
def merge_request_ref?
MergeRequest.merge_request_ref?(ref)
end
diff --git a/app/serializers/merge_request_widget_entity.rb b/app/serializers/merge_request_widget_entity.rb
index 2142ceb6122..d673f8ae896 100644
--- a/app/serializers/merge_request_widget_entity.rb
+++ b/app/serializers/merge_request_widget_entity.rb
@@ -20,6 +20,7 @@ class MergeRequestWidgetEntity < IssuableEntity
end
expose :squash
expose :target_branch
+ expose :target_branch_sha
expose :target_project_id
expose :target_project_full_path do |merge_request|
merge_request.project&.full_path
diff --git a/app/serializers/pipeline_entity.rb b/app/serializers/pipeline_entity.rb
index fba72410217..8fe5df81e6c 100644
--- a/app/serializers/pipeline_entity.rb
+++ b/app/serializers/pipeline_entity.rb
@@ -59,6 +59,8 @@ class PipelineEntity < Grape::Entity
end
expose :commit, using: CommitEntity
+ expose :source_sha, if: -> (pipeline, _) { pipeline.merge_request_pipeline? }
+ expose :target_sha, if: -> (pipeline, _) { pipeline.merge_request_pipeline? }
expose :yaml_errors, if: -> (pipeline, _) { pipeline.has_yaml_errors? }
expose :failure_reason, if: -> (pipeline, _) { pipeline.failure_reason? } do |pipeline|
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb
index e76cf376ed1..83b0f172f03 100644
--- a/spec/models/ci/pipeline_spec.rb
+++ b/spec/models/ci/pipeline_spec.rb
@@ -322,48 +322,6 @@ describe Ci::Pipeline, :mailer do
end
end
- describe '.mergeable_merge_request_pipelines' do
- subject { described_class.mergeable_merge_request_pipelines(merge_request) }
-
- let!(:pipeline) do
- create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, target_sha: target_sha)
- end
-
- let(:merge_request) { create(:merge_request) }
- let(:target_sha) { merge_request.target_branch_sha }
-
- it 'returns mergeable merge pipelines' do
- is_expected.to eq([pipeline])
- end
-
- context 'when target sha does not point the head of the target branch' do
- let(:target_sha) { merge_request.diff_head_sha }
-
- it 'returns empty array' do
- is_expected.to be_empty
- end
- end
- end
-
- describe '#mergeable_merge_request_pipeline?' do
- subject { pipeline.mergeable_merge_request_pipeline? }
-
- let!(:pipeline) do
- create(:ci_pipeline, source: :merge_request_event, merge_request: merge_request, target_sha: target_sha)
- end
-
- let(:merge_request) { create(:merge_request) }
- let(:target_sha) { merge_request.target_branch_sha }
-
- it { is_expected.to be_truthy }
-
- context 'when target sha does not point the head of the target branch' do
- let(:target_sha) { merge_request.diff_head_sha }
-
- it { is_expected.to be_falsy }
- end
- end
-
describe '#merge_request_ref?' do
subject { pipeline.merge_request_ref? }
diff --git a/spec/serializers/merge_request_widget_entity_spec.rb b/spec/serializers/merge_request_widget_entity_spec.rb
index 727fd8951f2..0e99ef38d2f 100644
--- a/spec/serializers/merge_request_widget_entity_spec.rb
+++ b/spec/serializers/merge_request_widget_entity_spec.rb
@@ -13,6 +13,10 @@ describe MergeRequestWidgetEntity do
described_class.new(resource, request: request).as_json
end
+ it 'has the latest sha of the target branch' do
+ is_expected.to include(:target_branch_sha)
+ end
+
describe 'source_project_full_path' do
it 'includes the full path of the source project' do
expect(subject[:source_project_full_path]).to be_present
diff --git a/spec/serializers/pipeline_entity_spec.rb b/spec/serializers/pipeline_entity_spec.rb
index 1d992e8a483..dba7fd91747 100644
--- a/spec/serializers/pipeline_entity_spec.rb
+++ b/spec/serializers/pipeline_entity_spec.rb
@@ -143,6 +143,11 @@ describe PipelineEntity do
expect(subject[:flags][:detached_merge_request_pipeline]).to be_truthy
end
+ it 'does not expose source sha and target sha' do
+ expect(subject[:source_sha]).to be_nil
+ expect(subject[:target_sha]).to be_nil
+ end
+
context 'when user is a developer' do
before do
project.add_developer(user)
@@ -189,6 +194,11 @@ describe PipelineEntity do
it 'makes atached flag true' do
expect(subject[:flags][:merge_request_pipeline]).to be_truthy
end
+
+ it 'exposes source sha and target sha' do
+ expect(subject[:source_sha]).to be_present
+ expect(subject[:target_sha]).to be_present
+ end
end
end
end