Class: MergeRequests::Mergeability::DetailedMergeStatusService

Inherits:
Object
  • Object
show all
Includes:
Gitlab::Utils::StrongMemoize
Defined in:
app/services/merge_requests/mergeability/detailed_merge_status_service.rb

Instance Method Summary collapse

Constructor Details

#initialize(merge_request:) ⇒ DetailedMergeStatusService

Returns a new instance of DetailedMergeStatusService.



8
9
10
# File 'app/services/merge_requests/mergeability/detailed_merge_status_service.rb', line 8

def initialize(merge_request:)
  @merge_request = merge_request
end

Instance Method Details

#executeObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'app/services/merge_requests/mergeability/detailed_merge_status_service.rb', line 12

def execute
  return :preparing if preparing?
  return :checking if checking?
  return :unchecked if unchecked?

  if check_results.success?

    # If everything else is mergeable, but CI is not, the frontend expects two potential states to be returned
    # See discussion: gitlab.com/gitlab-org/gitlab/-/merge_requests/96778#note_1093063523
    if check_ci_results.success?
      :mergeable
    else
      ci_check_failure_reason
    end
  else
    check_results.failure_reason
  end
end