Skip to content
Snippets Groups Projects
Commit 7a56ffbd authored by Shinya Maeda's avatar Shinya Maeda
Browse files

Validate accidental override by presenters

This commit validates the accidental override by presenters.
parent 9bcb0239
No related branches found
No related tags found
No related merge requests found
Showing
with 39 additions and 16 deletions
Loading
Loading
@@ -6,6 +6,9 @@ class AlertPresenter < Gitlab::View::Presenter::Delegated
include IncidentManagement::Settings
include ActionView::Helpers::UrlHelper
 
delegator_target ::AlertManagement::Alert # TODO: Use `presents :alert, ::AlertManagement::Alert` instead.
delegator_override_with Gitlab::Utils::StrongMemoize # TODO: Remove `Gitlab::Utils::StrongMemoize` inclusion as it's duplicate
MARKDOWN_LINE_BREAK = " \n"
HORIZONTAL_LINE = "\n\n---\n\n"
 
Loading
Loading
@@ -30,6 +33,7 @@ def start_time
started_at&.strftime('%d %B %Y, %-l:%M%p (%Z)')
end
 
delegator_override :details_url
def details_url
details_project_alert_management_url(project, alert.iid)
end
Loading
Loading
# frozen_string_literal: true
 
class AwardEmojiPresenter < Gitlab::View::Presenter::Delegated
presents :award_emoji
presents :award_emoji, ::AwardEmoji
 
def description
as_emoji['description']
Loading
Loading
Loading
Loading
@@ -7,7 +7,7 @@ class BlobPresenter < Gitlab::View::Presenter::Delegated
include TreeHelper
include ChecksCollaboration
 
presents :blob
presents :blob, ::Blob
 
def highlight(to: nil, plain: nil)
load_all_blob_data
Loading
Loading
# frozen_string_literal: true
 
class BoardPresenter < Gitlab::View::Presenter::Delegated
presents :board
presents :board, ::Board
end
Loading
Loading
@@ -2,6 +2,9 @@
 
module Ci
class BridgePresenter < ProcessablePresenter
delegator_target ::Ci::Bridge
delegator_override :detailed_status
def detailed_status
@detailed_status ||= subject.detailed_status(user)
end
Loading
Loading
Loading
Loading
@@ -9,8 +9,9 @@ class BuildMetadataPresenter < Gitlab::View::Presenter::Delegated
job_timeout_source: 'job'
}.freeze
 
presents :metadata
presents :metadata, ::Ci::BuildMetadata
 
delegator_override :timeout_source
def timeout_source
return unless metadata.timeout_source?
 
Loading
Loading
Loading
Loading
@@ -2,6 +2,8 @@
 
module Ci
class BuildPresenter < ProcessablePresenter
delegator_target ::Ci::Build
def erased_by_user?
# Build can be erased through API, therefore it does not have
# `erased_by` user assigned in that case.
Loading
Loading
Loading
Loading
@@ -2,7 +2,7 @@
 
module Ci
class GroupVariablePresenter < Gitlab::View::Presenter::Delegated
presents :variable
presents :variable, ::Ci::GroupVariable
 
def placeholder
'GROUP_VARIABLE'
Loading
Loading
Loading
Loading
@@ -2,7 +2,7 @@
 
module Ci
class LegacyStagePresenter < Gitlab::View::Presenter::Delegated
presents :legacy_stage
presents :legacy_stage, ::Ci::LegacyStage
 
def latest_ordered_statuses
preload_statuses(legacy_stage.statuses.latest_ordered)
Loading
Loading
Loading
Loading
@@ -5,6 +5,9 @@ class PipelinePresenter < Gitlab::View::Presenter::Delegated
include Gitlab::Utils::StrongMemoize
include ActionView::Helpers::UrlHelper
 
delegator_override_with Gitlab::Utils::StrongMemoize # TODO: Remove `Gitlab::Utils::StrongMemoize` inclusion as it's duplicate
delegator_override_with ActionView::Helpers::TagHelper # TODO: Remove `ActionView::Helpers::UrlHelper` inclusion as it overrides `Ci::Pipeline#tag`
# We use a class method here instead of a constant, allowing EE to redefine
# the returned `Hash` more easily.
def self.failure_reasons
Loading
Loading
@@ -20,8 +23,9 @@ def self.failure_reasons
user_blocked: 'The user who created this pipeline is blocked.' }
end
 
presents :pipeline
presents :pipeline, ::Ci::Pipeline
 
delegator_override :failed_builds
def failed_builds
return [] unless can?(current_user, :read_build, pipeline)
 
Loading
Loading
@@ -30,6 +34,7 @@ def failed_builds
end
end
 
delegator_override :failure_reason
def failure_reason
return unless pipeline.failure_reason?
 
Loading
Loading
Loading
Loading
@@ -2,5 +2,6 @@
 
module Ci
class ProcessablePresenter < CommitStatusPresenter
delegator_target ::Ci::Processable
end
end
Loading
Loading
@@ -2,11 +2,14 @@
 
module Ci
class RunnerPresenter < Gitlab::View::Presenter::Delegated
presents :runner
presents :runner, ::Ci::Runner
 
delegator_override :locked?
def locked?
read_attribute(:locked) && project_type?
end
delegator_override :locked
alias_method :locked, :locked?
end
end
Loading
Loading
@@ -2,7 +2,7 @@
 
module Ci
class StagePresenter < Gitlab::View::Presenter::Delegated
presents :stage
presents :stage, ::Ci::Stage
 
PRELOADED_RELATIONS = [:pipeline, :metadata, :tags, :job_artifacts_archive, :downstream_pipeline].freeze
 
Loading
Loading
Loading
Loading
@@ -2,12 +2,13 @@
 
module Ci
class TriggerPresenter < Gitlab::View::Presenter::Delegated
presents :trigger
presents :trigger, ::Ci::Trigger
 
def has_token_exposed?
can?(current_user, :admin_trigger, trigger)
end
 
delegator_override :token
def token
if has_token_exposed?
trigger.token
Loading
Loading
Loading
Loading
@@ -2,7 +2,7 @@
 
module Ci
class VariablePresenter < Gitlab::View::Presenter::Delegated
presents :variable
presents :variable, ::Ci::Variable
 
def placeholder
'PROJECT_VARIABLE'
Loading
Loading
Loading
Loading
@@ -7,7 +7,9 @@ class ClusterPresenter < Gitlab::View::Presenter::Delegated
include ActionView::Helpers::UrlHelper
include IconsHelper
 
presents :cluster
delegator_override_with ::Gitlab::Utils::StrongMemoize # TODO: Remove `::Gitlab::Utils::StrongMemoize` inclusion as it's duplicate
presents :cluster, ::Clusters::Cluster
 
# We do not want to show the group path for clusters belonging to the
# clusterable, only for the ancestor clusters.
Loading
Loading
Loading
Loading
@@ -3,7 +3,7 @@
class CommitPresenter < Gitlab::View::Presenter::Delegated
include GlobalID::Identification
 
presents :commit
presents :commit, ::Commit
 
def status_for(ref)
return unless can?(current_user, :read_commit_status, commit.project)
Loading
Loading
Loading
Loading
@@ -32,7 +32,7 @@ class CommitStatusPresenter < Gitlab::View::Presenter::Delegated
 
private_constant :CALLOUT_FAILURE_MESSAGES
 
presents :build
presents :build, ::CommitStatus
 
def self.callout_failure_messages
CALLOUT_FAILURE_MESSAGES
Loading
Loading
Loading
Loading
@@ -3,7 +3,7 @@
class EnvironmentPresenter < Gitlab::View::Presenter::Delegated
include ActionView::Helpers::UrlHelper
 
presents :environment
presents :environment, ::Environment
 
def path
project_environment_path(project, self)
Loading
Loading
# frozen_string_literal: true
 
class EventPresenter < Gitlab::View::Presenter::Delegated
presents :event
presents :event, ::Event
 
def initialize(subject, **attributes)
super
Loading
Loading
@@ -10,6 +10,7 @@ def initialize(subject, **attributes)
end
 
# Caching `visible_to_user?` method in the presenter beause it might be called multiple times.
delegator_override :visible_to_user?
def visible_to_user?(user = nil)
@visible_to_user_cache.fetch(user&.id) { super(user) }
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment