BigW Consortium Gitlab

Commit 1b14182f by Grzegorz Bizon

Expose stage dropdown path and title in stage entity

parent f9331db1
...@@ -3,17 +3,35 @@ class StageEntity < Grape::Entity ...@@ -3,17 +3,35 @@ class StageEntity < Grape::Entity
expose :name expose :name
expose :status do |stage, options| expose :title do |stage|
StatusEntity.represent( "#{stage.name}: #{detailed_status.label}"
stage.detailed_status(request.user),
options)
end end
expose :detailed_status, as: :status,
with: StatusEntity
expose :path do |stage| expose :path do |stage|
namespace_project_pipeline_path( namespace_project_pipeline_path(
stage.pipeline.project.namespace, stage.pipeline.project.namespace,
stage.pipeline.project, stage.pipeline.project,
stage.pipeline.id, stage.pipeline,
anchor: stage.name) anchor: stage.name)
end end
expose :dropdown_path do |stage|
stage_namespace_project_pipeline_path(
stage.pipeline.project.namespace,
stage.pipeline.project,
stage.pipeline,
stage: stage.name,
format: :json)
end
private
alias_method :stage, :object
def detailed_status
stage.detailed_status(request.user)
end
end end
...@@ -15,6 +15,7 @@ describe StageEntity do ...@@ -15,6 +15,7 @@ describe StageEntity do
before do before do
allow(request).to receive(:user).and_return(user) allow(request).to receive(:user).and_return(user)
create(:ci_build, :success, pipeline: pipeline)
end end
describe '#as_json' do describe '#as_json' do
...@@ -26,6 +27,7 @@ describe StageEntity do ...@@ -26,6 +27,7 @@ describe StageEntity do
it 'contains detailed status' do it 'contains detailed status' do
expect(subject[:status]).to include :text, :label, :group, :icon expect(subject[:status]).to include :text, :label, :group, :icon
expect(subject[:status][:label]).to eq 'passed'
end end
it 'contains valid name' do it 'contains valid name' do
...@@ -36,5 +38,14 @@ describe StageEntity do ...@@ -36,5 +38,14 @@ describe StageEntity do
expect(subject[:path]) expect(subject[:path])
.to include "pipelines/#{pipeline.id}##{stage.name}" .to include "pipelines/#{pipeline.id}##{stage.name}"
end end
it 'contains path to the stage dropdown' do
expect(subject[:dropdown_path])
.to include "pipelines/#{pipeline.id}/stage.json?stage=test"
end
it 'contains stage title' do
expect(subject[:title]).to eq 'test: passed'
end
end end
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment