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, #excluded_users, #group_name, #mr_iid, #project_id

Instance Method Summary collapse

Methods inherited from Strategy

#assign!, #fetch_assigned_reviewers, #fetch_author, #fetch_users_in_group, #initialize

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
# File 'lib/gitlab_reviewbot/strategies/least_busy.rb', line 6

def assignees(amount)
  users_in_group = fetch_users_in_group()
  author = fetch_author()
  invalid_assignees = [ fetch_author() ] + fetch_assigned_reviewers()

  users_with_reviews_pending = client.users_with_pending_mr_review(project_id).filter { |u| users_in_group.include? u }
  users_without_reviews_pending = users_in_group.filter { |u| ! users_with_reviews_pending.include? u }

  (users_with_reviews_pending + users_without_reviews_pending).filter { |u| u.id != author.id }
                                                              .sort_by(&:review_count)
                                                              .first(amount)
end