hubstats 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c81117f077e962453994f09ec5e806c32fb4b0c3
4
- data.tar.gz: 9400a593fd42d99fcc32a05a437a53ee5a620937
3
+ metadata.gz: 6ca209ff034e4e98eaebfb65c7fb913529a72355
4
+ data.tar.gz: 27996253e2e5c609a77a54172fe8f500ab91f001
5
5
  SHA512:
6
- metadata.gz: 1dd16f156ddf9c069529ab49b371abc7c3a328169b72e3d8390f34b01a02b10138ad02a154de9c67e6158f17cd85405bfdd0a9e59ba81c8440f5c14f4ed57145
7
- data.tar.gz: 9db16e4c561c99cdcb7186750aa2012f0cc29890d9fa161486d55f36683b0656390160aaaedfbfecdcda8385cde74bf820a2bd8bb03cbcc8095dfe6ecf0a66be
6
+ metadata.gz: b1719923f5bf0643da5c1603df631a94ece351896b7a54f8ad4b75729456654d93add03695fa9b54a865e53ba305b1881f1330ffd8c4a0bc7a642b350e845747
7
+ data.tar.gz: c142369081e7940210c779e3831bd450171075ad5c46133d14c019bc1ed832c7a95810bf9b98faf368094d967bec09fe94914ffc636430cbc9d1abb6cce253de
data/CHANGELOG.markdown CHANGED
@@ -1,3 +1,8 @@
1
+ #### v0.9.0
2
+ * Add a way to show a QA Signoff count on Users list page
3
+
4
+ > Emma Sax: Unknown User: https://github.com/sportngin/hubstats/pull/110
5
+
1
6
  #### v0.8.0
2
7
  * Do not show ignored users on lists, in stats, etc
3
8
 
@@ -26,6 +26,10 @@ $(document).ready(function() {
26
26
  toggleOrder(queryParameters,$(this).attr('id'));
27
27
  });
28
28
 
29
+ $("#signoffs").on("click", function(){
30
+ toggleOrder(queryParameters,$(this).attr('id'));
31
+ });
32
+
29
33
  $("#netadditions").on("click", function(){
30
34
  toggleOrder(queryParameters,$(this).attr('id'));
31
35
  });
@@ -0,0 +1,28 @@
1
+ require_dependency "hubstats/application_controller"
2
+
3
+ module Hubstats
4
+ class QaSignoffsController < Hubstats::BaseController
5
+
6
+ # Public - Will list all of the QA Signoffs that belong to any specific user(s)
7
+ #
8
+ # Returns - the QA Signoff data
9
+ def index
10
+ @qa_signoffs = Hubstats::QaSignoff.includes(:repo, :pull_request, :user)
11
+ .belonging_to_users(params[:users])
12
+ .belonging_to_repos(params[:repos])
13
+ .group_by(params[:group])
14
+ .paginate(:page => params[:page], :per_page => 15)
15
+
16
+ grouping(params[:group], @qa_signoffs)
17
+ end
18
+
19
+ # Public - Will show the particular QA Signoff selected
20
+ #
21
+ # Returns - the specific details of the QA Signoff
22
+ def show
23
+ @repo = Hubstats::Repo.where(id: params[:repo_id]).first
24
+ @pull_request = Hubstats::PullRequest.where(id: params[:pull_request_id]).first
25
+ @user = Hubstats::User.where(id: params[:user_id]).first
26
+ end
27
+ end
28
+ end
@@ -36,6 +36,7 @@ module Hubstats
36
36
  @pull_count = Hubstats::PullRequest.belonging_to_user(@user.id).merged_in_date_range(@start_date, @end_date).count(:all)
37
37
  @deploys = Hubstats::Deploy.belonging_to_user(@user.id).deployed_in_date_range(@start_date, @end_date).order("deployed_at DESC").limit(20)
38
38
  @deploy_count = Hubstats::Deploy.belonging_to_user(@user.id).deployed_in_date_range(@start_date, @end_date).count(:all)
39
+ @qa_signoff_count = Hubstats::QaSignoff.belonging_to_user(@user.id).signed_within_date_range(@start_date, @end_date).count(:all)
39
40
  @comment_count = Hubstats::Comment.belonging_to_user(@user.id).created_in_date_range(@start_date, @end_date).count(:all)
40
41
  @net_additions = Hubstats::PullRequest.merged_in_date_range(@start_date, @end_date).belonging_to_user(@user.id).sum(:additions).to_i -
41
42
  Hubstats::PullRequest.merged_in_date_range(@start_date, @end_date).belonging_to_user(@user.id).sum(:deletions).to_i
@@ -55,6 +56,9 @@ module Hubstats
55
56
  pull_count: @pull_count,
56
57
  deploy_count: @deploy_count,
57
58
  comment_count: @comment_count,
59
+ qa_signoff_count: @qa_signoff_count
60
+ }
61
+ @stats_row_two = {
58
62
  avg_additions: @additions.round.to_i,
59
63
  avg_deletions: @deletions.round.to_i,
60
64
  net_additions: @net_additions
@@ -161,7 +161,7 @@ module Hubstats
161
161
  end
162
162
 
163
163
  # Public - Adds/remove a label based on the the webhook action
164
- # @param payload Webhook payload#
164
+ # @param payload Webhook
165
165
  # @return The list of labels after the update
166
166
  def update_label(payload)
167
167
  return unless payload[:label]
@@ -0,0 +1,49 @@
1
+ module Hubstats
2
+ class QaSignoff < ActiveRecord::Base
3
+
4
+ def self.record_timestamps; false; end
5
+
6
+ # Various checks that can be used to filter, sort, and find info about QA Signoffs.
7
+ scope :signed_within_date_range, lambda {|start_date, end_date| where("hubstats_qa_signoffs.signed_at BETWEEN ? AND ?", start_date, end_date)}
8
+ scope :belonging_to_repo, lambda {|repo_id| where(repo_id: repo_id)}
9
+ scope :belonging_to_user, lambda {|user_id| where(user_id: user_id)}
10
+ scope :belonging_to_pull_request, lambda {|pr_id| where(pull_request_id: pr_id)}
11
+ scope :belonging_to_repos, lambda {|repo_id| where(repo_id: repo_id.split(',')) if repo_id}
12
+ scope :belonging_to_users, lambda {|user_id| where(user_id: user_id.split(',')) if user_id}
13
+ scope :belonging_to_pull_requests, lambda {|pr_id| where(pull_request_id: pr_id.split(',')) if pr_id}
14
+ scope :distincter, -> { select("DISTINCT hubstats_qa_signoffs.*") }
15
+ scope :with_repo_name, -> { select('DISTINCT hubstats_repos.name as repo_name, hubstats_qa_signoffs.*').joins("LEFT JOIN hubstats_repos ON hubstats_repos.id = hubstats_qa_signoffs.repo_id") }
16
+ scope :with_user_name, -> { select('DISTINCT hubstats_users.login as user_name, hubstats_qa_signoffs.*').joins("LEFT JOIN hubstats_users ON hubstats_users.id = hubstats_qa_signoffs.user_id") }
17
+ scope :with_pull_request_name, -> { select('DISTINCT hubstats_pull_requests.title as pr_name, hubstats_qa_signoffs.*').joins("LEFT JOIN hubstats_pull_requests ON hubstats_pull_requests.id = hubstats_qa_signoffs.pull_request_id") }
18
+
19
+ belongs_to :user
20
+ belongs_to :repo
21
+ belongs_to :pull_request
22
+
23
+ # Public - Makes a new QA Signoff with the data that is passed in.
24
+ #
25
+ # repo_id - the id of the repository
26
+ # pr_id - the id of the pull request
27
+ # user_id - the id of the user who added the label
28
+ #
29
+ # Returns - the QA Signoff
30
+ def self.first_or_create(repo_id, pr_id, user_id)
31
+ QaSignoff.create(user_id: user_id,
32
+ repo_id: repo_id,
33
+ pull_request_id: pr_id,
34
+ label_name: 'qa-approved',
35
+ signed_at: Time.now.getutc)
36
+ end
37
+
38
+ # Public - Deletes the QA Signoff of the PR that is passed in.
39
+ #
40
+ # repo_id - the id of the repository the PR belongs to
41
+ # pr_id - the id of the PR the signoff was deleted from
42
+ #
43
+ # Returns - the deleted QA Signoff
44
+ def self.remove_signoff(repo_id, pr_id)
45
+ signoff = Hubstats::QaSignoff.where(repo_id: repo_id).where(pull_request_id: pr_id).first
46
+ signoff.destroy if signoff
47
+ end
48
+ end
49
+ end
@@ -34,6 +34,19 @@ module Hubstats
34
34
  .joins(sanitize_sql_array(["LEFT JOIN hubstats_comments ON hubstats_comments.user_id = hubstats_users.id AND (hubstats_comments.created_at BETWEEN ? AND ?)", start_date, end_date]))
35
35
  .group("hubstats_users.id")
36
36
  }
37
+
38
+ # Public - Counts all of the QA Signoffs for selected user that were signed between the start_date and end_date.
39
+ #
40
+ # start_date - the start of the date range
41
+ # end_date - the end of the data range
42
+ #
43
+ # Returns - count of QA Signoffs
44
+ scope :qa_signoffs_count, lambda {|start_date, end_date|
45
+ select("hubstats_users.id as user_id")
46
+ .select("IFNULL(COUNT(DISTINCT hubstats_qa_signoffs.id),0) AS qa_signoff_count")
47
+ .joins(sanitize_sql_array(["LEFT JOIN hubstats_qa_signoffs ON hubstats_qa_signoffs.user_id = hubstats_users.id AND (hubstats_qa_signoffs.signed_at BETWEEN ? AND ?)", start_date, end_date]))
48
+ .group("hubstats_users.id")
49
+ }
37
50
 
38
51
  # Public - Counts all of the merged pull requests for selected user that occurred between the start_date and end_date.
39
52
  #
@@ -48,16 +61,17 @@ module Hubstats
48
61
  .group("hubstats_users.id")
49
62
  }
50
63
 
51
- # Public - Counts all of the merged pull requests, deploys, and comments that occurred between the start_date and end_date that belong to a user.
64
+ # Public - Counts all of the merged pull requests, deploys, QA Signoffs, and comments that occurred between the start_date and end_date that belong to a user.
52
65
  #
53
66
  # start_date - the start of the date range
54
67
  # end_date - the end of the data range
55
68
  #
56
- # Returns - the count of deploys, pull requests, and comments
69
+ # Returns - the count of deploys, pull requests, QA Signoffs, and comments
57
70
  scope :pull_comment_deploy_count, lambda {|start_date, end_date|
58
- select("hubstats_users.*, pull_request_count, comment_count, deploy_count")
71
+ select("hubstats_users.*, pull_request_count, comment_count, qa_signoff_count, deploy_count")
59
72
  .joins("LEFT JOIN (#{pull_requests_count(start_date, end_date).to_sql}) AS pull_requests ON pull_requests.user_id = hubstats_users.id")
60
73
  .joins("LEFT JOIN (#{comments_count(start_date, end_date).to_sql}) AS comments ON comments.user_id = hubstats_users.id")
74
+ .joins("LEFT JOIN (#{qa_signoffs_count(start_date, end_date).to_sql}) AS qa_signoffs ON qa_signoffs.user_id = hubstats_users.id")
61
75
  .joins("LEFT JOIN (#{deploys_count(start_date, end_date).to_sql}) AS deploys ON deploys.user_id = hubstats_users.id")
62
76
  .group("hubstats_users.id")
63
77
  }
@@ -88,6 +102,19 @@ module Hubstats
88
102
  .group("hubstats_users.id")
89
103
  }
90
104
 
105
+ # Public - Counts all of the QA Signoffs for selected user that were signed between the start_date and end_date and belong to the repos.
106
+ #
107
+ # start_date - the start of the date range
108
+ # end_date - the end of the data range
109
+ #
110
+ # Returns - count of QA Signoffs
111
+ scope :qa_signoffs_count_by_repo, lambda {|start_date, end_date, repo_id|
112
+ select("hubstats_users.id as user_id")
113
+ .select("COUNT(DISTINCT hubstats_qa_signoffs.id) AS qa_signoff_count")
114
+ .joins(sanitize_sql_array(["LEFT JOIN hubstats_qa_signoffs ON hubstats_qa_signoffs.user_id = hubstats_users.id AND (hubstats_qa_signoffs.signed_at BETWEEN ? AND ?) AND (hubstats_qa_signoffs.repo_id LIKE ?)", start_date, end_date, repo_id]))
115
+ .group("hubstats_users.id")
116
+ }
117
+
91
118
  # Public - Counts all of the pull requests for selected user that occurred between the start_date and end_date and belong to the repos.
92
119
  #
93
120
  # start_date - the start of the date range
@@ -101,17 +128,18 @@ module Hubstats
101
128
  .group("hubstats_users.id")
102
129
  }
103
130
 
104
- # Public - Counts all of the merged pull requests, deploys, and comments that belong to a repository and belong to a user and occurred between
131
+ # Public - Counts all of the merged pull requests, deploys, QA Signoffs and comments that belong to a repository and belong to a user and occurred between
105
132
  # the start_date and end_date.
106
133
  #
107
134
  # start_date - the start of the date range
108
135
  # end_date - the end of the data range
109
136
  #
110
- # Returns - the count of deploys, pull requests, and comments
137
+ # Returns - the count of deploys, pull requests, QA Signoffs, and comments
111
138
  scope :pull_comment_deploy_count_by_repo, lambda {|start_date, end_date, repo_id|
112
- select("hubstats_users.*, pull_request_count, comment_count, deploy_count")
139
+ select("hubstats_users.*, pull_request_count, comment_count, qa_signoff_count, deploy_count")
113
140
  .joins("LEFT JOIN (#{pull_requests_count_by_repo(start_date, end_date, repo_id).to_sql}) AS pull_requests ON pull_requests.user_id = hubstats_users.id")
114
141
  .joins("LEFT JOIN (#{comments_count_by_repo(start_date, end_date, repo_id).to_sql}) AS comments ON comments.user_id = hubstats_users.id")
142
+ .joins("LEFT JOIN (#{qa_signoffs_count_by_repo(start_date, end_date, repo_id).to_sql}) AS qa_signoffs ON qa_signoffs.user_id = hubstats_users.id")
115
143
  .joins("LEFT JOIN (#{deploys_count_by_repo(start_date, end_date, repo_id).to_sql}) AS deploys ON deploys.user_id = hubstats_users.id")
116
144
  .group("hubstats_users.id")
117
145
  }
@@ -131,7 +159,7 @@ module Hubstats
131
159
  .group("hubstats_users.id")
132
160
  }
133
161
 
134
- # Public - Joins all of the metrics together for selected repository: average additions and deletions, comments, pull requests, and deploys.
162
+ # Public - Joins all of the metrics together for selected repository: average additions and deletions, comments, pull requests, QA Signoffs and deploys.
135
163
  # However, will only count those that also have something to do with the repos passed in.
136
164
  #
137
165
  # start_date - the start of the date range
@@ -139,25 +167,27 @@ module Hubstats
139
167
  #
140
168
  # Returns - all of the stats about the user
141
169
  scope :with_all_metrics_repos, lambda {|start_date, end_date, repos|
142
- select("hubstats_users.*, deploy_count, pull_request_count, comment_count, additions, deletions")
170
+ select("hubstats_users.*, deploy_count, pull_request_count, comment_count, qa_signoff_count, additions, deletions")
143
171
  .joins("LEFT JOIN (#{net_additions_count(start_date, end_date).to_sql}) AS net_additions ON net_additions.user_id = hubstats_users.id")
144
172
  .joins("LEFT JOIN (#{pull_requests_count_by_repo(start_date, end_date, repos).to_sql}) AS pull_requests ON pull_requests.user_id = hubstats_users.id")
145
173
  .joins("LEFT JOIN (#{comments_count_by_repo(start_date, end_date, repos).to_sql}) AS comments ON comments.user_id = hubstats_users.id")
174
+ .joins("LEFT JOIN (#{qa_signoffs_count_by_repo(start_date, end_date, repos).to_sql} AS qa_signoffs ON qa_signoffs.user_id = hubstats_users.id")
146
175
  .joins("LEFT JOIN (#{deploys_count_by_repo(start_date, end_date, repos).to_sql}) AS deploys ON deploys.user_id = hubstats_users.id")
147
176
  .group("hubstats_users.id")
148
177
  }
149
178
 
150
- # Public - Joins all of the metrics together for selected user: average additions and deletions, comments, pull requests, and deploys.
179
+ # Public - Joins all of the metrics together for selected user: average additions and deletions, comments, pull requests, QA Signoffs and deploys.
151
180
  #
152
181
  # start_date - the start of the date range
153
182
  # end_date - the end of the data range
154
183
  #
155
184
  # Returns - all of the stats about the user
156
185
  scope :with_all_metrics, lambda {|start_date, end_date|
157
- select("hubstats_users.*, deploy_count, pull_request_count, comment_count, additions, deletions")
186
+ select("hubstats_users.*, deploy_count, pull_request_count, comment_count, qa_signoff_count, additions, deletions")
158
187
  .joins("LEFT JOIN (#{net_additions_count(start_date, end_date).to_sql}) AS net_additions ON net_additions.user_id = hubstats_users.id")
159
188
  .joins("LEFT JOIN (#{pull_requests_count(start_date, end_date).to_sql}) AS pull_requests ON pull_requests.user_id = hubstats_users.id")
160
189
  .joins("LEFT JOIN (#{comments_count(start_date, end_date).to_sql}) AS comments ON comments.user_id = hubstats_users.id")
190
+ .joins("LEFT JOIN (#{qa_signoffs_count(start_date, end_date).to_sql}) AS qa_signoffs ON qa_signoffs.user_id = hubstats_users.id")
161
191
  .joins("LEFT JOIN (#{deploys_count(start_date, end_date).to_sql}) AS deploys ON deploys.user_id = hubstats_users.id")
162
192
  .group("hubstats_users.id")
163
193
  }
@@ -219,6 +249,8 @@ module Hubstats
219
249
  order("pull_request_count #{order}")
220
250
  when 'comments'
221
251
  order("comment_count #{order}")
252
+ when 'signoffs'
253
+ order("qa_signoff_count #{order}")
222
254
  when 'netadditions'
223
255
  order("additions - deletions #{order}")
224
256
  when 'name'
@@ -43,6 +43,12 @@
43
43
  <h4> Comments </h4>
44
44
  </div>
45
45
  <% end %>
46
+ <% if @stats_row_one.has_key? :qa_signoff_count %>
47
+ <div class="col col-lg-2 col-md-3 col-sm-3 col-xs-3 text-center">
48
+ <h1><%= @stats_row_one[:qa_signoff_count] %> </h1>
49
+ <h4> QA Signoffs </h4>
50
+ </div>
51
+ <% end %>
46
52
  <% if @stats_row_one.has_key? :review_count %>
47
53
  <div class="col col-lg-2 col-md-3 col-sm-3 col-xs-3 text-center">
48
54
  <h1> <%= @stats_row_one[:review_count] %> </h1>
@@ -43,6 +43,12 @@
43
43
  <h4> Comments </h4>
44
44
  </div>
45
45
  <% end %>
46
+ <% if @stats_row_two.has_key? :qa_signoff_count %>
47
+ <div class="col col-lg-2 col-md-3 col-sm-3 col-xs-3 text-center">
48
+ <h1><%= @stats_row_one[:qa_signoff_count] %> </h1>
49
+ <h4> QA Signoffs </h4>
50
+ </div>
51
+ <% end %>
46
52
  <% if @stats_row_two.has_key? :review_count %>
47
53
  <div class="col col-lg-2 col-md-3 col-sm-3 col-xs-3 text-center">
48
54
  <h1> <%= @stats_row_two[:review_count] %> </h1>
@@ -4,7 +4,7 @@
4
4
  <div class="user-image col-lg-1 col-md-1 col-sm-1" >
5
5
  <img src= <%= user.avatar_url%> alt= <%= user.login %> >
6
6
  </div>
7
- <div class="user-info col-lg-3 col-md-3 col-sm-3">
7
+ <div class="user-info col-lg-2 col-md-2 col-sm-2">
8
8
  <h4>
9
9
  <%= link_to user.login, user_path(user) %>
10
10
  </h4>
@@ -38,6 +38,13 @@
38
38
  </div>
39
39
  </div>
40
40
  <div class="col-lg-2 col-md-2 col-sm-2">
41
+ <div class="text-center">
42
+ <span class="text-large"><%= user.qa_signoff_count %></span>
43
+ <span class="mega-octicon octicon-checklist"></span>
44
+ </div>
45
+ </div>
46
+
47
+ <div class="col-lg-1 col-md-1 col-sm-1">
41
48
  <div class="text-center">
42
49
  <span class="text-large"><%= user.additions - user.deletions %></span>
43
50
  </div>
@@ -2,7 +2,7 @@
2
2
  <% if @users.length > 0 %>
3
3
  <div class="users">
4
4
  <div class="row single-user header">
5
- <div class="col-lg-4 col-md-4 col-sm-4">
5
+ <div class="col-lg-3 col-md-3 col-sm-3">
6
6
  <a class="header desc" id="name"> GitHub Username <span class="octicon"></span> </a>
7
7
  </div>
8
8
  <div class="col-lg-2 col-md-2 col-sm-2">
@@ -15,6 +15,9 @@
15
15
  <a class="header desc" id="comments"> Comments <span class="octicon"></span></a>
16
16
  </div>
17
17
  <div class="col-lg-2 col-md-2 col-sm-2">
18
+ <a class="header desc" id="signoffs"> QA Signoffs <span class="octicon"></span></a>
19
+ </div>
20
+ <div class="col-lg-1 col-md-1 col-sm-1">
18
21
  <a class="header desc" id="netadditions"> Net Additions <span class="octicon"></span></a>
19
22
  </div>
20
23
  </div>
@@ -14,7 +14,15 @@
14
14
  </h4>
15
15
 
16
16
  <!-- Show all of the stats about the user -->
17
- <%= render 'hubstats/partials/quick_stats_one' %>
17
+
18
+ <%= render 'hubstats/partials/quick_stats_one' %>
19
+ <br>
20
+ <br>
21
+ <br>
22
+ <br>
23
+ <br>
24
+ <br>
25
+ <%= render 'hubstats/partials/quick_stats_two' %>
18
26
  </div>
19
27
 
20
28
  <div class="row">
@@ -0,0 +1,14 @@
1
+ class AddQaSignoff < ActiveRecord::Migration
2
+ def change
3
+ create_table :hubstats_qa_signoffs do |t|
4
+ t.belongs_to :user
5
+ t.belongs_to :repo
6
+ t.belongs_to :pull_request
7
+ t.string :label_name
8
+ end
9
+
10
+ add_index :hubstats_qa_signoffs, :user_id
11
+ add_index :hubstats_qa_signoffs, :repo_id
12
+ add_index :hubstats_qa_signoffs, :pull_request_id
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ class SignedColumnForSignoff < ActiveRecord::Migration
2
+ def change
3
+ add_column :hubstats_qa_signoffs, :signed_at, :datetime
4
+ end
5
+ end
@@ -22,7 +22,8 @@ module Hubstats
22
22
  end
23
23
  end
24
24
 
25
- # Public - Gets the information for the PR, creates/updates the new PR, grabs the labels, and makes new labels
25
+ # Public - Gets the information for the PR, creates/updates the new PR, grabs the labels, and makes new labels;
26
+ # if the label qa-approved is added or removed, a new QA Signoff record will be made
26
27
  #
27
28
  # payload - the information that we will use to get data off of
28
29
  #
@@ -31,7 +32,12 @@ module Hubstats
31
32
  pull_request = payload[:pull_request]
32
33
  pull_request[:repository] = payload[:repository]
33
34
  new_pull = Hubstats::PullRequest.create_or_update(pull_request.with_indifferent_access)
34
- if payload[:action].include?('labeled')
35
+ if payload[:github_action].include?('labeled')
36
+ if payload[:github_action].include?('unlabeled') && payload[:label][:name].include?('qa-approved')
37
+ Hubstats::QaSignoff.remove_signoff(payload[:repository][:id], payload[:pull_request][:id])
38
+ elsif payload[:label][:name].include?('qa-approved')
39
+ Hubstats::QaSignoff.first_or_create(payload[:repository][:id], payload[:pull_request][:id], payload[:sender][:id])
40
+ end
35
41
  new_pull.update_label(payload)
36
42
  else
37
43
  repo_name = Hubstats::Repo.where(id: new_pull.repo_id).first.full_name
@@ -1,3 +1,3 @@
1
1
  module Hubstats
2
- VERSION = "0.8.0"
2
+ VERSION = "0.9.0"
3
3
  end
@@ -15,6 +15,7 @@ module Hubstats
15
15
  end
16
16
 
17
17
  it 'should add labels to pull request' do
18
+ payload[:github_action] = 'created'
18
19
  allow(PullRequest).to receive(:create_or_update) {pull}
19
20
  allow(Repo).to receive(:where) {[repo,repo]}
20
21
  allow(GithubAPI).to receive(:get_labels_for_pull) {[{name: 'low'}, {name: 'high'}]}
@@ -23,7 +24,7 @@ module Hubstats
23
24
  end
24
25
 
25
26
  it 'should add new labels to pull requests' do
26
- payload[:action] = 'labeled'
27
+ payload[:github_action] = 'labeled'
27
28
  payload[:label] = {name: 'new_label'}
28
29
  allow(PullRequest).to receive(:create_or_update) {pull}
29
30
  allow(Repo).to receive(:where) {[repo,repo]}
@@ -33,7 +34,7 @@ module Hubstats
33
34
  end
34
35
 
35
36
  it 'should remove old labels from pull requests' do
36
- payload[:action] = 'unlabeled'
37
+ payload[:github_action] = 'unlabeled'
37
38
  payload[:label] = {name: 'old_label'}
38
39
  allow(PullRequest).to receive(:create_or_update) {pull}
39
40
  allow(Repo).to receive(:where) {[repo,repo]}
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ module Hubstats
4
+ describe QaSignoff, :type => :model do
5
+ it 'should create and return a QA Signoff' do
6
+ signoff = QaSignoff.first_or_create(123, 456, 789)
7
+ expect(signoff.user_id).to eq(789)
8
+ expect(signoff.repo_id).to eq(123)
9
+ expect(signoff.pull_request_id).to eq(456)
10
+ end
11
+
12
+ it 'should remove a signoff' do
13
+ signoff = QaSignoff.first_or_create(123, 456, 789)
14
+ expect(Hubstats::QaSignoff.where(pull_request_id: 456).count).to eq(1)
15
+ QaSignoff.remove_signoff(123, 456)
16
+ expect(Hubstats::QaSignoff.where(pull_request_id: 456)).to eq([])
17
+ end
18
+ end
19
+ end
@@ -11,14 +11,13 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20160113182419) do
14
+ ActiveRecord::Schema.define(version: 20161215193314) do
15
15
 
16
16
  create_table "hubstats_comments", force: :cascade do |t|
17
17
  t.string "html_url", limit: 255
18
18
  t.string "url", limit: 255
19
19
  t.string "pull_request_url", limit: 255
20
20
  t.integer "path", limit: 4
21
- t.string "body_string", limit: 255
22
21
  t.string "kind", limit: 255
23
22
  t.integer "user_id", limit: 4
24
23
  t.integer "pull_request_id", limit: 4
@@ -82,6 +81,18 @@ ActiveRecord::Schema.define(version: 20160113182419) do
82
81
  add_index "hubstats_pull_requests", ["team_id"], name: "index_hubstats_pull_requests_on_team_id", using: :btree
83
82
  add_index "hubstats_pull_requests", ["user_id"], name: "index_hubstats_pull_requests_on_user_id", using: :btree
84
83
 
84
+ create_table "hubstats_qa_signoffs", force: :cascade do |t|
85
+ t.integer "user_id", limit: 4
86
+ t.integer "repo_id", limit: 4
87
+ t.integer "pull_request_id", limit: 4
88
+ t.string "label_name", limit: 255
89
+ t.datetime "signed_at"
90
+ end
91
+
92
+ add_index "hubstats_qa_signoffs", ["pull_request_id"], name: "index_hubstats_qa_signoffs_on_pull_request_id", using: :btree
93
+ add_index "hubstats_qa_signoffs", ["repo_id"], name: "index_hubstats_qa_signoffs_on_repo_id", using: :btree
94
+ add_index "hubstats_qa_signoffs", ["user_id"], name: "index_hubstats_qa_signoffs_on_user_id", using: :btree
95
+
85
96
  create_table "hubstats_repos", force: :cascade do |t|
86
97
  t.string "name", limit: 255
87
98
  t.string "full_name", limit: 255
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hubstats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elliot Hursh
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-12-19 00:00:00.000000000 Z
12
+ date: 2016-12-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -226,6 +226,7 @@ files:
226
226
  - app/controllers/hubstats/deploys_controller.rb
227
227
  - app/controllers/hubstats/events_controller.rb
228
228
  - app/controllers/hubstats/pull_requests_controller.rb
229
+ - app/controllers/hubstats/qa_signoffs_controller.rb
229
230
  - app/controllers/hubstats/repos_controller.rb
230
231
  - app/controllers/hubstats/teams_controller.rb
231
232
  - app/controllers/hubstats/users_controller.rb
@@ -239,6 +240,7 @@ files:
239
240
  - app/models/hubstats/deploy.rb
240
241
  - app/models/hubstats/label.rb
241
242
  - app/models/hubstats/pull_request.rb
243
+ - app/models/hubstats/qa_signoff.rb
242
244
  - app/models/hubstats/repo.rb
243
245
  - app/models/hubstats/team.rb
244
246
  - app/models/hubstats/user.rb
@@ -302,6 +304,8 @@ files:
302
304
  - db/migrate/20160113181700_copy_body_string_to_body_text.rb
303
305
  - db/migrate/20160113182307_rename_body_to_body_string.rb
304
306
  - db/migrate/20160113182356_rename_body_text_to_body.rb
307
+ - db/migrate/20161215163228_add_qa_signoff.rb
308
+ - db/migrate/20161215193059_signed_column_for_signoff.rb
305
309
  - db/seeds.rb
306
310
  - hubstats.gemspec
307
311
  - lib/generators/hubstats/install_generator.rb
@@ -339,6 +343,7 @@ files:
339
343
  - spec/models/hubstats/deploy_spec.rb
340
344
  - spec/models/hubstats/label_spec.rb
341
345
  - spec/models/hubstats/pull_request_spec.rb
346
+ - spec/models/hubstats/qa_signoff_spec.rb
342
347
  - spec/models/hubstats/repo_spec.rb
343
348
  - spec/models/hubstats/team_spec.rb
344
349
  - spec/models/hubstats/user_spec.rb
@@ -427,6 +432,7 @@ test_files:
427
432
  - spec/models/hubstats/deploy_spec.rb
428
433
  - spec/models/hubstats/label_spec.rb
429
434
  - spec/models/hubstats/pull_request_spec.rb
435
+ - spec/models/hubstats/qa_signoff_spec.rb
430
436
  - spec/models/hubstats/repo_spec.rb
431
437
  - spec/models/hubstats/team_spec.rb
432
438
  - spec/models/hubstats/user_spec.rb