Expose stage dropdown path and title in stage entity
This commit is contained in:
parent
f9331db136
commit
1b14182f21
|
@ -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
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
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
|
||||||
|
|
Loading…
Reference in New Issue