Expose stage dropdown path and title in stage entity
This commit is contained in:
parent
f9331db136
commit
1b14182f21
2 changed files with 34 additions and 5 deletions
|
@ -3,17 +3,35 @@ class StageEntity < Grape::Entity
|
|||
|
||||
expose :name
|
||||
|
||||
expose :status do |stage, options|
|
||||
StatusEntity.represent(
|
||||
stage.detailed_status(request.user),
|
||||
options)
|
||||
expose :title do |stage|
|
||||
"#{stage.name}: #{detailed_status.label}"
|
||||
end
|
||||
|
||||
expose :detailed_status, as: :status,
|
||||
with: StatusEntity
|
||||
|
||||
expose :path do |stage|
|
||||
namespace_project_pipeline_path(
|
||||
stage.pipeline.project.namespace,
|
||||
stage.pipeline.project,
|
||||
stage.pipeline.id,
|
||||
stage.pipeline,
|
||||
anchor: stage.name)
|
||||
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
|
||||
|
|
|
@ -15,6 +15,7 @@ describe StageEntity do
|
|||
|
||||
before do
|
||||
allow(request).to receive(:user).and_return(user)
|
||||
create(:ci_build, :success, pipeline: pipeline)
|
||||
end
|
||||
|
||||
describe '#as_json' do
|
||||
|
@ -26,6 +27,7 @@ describe StageEntity do
|
|||
|
||||
it 'contains detailed status' do
|
||||
expect(subject[:status]).to include :text, :label, :group, :icon
|
||||
expect(subject[:status][:label]).to eq 'passed'
|
||||
end
|
||||
|
||||
it 'contains valid name' do
|
||||
|
@ -36,5 +38,14 @@ describe StageEntity do
|
|||
expect(subject[:path])
|
||||
.to include "pipelines/#{pipeline.id}##{stage.name}"
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue