Commit f963b5a9 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Implement presenter for pipeline failure reason

parent c2b3559b
module Ci module Ci
class PipelinePresenter < Gitlab::View::Presenter::Delegated class PipelinePresenter < Gitlab::View::Presenter::Delegated
prepend ::EE::Ci::PipelinePresenter
presents :pipeline presents :pipeline
def status_title def status_title
......
...@@ -44,6 +44,8 @@ class PipelineEntity < Grape::Entity ...@@ -44,6 +44,8 @@ class PipelineEntity < Grape::Entity
end end
expose :commit, using: CommitEntity expose :commit, using: CommitEntity
expose :yaml_errors, if: -> (pipeline, _) { pipeline.has_yaml_errors? }
expose :failure_reason, if: -> (pipeline, _) { pipeline.failure_reason? }
expose :retry_path, if: -> (*) { can_retry? } do |pipeline| expose :retry_path, if: -> (*) { can_retry? } do |pipeline|
retry_project_pipeline_path(pipeline.project, pipeline) retry_project_pipeline_path(pipeline.project, pipeline)
...@@ -53,8 +55,6 @@ class PipelineEntity < Grape::Entity ...@@ -53,8 +55,6 @@ class PipelineEntity < Grape::Entity
cancel_project_pipeline_path(pipeline.project, pipeline) cancel_project_pipeline_path(pipeline.project, pipeline)
end end
expose :yaml_errors, if: -> (pipeline, _) { pipeline.has_yaml_errors? }
private private
alias_method :pipeline, :object alias_method :pipeline, :object
......
...@@ -45,6 +45,7 @@ module Gitlab ...@@ -45,6 +45,7 @@ module Gitlab
#{config.root}/ee/app/models/concerns #{config.root}/ee/app/models/concerns
#{config.root}/ee/app/policies #{config.root}/ee/app/policies
#{config.root}/ee/app/serializers #{config.root}/ee/app/serializers
#{config.root}/ee/app/presenters
#{config.root}/ee/app/services #{config.root}/ee/app/services
#{config.root}/ee/app/workers #{config.root}/ee/app/workers
]) ])
......
module EE
module Ci
module PipelinePresenter
FAILURE_REASONS = {
activity_limit_exceeded: 'Pipeline activity limit exceeded!',
size_limit_exceeded: 'Pipeline size limit exceeded!'
}
def failure_reason
return unless pipeline.failure_reason?
FAILURE_REASONS[pipeline.failure_reason.to_sym] ||
pipeline.failure_reason
end
end
end
end
require 'spec_helper'
describe Ci::PipelinePresenter do
set(:project) { create(:project) }
set(:pipeline) { create(:ci_pipeline, project: project) }
subject(:presenter) do
described_class.new(pipeline)
end
context '#failure_reason' do
context 'when pipeline has failure reason' do
it 'represents a failure reason sentence' do
pipeline.failure_reason = :activity_limit_exceeded
expect(presenter.failure_reason)
.to eq 'Pipeline activity limit exceeded!'
end
end
context 'when pipeline does not have failure reason' do
it 'returns nil' do
expect(presenter.failure_reason).to be_nil
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