Fix stage.json endpoint

This commit is contained in:
Kamil Trzciński 2018-04-23 16:20:21 +02:00
parent 551f8c4b1a
commit 2178bd5ff4
4 changed files with 18 additions and 23 deletions

View file

@ -106,7 +106,7 @@ class Projects::PipelinesController < Projects::ApplicationController
render json: StageSerializer
.new(project: @project, current_user: @current_user)
.represent(@pipeline)
.represent(@stage, details: true)
end
def retry

View file

@ -1,21 +0,0 @@
class StageDetailsEntity < Grape::Entity
include RequestAwareEntity
expose :name
expose :title do |stage|
"#{stage.name}: #{detailed_status.label}"
end
expose :statuses, with: JobEntity
expose :detailed_status, as: :status, with: StatusEntity
private
alias_method :stage, :object
def detailed_status
stage.detailed_status(request.current_user)
end
end

View file

@ -11,6 +11,12 @@ class StageEntity < Grape::Entity
if: -> (_, opts) { opts[:grouped] },
with: JobGroupEntity
expose :latest_statuses,
if: -> (_, opts) { opts[:details] },
with: JobEntity do |stage|
latest_statuses
end
expose :detailed_status, as: :status, with: StatusEntity
expose :path do |stage|
@ -35,4 +41,14 @@ class StageEntity < Grape::Entity
def detailed_status
stage.detailed_status(request.current_user)
end
def grouped_statuses
@grouped_statuses ||= stage.statuses.latest_ordered.group_by(&:status)
end
def latest_statuses
HasStatus::ORDERED_STATUSES.map do |ordered_status|
grouped_statuses.fetch(ordered_status, [])
end.flatten
end
end

View file

@ -3,5 +3,5 @@ class StageSerializer < BaseSerializer
InvalidResourceError = Class.new(StandardError)
entity StageDetailsEntity
entity StageEntity
end