Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-12-21 16:26:47 +0300
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-12-21 16:26:47 +0300
commitc8b16068be28699da42e1d19a02dc913071919ac (patch)
treeb265fba4ab8e19e4d795231f439e9231daf2e9eb /app/serializers/pipeline_entity.rb
parent9f47d317c547eb49c59e01f9c5a887b9ffb7f500 (diff)
Add specs for pipeline entity and improve factory
[ci skip]
Diffstat (limited to 'app/serializers/pipeline_entity.rb')
-rw-r--r--app/serializers/pipeline_entity.rb48
1 files changed, 30 insertions, 18 deletions
diff --git a/app/serializers/pipeline_entity.rb b/app/serializers/pipeline_entity.rb
index 3ede0fb0f53..42205476478 100644
--- a/app/serializers/pipeline_entity.rb
+++ b/app/serializers/pipeline_entity.rb
@@ -28,12 +28,10 @@ class PipelineEntity < Grape::Entity
expose :flags do
expose :latest?, as: :latest
expose :triggered?, as: :triggered
-
- expose :yaml_errors?, as: :yaml_errors do |pipeline|
- pipeline.yaml_errors.present?
- end
-
expose :stuck?, as: :stuck
+ expose :has_yaml_errors?, as: :yaml_errors
+ expose :can_retry?, as: :retryable
+ expose :can_cancel?, as: :cancelable
end
expose :ref do
@@ -41,31 +39,45 @@ class PipelineEntity < Grape::Entity
pipeline.ref
end
- expose :url do |pipeline|
- namespace_project_tree_url(
+ expose :path do |pipeline|
+ namespace_project_tree_path(
pipeline.project.namespace,
pipeline.project,
id: pipeline.ref)
end
- expose :tag?
+ expose :tag?, as: :tag
+ expose :branch?, as: :branch
end
expose :commit, using: CommitEntity
+ expose :yaml_errors, if: ->(pipeline, _) { pipeline.has_yaml_errors? }
- expose :retry_url do |pipeline|
- can?(request.user, :update_pipeline, pipeline.project) &&
- pipeline.retryable? &&
- retry_namespace_project_pipeline_path(pipeline.project.namespace,
- pipeline.project, pipeline.id)
+ expose :retry_path, if: proc { can_retry? } do |pipeline|
+ retry_namespace_project_pipeline_path(pipeline.project.namespace,
+ pipeline.project,
+ pipeline.id)
end
- expose :cancel_url do |pipeline|
- can?(request.user, :update_pipeline, pipeline.project) &&
- pipeline.cancelable? &&
- cancel_namespace_project_pipeline_path(pipeline.project.namespace,
- pipeline.project, pipeline.id)
+ expose :cancel_path, if: proc { can_cancel? } do |pipeline|
+ cancel_namespace_project_pipeline_path(pipeline.project.namespace,
+ pipeline.project,
+ pipeline.id)
end
expose :created_at, :updated_at
+
+ private
+
+ alias_method :pipeline, :object
+
+ def can_retry?
+ pipeline.retryable? &&
+ can?(request.user, :update_pipeline, pipeline)
+ end
+
+ def can_cancel?
+ pipeline.cancelable? &&
+ can?(request.user, :update_pipeline, pipeline)
+ end
end