Class: GitlabQuality::TestTooling::GitlabClient::MergeRequestsClient

Inherits:
GitlabClient
  • Object
show all
Defined in:
lib/gitlab_quality/test_tooling/gitlab_client/merge_requests_client.rb

Direct Known Subclasses

MergeRequestsDryClient

Constant Summary

Constants inherited from GitlabClient

GitlabClient::MAX_RETRY_ATTEMPTS, GitlabClient::RETRY_BACK_OFF_DELAY

Instance Method Summary collapse

Methods inherited from GitlabClient

#handle_gitlab_client_exceptions, #ignore_gitlab_client_exceptions, #initialize, #post_exception_to_slack

Constructor Details

This class inherits a constructor from GitlabQuality::TestTooling::GitlabClient::GitlabClient

Instance Method Details

#create_merge_request(title:, source_branch:, target_branch:, description:, labels:, assignee_id: nil, reviewer_ids: []) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/gitlab_quality/test_tooling/gitlab_client/merge_requests_client.rb', line 30

def create_merge_request(title:, source_branch:, target_branch:, description:, labels:, assignee_id: nil, reviewer_ids: [])
  attrs = {
    source_branch: source_branch,
    target_branch: target_branch,
    description: description,
    labels: labels,
    assignee_id: assignee_id,
    squash: true,
    remove_source_branch: true,
    reviewer_ids: reviewer_ids
  }.compact

  merge_request = handle_gitlab_client_exceptions do
    client.create_merge_request(project,
      title,
      attrs)
  end

  Runtime::Logger.debug("Created merge request #{merge_request['iid']} (#{merge_request['web_url']})") if merge_request

  merge_request
end

#create_note(note:, merge_request_iid:) ⇒ Object



79
80
81
# File 'lib/gitlab_quality/test_tooling/gitlab_client/merge_requests_client.rb', line 79

def create_note(note:, merge_request_iid:)
  client.create_merge_request_note(project, merge_request_iid, note)
end

#find(iid: nil, options: {}, &select) ⇒ Object



57
58
59
60
61
62
63
64
65
# File 'lib/gitlab_quality/test_tooling/gitlab_client/merge_requests_client.rb', line 57

def find(iid: nil, options: {}, &select)
  select ||= :itself

  if iid
    find_merge_request(iid, &select)
  else
    find_merge_requests(options, &select)
  end
end

#find_merge_request_changes(merge_request_iid:) ⇒ Object



18
19
20
21
22
# File 'lib/gitlab_quality/test_tooling/gitlab_client/merge_requests_client.rb', line 18

def find_merge_request_changes(merge_request_iid:)
  handle_gitlab_client_exceptions do
    client.merge_request_changes(project, merge_request_iid)
  end
end

#find_note(body:, merge_request_iid:) ⇒ Object



73
74
75
76
77
# File 'lib/gitlab_quality/test_tooling/gitlab_client/merge_requests_client.rb', line 73

def find_note(body:, merge_request_iid:)
  client.merge_request_notes(project, merge_request_iid, per_page: 100).auto_paginate.find do |mr_note|
    mr_note['body'] =~ /#{body}/
  end
end

#merge_request(id:, options: {}) ⇒ Object



53
54
55
# File 'lib/gitlab_quality/test_tooling/gitlab_client/merge_requests_client.rb', line 53

def merge_request(id:, options: {})
  client.merge_request(project, id, options)
end

#merge_request_changed_files(merge_request_iid:) ⇒ Object



67
68
69
70
71
# File 'lib/gitlab_quality/test_tooling/gitlab_client/merge_requests_client.rb', line 67

def merge_request_changed_files(merge_request_iid:)
  find_merge_request_changes(merge_request_iid: merge_request_iid)["changes"].map do |change|
    change["new_path"]
  end
end

#merge_request_diffs(merge_request_iid:) ⇒ Object



24
25
26
27
28
# File 'lib/gitlab_quality/test_tooling/gitlab_client/merge_requests_client.rb', line 24

def merge_request_diffs(merge_request_iid:)
  handle_gitlab_client_exceptions do
    client.merge_request_diffs(project, merge_request_iid, per_page: 100)
  end
end

#update_note(id:, note:, merge_request_iid:) ⇒ Object



83
84
85
# File 'lib/gitlab_quality/test_tooling/gitlab_client/merge_requests_client.rb', line 83

def update_note(id:, note:, merge_request_iid:)
  client.edit_merge_request_note(project, merge_request_iid, id, note)
end