class Danger::AssignStrategies::Strategy
Attributes
client[RW]
excluded_users[RW]
group_name[RW]
mr_iid[RW]
project_id[RW]
Public Class Methods
new(client:, project:, mr_iid:)
click to toggle source
# File lib/gitlab_reviewbot/strategies/strategy.rb, line 12 def initialize(client:, project:, mr_iid:) @client = client @project_id = project @mr_iid = mr_iid @excluded_users = [] end
Public Instance Methods
assign!(amount)
click to toggle source
# File lib/gitlab_reviewbot/strategies/strategy.rb, line 19 def assign!(amount) currently_assigned = fetch_assigned_reviewers return [] if (amount - currently_assigned.length) <= 0 to_be_assigned = assignees(amount - currently_assigned.length) all_assignees = currently_assigned + to_be_assigned client.assign_mr_to_users(project_id, mr_iid, all_assignees) all_assignees.map(&:username) end
assignees(amount)
click to toggle source
# File lib/gitlab_reviewbot/strategies/strategy.rb, line 30 def assignees(amount) raise "To be implemented in the subclasses" end
fetch_assigned_reviewers()
click to toggle source
# File lib/gitlab_reviewbot/strategies/strategy.rb, line 38 def fetch_assigned_reviewers client.fetch_mr_reviewers(@project_id, @mr_iid) end
fetch_users_in_group()
click to toggle source
# File lib/gitlab_reviewbot/strategies/strategy.rb, line 42 def fetch_users_in_group excluded = @excluded_users.map do |u| server_user = client.find_user_with_username(u).first raise "ERROR: Invalid username #{u} among excluded_users" if server_user.nil? server_user end client.fetch_users_for_group(@group_name).filter { |u| !excluded.include? u } end