Class: Danger::AssignStrategies::LeastBusyStrategy

Inherits:
Strategy
  • Object
show all
Defined in:
lib/gitlab_reviewbot/strategies/least_busy.rb

Instance Attribute Summary

Attributes inherited from Strategy

#client, #group_name, #mr_iid, #project_id

Instance Method Summary collapse

Methods inherited from Strategy

#assign!, #author, #initialize, #users_in_group

Constructor Details

This class inherits a constructor from Danger::AssignStrategies::Strategy

Instance Method Details

#assignees(amount) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/gitlab_reviewbot/strategies/least_busy.rb', line 6

def assignees(amount)
  review_counter = client.fetch_users_for_group(group_name).reduce({}) do |counter, user|
    counter[user.id] = user
    counter
  end

  users = client.users_with_pending_mr_review(project_id) do |counter, user|
    next if counter[user.id].nil?
    counter[user.id].review_count += 1
    counter
  end
  users.filter { |u| u.id != author.id }
       .sort_by(&:review_count)
       .last(amount)
end