danger-gitlab_reviewbot 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 78868b60ea86cc9289c4a13598fe7807228c548190c02769f6a7007144c25bb9
4
- data.tar.gz: c4a7efe442933e89acb1efdca5602ca5bc3742c51f8874b0d220a7fd0988cae0
3
+ metadata.gz: 18d9331afe98308a84876492708add4449315fe4a1f90145c9b23e70e8547fb7
4
+ data.tar.gz: 9abbf57104a68241af9bfc41475ddd32872ee7210a5f87096716b8ad1952611c
5
5
  SHA512:
6
- metadata.gz: 72813a9d97245481c458864a9478e0641200e529c072adb9ab4e245954c250c3ab88d64147e23d3a82896cbdadfaa0f7463454fe1db45e4072f6ab898b4090ad
7
- data.tar.gz: 56a3308398621751ce1bed2efb53a1b4f82ddf29bf105a00bd5197b06210276f0cd270b273125da66ad4ecb86e3671ba61cc67c1eb05ab12f557384ffbbfd142
6
+ metadata.gz: 474afe53630d3bd6c7c09b718d120ee0a966ac5fae93c80520e8ab1b4cff2376bb866ccbfce8b1c198afb923296755f222751e4e76f4b77a44f7fa81a130bae3
7
+ data.tar.gz: 537f846fa8177706d9dfa989c50dc36dba52730530bc617d0c1b3e24f4fa9075956082033ec4b4f9187bcfa507ef1a966bb2bcf3382ec018fe224237e9f2e0e7
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-gitlab_reviewbot (1.0.2)
4
+ danger-gitlab_reviewbot (1.1.0)
5
5
  danger-gitlab
6
6
  danger-plugin-api (~> 1.0)
7
7
 
@@ -20,26 +20,26 @@ GEM
20
20
  colored2 (3.1.2)
21
21
  cork (0.3.0)
22
22
  colored2 (~> 3.1)
23
- danger (8.0.0)
23
+ danger (6.3.2)
24
24
  claide (~> 1.0)
25
25
  claide-plugins (>= 0.9.2)
26
26
  colored2 (~> 3.1)
27
27
  cork (~> 0.1)
28
- faraday (>= 0.9.0, < 2.0)
28
+ faraday (~> 0.9)
29
29
  faraday-http-cache (~> 2.0)
30
- git (~> 1.7)
30
+ git (~> 1.6)
31
31
  kramdown (~> 2.0)
32
32
  kramdown-parser-gfm (~> 1.0)
33
33
  no_proxy_fix
34
34
  octokit (~> 4.7)
35
35
  terminal-table (~> 1)
36
- danger-gitlab (5.0.1)
37
- danger (>= 5.0)
38
- gitlab (~> 4.0)
36
+ danger-gitlab (7.0.0)
37
+ danger (~> 6.0)
38
+ gitlab (~> 4.2, >= 4.2.0)
39
39
  danger-plugin-api (1.0.0)
40
40
  danger (> 2.0)
41
41
  diff-lcs (1.3)
42
- faraday (1.0.1)
42
+ faraday (0.17.3)
43
43
  multipart-post (>= 1.2, < 3)
44
44
  faraday-http-cache (2.2.0)
45
45
  faraday (>= 0.8)
@@ -1,3 +1,3 @@
1
1
  module GitlabReviewbot
2
- VERSION = "1.0.2".freeze
2
+ VERSION = "1.1.0".freeze
3
3
  end
@@ -42,6 +42,10 @@ module Gitlab
42
42
  merge_requests(project_id, :state => 'opened', :per_page => '100').select { |mr| mr.merge_status != 'can_be_merged' }
43
43
  end
44
44
 
45
+ def find_user_with_username(username)
46
+ users({:username => username}).map { |u| User.new(u.id, u.username) }
47
+ end
48
+
45
49
  def users_with_pending_mr_review(project_id)
46
50
  outstanding_mrs = fetch_mrs_requiring_review(project_id)
47
51
  all_assignees = outstanding_mrs.reduce([]) { |acc, mr| acc + mr.assignees }
@@ -32,7 +32,7 @@ module Danger
32
32
  # NOTE: The plugin won't remove existing assigned reviewers
33
33
  #
34
34
  # @return Int
35
- attr_accessor :assignees_amount
35
+ attr_writer :assignees_amount
36
36
  def assignees_amount
37
37
  @assignees_amount || 1
38
38
  end
@@ -44,7 +44,7 @@ module Danger
44
44
  # * Danger::AssignStrategies::LeastBusyStrategy - assign the N users with the least amount of open MRs
45
45
  # to review
46
46
  #
47
- attr_accessor :strategy
47
+ attr_writer :strategy
48
48
  def strategy
49
49
  @strategy || Danger::AssignStrategies::RandomStrategy
50
50
  end
@@ -5,12 +5,14 @@ module Danger
5
5
  attr_accessor :project_id
6
6
  attr_accessor :group_name
7
7
  attr_accessor :client
8
+ attr_accessor :excluded_users
8
9
 
9
10
  def initialize(client:, project:, mr:, group:)
10
11
  @client = client
11
12
  @project_id = project
12
13
  @mr_iid = mr
13
14
  @group_name = group
15
+ @excluded_users = []
14
16
  end
15
17
 
16
18
  def assign!(amount)
@@ -37,7 +39,8 @@ module Danger
37
39
  end
38
40
 
39
41
  def fetch_users_in_group
40
- client.fetch_users_for_group(@group_name)
42
+ excluded_users = @excluded_users.map { |u| client.find_user_with_username(u) }
43
+ client.fetch_users_for_group(@group_name).filter { |u| ! excluded_users.include? u }
41
44
  end
42
45
  end
43
46
  end
@@ -10,9 +10,11 @@ module Danger
10
10
  @tom = Gitlab::User.new(2, 'Tom')
11
11
  @nic = Gitlab::User.new(3, 'Nic')
12
12
  @luke = Gitlab::User.new(4, 'Luke')
13
+ @lei = Gitlab::User.new(5, 'Lei')
14
+
13
15
 
14
16
  @mock_client = double(Gitlab::Client)
15
- @author = @nic
17
+ @author = @lei
16
18
  @members = [@author, @tom, @sam]
17
19
  allow(@mock_client).to receive(:fetch_author_for_mr).and_return(@author)
18
20
  allow(@mock_client).to receive(:fetch_users_for_group).with(2200).and_return(@members)
@@ -54,6 +56,23 @@ module Danger
54
56
  @strategy.assign!(2)
55
57
  end
56
58
 
59
+ it "honours excluded users" do
60
+ allow(@mock_client).to receive(:fetch_mr_reviewers).with(10, 110).and_return([])
61
+ allow(@mock_client).to receive(:find_user_with_username).with('Luke').and_return(@luke)
62
+ allow(@mock_client).to receive(:find_user_with_username).with('Nic').and_return(@nic)
63
+ allow(@mock_client).to receive(:fetch_users_for_group).with(2200).and_return(@members + [@nic, @luke])
64
+ @strategy.excluded_users = ['Nic', 'Luke']
65
+
66
+ expect(@mock_client).to receive(:assign_mr_to_users) do |project, mr, users|
67
+ expect(project).to be == 10
68
+ expect(mr).to be == 110
69
+ expect(users).to contain_exactly(@tom, @sam)
70
+ end
71
+
72
+ @strategy.assign!(2)
73
+
74
+ end
75
+
57
76
 
58
77
  end
59
78
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-gitlab_reviewbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabio Gallonetto