lita-github 0.1.2 → 0.2.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 +4 -4
- data/.travis.yml +3 -4
- data/README.md +5 -5
- data/Rakefile +1 -0
- data/lib/lita-github/version.rb +1 -1
- data/lib/lita/handlers/github.rb +1 -1
- data/lib/lita/handlers/github_repo.rb +23 -8
- data/spec/unit/lita/handlers/github_issues_spec.rb +15 -7
- data/spec/unit/lita/handlers/github_org_spec.rb +38 -26
- data/spec/unit/lita/handlers/github_pr_spec.rb +34 -34
- data/spec/unit/lita/handlers/github_repo_spec.rb +210 -110
- data/spec/unit/lita/handlers/github_spec.rb +5 -5
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2def5b26a94d3e8cc55f5c8da28109c7c04283a6
|
4
|
+
data.tar.gz: 019e7d005d5fa98459bd5fb36fcc24e1b36d34b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6afe9d22373957f410bb03af8530a367d00f81ebca9ec55d3cb5d698ae50d6cb55b89c05f85076ce21399d45200e5a95045f09e3dfa52c1c2fc610832a2dfa2f
|
7
|
+
data.tar.gz: bc8bf0a906252b8fc026e10ef798ac65a110c6be0ab99ccfdd664c688a2f43d4f244b106b2e3c66eabd220865a6671ef46f0cc236f2deb39f94c647e009a64a7
|
data/.travis.yml
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
branches:
|
2
2
|
only:
|
3
3
|
- master
|
4
|
+
sudo: false
|
4
5
|
env: CODECLIMATE_REPO_TOKEN=3ffc4d9148b686fd07872259719fc6458a5521213e73e1f7b9db8546292f622a
|
5
6
|
services:
|
6
7
|
- redis-server
|
7
8
|
language: ruby
|
8
9
|
rvm:
|
10
|
+
- 2.2.2
|
11
|
+
- 2.2.1
|
9
12
|
- 2.1.5
|
10
13
|
- 2.1.4
|
11
|
-
- 2.1.3
|
12
|
-
- 2.1.2
|
13
|
-
- 2.1.1
|
14
|
-
- 2.1.0
|
data/README.md
CHANGED
@@ -22,14 +22,14 @@ Configuration
|
|
22
22
|
The configuration options will get their own in-depth doc a little further down the line. Here are the important ones for now:
|
23
23
|
|
24
24
|
* `config.handlers.github.access_token = ''`
|
25
|
-
* Your
|
25
|
+
* Your GitHub access token (generated from Settings > Security > Personal Applications)
|
26
26
|
* This is an administrative utility, so the token will need pretty wide access to leverage this plugin fully
|
27
27
|
* `config.handlers.github.default_org = ''`
|
28
28
|
* Your company may only have one organization, the handler will allow you to type just the repo name (`lita-github`) instead of `PagerDuty/lita-github`.
|
29
|
-
* `config.handlers.github.
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
* `config.handlers.github.default_team_slugs = ['']`
|
30
|
+
* if no team is provided when adding a repo, it uses these teams by default -- if unset, only owners can access repo
|
31
|
+
* the default teams that should be added to a repo based on the slug name:
|
32
|
+
* When clicking on a team in your org you can use the URL to get the slug: https://github.com/orgs/<ORG>/teams/[slug]
|
33
33
|
|
34
34
|
Commands
|
35
35
|
--------
|
data/Rakefile
CHANGED
data/lib/lita-github/version.rb
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
# @author Tim Heckman <tim@pagerduty.com>
|
22
22
|
module LitaGithub
|
23
23
|
# lita-github version
|
24
|
-
VERSION = '0.
|
24
|
+
VERSION = '0.2.0'
|
25
25
|
|
26
26
|
# lita-github version split amongst different revisions
|
27
27
|
MAJOR_VERSION, MINOR_VERSION, REVISION = VERSION.split('.').map(&:to_i)
|
data/lib/lita/handlers/github.rb
CHANGED
@@ -68,7 +68,7 @@ module Lita
|
|
68
68
|
def self.default_config(config)
|
69
69
|
# when setting default configuration values please remember one thing:
|
70
70
|
# secure and safe by default
|
71
|
-
config.
|
71
|
+
config.default_team_slugs = nil
|
72
72
|
config.repo_private_default = true
|
73
73
|
config.org_team_add_allowed_perms = %w(pull)
|
74
74
|
|
@@ -277,11 +277,14 @@ module Lita
|
|
277
277
|
def extrapolate_create_opts(opts, org)
|
278
278
|
opts[:organization] = org
|
279
279
|
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
280
|
+
first_team, other_teams = filter_teams(default_teams(org))
|
281
|
+
|
282
|
+
begin
|
283
|
+
t_id = team_id_by_slug(opts.fetch(:team), org)
|
284
|
+
rescue KeyError
|
285
|
+
t_id = first_team
|
286
|
+
opts[:other_teams] = other_teams unless other_teams.empty?
|
287
|
+
ensure
|
285
288
|
opts[:team_id] = t_id unless t_id.nil?
|
286
289
|
end unless opts.key?(:team_id)
|
287
290
|
|
@@ -290,8 +293,17 @@ module Lita
|
|
290
293
|
opts
|
291
294
|
end
|
292
295
|
|
293
|
-
def
|
294
|
-
|
296
|
+
def filter_teams(teams)
|
297
|
+
[teams.first, teams[1..-1].reject(&:nil?)] # Filter invalid team IDs
|
298
|
+
end
|
299
|
+
|
300
|
+
def default_teams(org)
|
301
|
+
teams = config.default_team_slugs
|
302
|
+
# If default_team_slugs is either a non-array (e.g. nil) or an empty
|
303
|
+
# array, return an array containing nil
|
304
|
+
return [nil] if !teams.is_a?(Array) || teams.empty?
|
305
|
+
# If it's a populated array, return an array of corresponding team IDs
|
306
|
+
teams.map { |team| team_id_by_slug(team, org) }
|
295
307
|
end
|
296
308
|
|
297
309
|
def should_repo_be_private?(value)
|
@@ -308,7 +320,7 @@ module Lita
|
|
308
320
|
true
|
309
321
|
when 'false'
|
310
322
|
false
|
311
|
-
else # when some
|
323
|
+
else # when some invalid value...
|
312
324
|
config.repo_private_default
|
313
325
|
end
|
314
326
|
end
|
@@ -318,6 +330,9 @@ module Lita
|
|
318
330
|
reply = nil
|
319
331
|
begin
|
320
332
|
octo.create_repository(repo, opts)
|
333
|
+
opts[:other_teams].each do |team|
|
334
|
+
add_team_to_repo(full_name, team)
|
335
|
+
end if opts.key?(:other_teams)
|
321
336
|
ensure
|
322
337
|
if repo?(full_name)
|
323
338
|
repo_url = "https://github.com/#{full_name}"
|
@@ -97,9 +97,9 @@ describe Lita::Handlers::GithubIssues, lita_handler: true do
|
|
97
97
|
}
|
98
98
|
]
|
99
99
|
@octo_obj = double('Octokit::Client', list_issues: issues)
|
100
|
-
|
101
|
-
|
102
|
-
|
100
|
+
allow_any_instance_of(Lita::Handlers::GithubIssues).to receive(:octo).and_return(@octo_obj)
|
101
|
+
allow_any_instance_of(Lita::Handlers::GithubIssues).to receive(:repo?).and_return(true)
|
102
|
+
allow_any_instance_of(Lita::Handlers::GithubIssues).to receive(:validate_list_opts).and_return('')
|
103
103
|
end
|
104
104
|
|
105
105
|
context 'when all goes well' do
|
@@ -123,7 +123,9 @@ GrapeDuty/lita-test #84: 'YZYZYZYZ' opened by theckman :: https://github.com/Gra
|
|
123
123
|
end
|
124
124
|
|
125
125
|
context 'when there is an option that fails validation' do
|
126
|
-
before
|
126
|
+
before do
|
127
|
+
allow_any_instance_of(Lita::Handlers::GithubIssues).to receive(:validate_list_opts).and_return('sadpanda')
|
128
|
+
end
|
127
129
|
|
128
130
|
it 'should reply with the response from .validate_list_opts' do
|
129
131
|
send_command('gh issues GrapeDuty/lita-test')
|
@@ -132,7 +134,9 @@ GrapeDuty/lita-test #84: 'YZYZYZYZ' opened by theckman :: https://github.com/Gra
|
|
132
134
|
end
|
133
135
|
|
134
136
|
context 'when the repo is not found' do
|
135
|
-
before
|
137
|
+
before do
|
138
|
+
allow_any_instance_of(Lita::Handlers::GithubIssues).to receive(:repo?).and_return(false)
|
139
|
+
end
|
136
140
|
|
137
141
|
it 'should reply with response indicating repo not found' do
|
138
142
|
send_command('gh issues GrapeDuty/lita-test')
|
@@ -141,7 +145,9 @@ GrapeDuty/lita-test #84: 'YZYZYZYZ' opened by theckman :: https://github.com/Gra
|
|
141
145
|
end
|
142
146
|
|
143
147
|
context 'when an option passes validation, but fails from GitHub' do
|
144
|
-
before
|
148
|
+
before do
|
149
|
+
allow(@octo_obj).to receive(:list_issues).and_raise(Octokit::UnprocessableEntity.new)
|
150
|
+
end
|
145
151
|
|
146
152
|
it 'should reply indicating an issue was hit and include the exception message' do
|
147
153
|
send_command('gh issues GrapeDuty/lita-test')
|
@@ -151,7 +157,9 @@ Octokit::UnprocessableEntity"
|
|
151
157
|
end
|
152
158
|
|
153
159
|
context 'when there is a general error when calling GitHub' do
|
154
|
-
before
|
160
|
+
before do
|
161
|
+
allow(@octo_obj).to receive(:list_issues).and_raise(StandardError.new)
|
162
|
+
end
|
155
163
|
|
156
164
|
it 'should reply indicating an issue was hit and include the exception message' do
|
157
165
|
send_command('gh issues GrapeDuty/lita-test')
|
@@ -135,8 +135,8 @@ describe Lita::Handlers::GithubOrg, lita_handler: true do
|
|
135
135
|
]
|
136
136
|
conf_obj = double('Lita::Configuration', default_org: 'GrapeDuty')
|
137
137
|
@octo_obj = double('Octokit::Client', organization_teams: @teams)
|
138
|
-
|
139
|
-
|
138
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:config).and_return(conf_obj)
|
139
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:octo).and_return(@octo_obj)
|
140
140
|
end
|
141
141
|
|
142
142
|
context 'when provided a valid org' do
|
@@ -169,9 +169,9 @@ Name: HeckmanTest, Slug: heckmantest, ID: 42, Perms: push
|
|
169
169
|
@octo_obj = double('Octokit::Client', create_team: @team)
|
170
170
|
@perms = %w(pull push)
|
171
171
|
@conf_obj = double('Lita::Config', org_team_add_allowed_perms: @perms)
|
172
|
-
|
173
|
-
|
174
|
-
|
172
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:config).and_return(@conf_obj)
|
173
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:func_disabled?).and_return(false)
|
174
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:octo).and_return(@octo_obj)
|
175
175
|
end
|
176
176
|
|
177
177
|
context 'when all goes well' do
|
@@ -184,7 +184,9 @@ Name: HeckmanTest, Slug: heckmantest, ID: 42, Perms: push
|
|
184
184
|
end
|
185
185
|
|
186
186
|
context 'when the method is disabled' do
|
187
|
-
before
|
187
|
+
before do
|
188
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:func_disabled?).and_return(true)
|
189
|
+
end
|
188
190
|
|
189
191
|
it 'should return the method disabled error' do
|
190
192
|
send_command('gh org team add GrapeDuty name:"HeckmanTest" perms:pull')
|
@@ -231,10 +233,10 @@ Missing the perms option
|
|
231
233
|
before do
|
232
234
|
@team = { name: 'HeckmanTest', id: 42, slug: 'heckmantest', permission: 'pull' }
|
233
235
|
@octo_obj = double('Octokit::Client', delete_team: true)
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
236
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:config).and_return(@conf_obj)
|
237
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:func_disabled?).and_return(false)
|
238
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:octo).and_return(@octo_obj)
|
239
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:team?).with('42').and_return(@team)
|
238
240
|
end
|
239
241
|
|
240
242
|
context 'when all goes well' do
|
@@ -245,7 +247,9 @@ Missing the perms option
|
|
245
247
|
end
|
246
248
|
|
247
249
|
context 'when the method is disabled' do
|
248
|
-
before
|
250
|
+
before do
|
251
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:func_disabled?).and_return(true)
|
252
|
+
end
|
249
253
|
|
250
254
|
it 'should return the method disabled error' do
|
251
255
|
send_command('gh org team rm GrapeDuty 42')
|
@@ -254,7 +258,9 @@ Missing the perms option
|
|
254
258
|
end
|
255
259
|
|
256
260
|
context 'when the team does not exist' do
|
257
|
-
before
|
261
|
+
before do
|
262
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:team?).with('42').and_return(false)
|
263
|
+
end
|
258
264
|
|
259
265
|
it 'should respond with the team not found error' do
|
260
266
|
send_command('gh org team rm GrapeDuty 42')
|
@@ -289,9 +295,9 @@ Missing the perms option
|
|
289
295
|
@conf_obj = double('Lita::Config', default_org: 'GrapeDuty')
|
290
296
|
allow(@octo_obj).to receive(:user).with(no_args).and_return(@self_user)
|
291
297
|
allow(@octo_obj).to receive(:user).with('theckman').and_return(@t_user)
|
292
|
-
|
293
|
-
|
294
|
-
|
298
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:func_disabled?).and_return(false)
|
299
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:octo).and_return(@octo_obj)
|
300
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:cofig).and_return(@conf_obj)
|
295
301
|
end
|
296
302
|
|
297
303
|
context 'when all goes well' do
|
@@ -302,7 +308,9 @@ Missing the perms option
|
|
302
308
|
end
|
303
309
|
|
304
310
|
context 'when the method is disabled' do
|
305
|
-
before
|
311
|
+
before do
|
312
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:func_disabled?).and_return(true)
|
313
|
+
end
|
306
314
|
|
307
315
|
it 'should return the method disabled error' do
|
308
316
|
send_command('gh org eject GrapeDuty theckman')
|
@@ -368,10 +376,10 @@ Missing the perms option
|
|
368
376
|
@conf_obj = double('Lita::Config', default_org: 'GrapeDuty')
|
369
377
|
allow(@octo_obj).to receive(:user).with(no_args).and_return(@self_user)
|
370
378
|
allow(@octo_obj).to receive(:user).with('theckman').and_return(@t_user)
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
379
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:func_disabled?).and_return(false)
|
380
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:octo).and_return(@octo_obj)
|
381
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:cofig).and_return(@conf_obj)
|
382
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:team_id).and_return(42)
|
375
383
|
end
|
376
384
|
|
377
385
|
context 'when all goes well' do
|
@@ -382,7 +390,9 @@ Missing the perms option
|
|
382
390
|
end
|
383
391
|
|
384
392
|
context 'when the method is disabled' do
|
385
|
-
before
|
393
|
+
before do
|
394
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:func_disabled?).and_return(true)
|
395
|
+
end
|
386
396
|
|
387
397
|
it 'should return the method disabled error' do
|
388
398
|
send_command('gh org user add GrapeDuty heckmantest theckman')
|
@@ -448,10 +458,10 @@ Missing the perms option
|
|
448
458
|
@conf_obj = double('Lita::Config', default_org: 'GrapeDuty')
|
449
459
|
allow(@octo_obj).to receive(:user).with(no_args).and_return(@self_user)
|
450
460
|
allow(@octo_obj).to receive(:user).with('theckman').and_return(@t_user)
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
461
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:func_disabled?).and_return(false)
|
462
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:octo).and_return(@octo_obj)
|
463
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:cofig).and_return(@conf_obj)
|
464
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:team_id).and_return(42)
|
455
465
|
end
|
456
466
|
|
457
467
|
context 'when all goes well' do
|
@@ -462,7 +472,9 @@ Missing the perms option
|
|
462
472
|
end
|
463
473
|
|
464
474
|
context 'when the method is disabled' do
|
465
|
-
before
|
475
|
+
before do
|
476
|
+
allow_any_instance_of(Lita::Handlers::GithubOrg).to receive(:func_disabled?).and_return(true)
|
477
|
+
end
|
466
478
|
|
467
479
|
it 'should return the method disabled error' do
|
468
480
|
send_command('gh org user rm GrapeDuty heckmantest theckman')
|
@@ -52,7 +52,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
52
52
|
describe '.merge_pr' do
|
53
53
|
before do
|
54
54
|
@octo_obj = double('Octokit::Client', merge_pull_request: :ohai)
|
55
|
-
|
55
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:octo).and_return(@octo_obj)
|
56
56
|
end
|
57
57
|
|
58
58
|
let(:pr_num) { 42 }
|
@@ -167,7 +167,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
167
167
|
@user_obj = { name: 'Tim Heckman' }
|
168
168
|
@cs_obj = { state: 'success' }
|
169
169
|
@octo_obj = double('Octokit::Client', user: @user_obj, combined_status: @cs_obj)
|
170
|
-
|
170
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:octo).and_return(@octo_obj)
|
171
171
|
end
|
172
172
|
|
173
173
|
let(:pr_obj) do
|
@@ -217,7 +217,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
217
217
|
context 'when user has no name set' do
|
218
218
|
before do
|
219
219
|
@octo_obj = double('Octokit::Client', user: {}, combined_status: @cs_obj)
|
220
|
-
|
220
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:octo).and_return(@octo_obj)
|
221
221
|
end
|
222
222
|
|
223
223
|
it 'should not include the real name parenthesis' do
|
@@ -269,7 +269,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
269
269
|
before do
|
270
270
|
@user_obj = { name: 'Tim Heckman' }
|
271
271
|
@octo_obj = double('Octokit::Client', user: @user_obj)
|
272
|
-
|
272
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:octo).and_return(@octo_obj)
|
273
273
|
end
|
274
274
|
|
275
275
|
let(:pr_obj) do
|
@@ -320,7 +320,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
320
320
|
before do
|
321
321
|
@user_obj = {}
|
322
322
|
@octo_obj = double('Octokit::Client', user: @user_obj)
|
323
|
-
|
323
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:octo).and_return(@octo_obj)
|
324
324
|
end
|
325
325
|
|
326
326
|
it 'should set the :merged_by key without parenthesis' do
|
@@ -352,11 +352,11 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
352
352
|
|
353
353
|
describe '.build_pr_info' do
|
354
354
|
before do
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
355
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_header!).and_return(nil)
|
356
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_commitinfo!).and_return(nil)
|
357
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_status!).and_return(nil)
|
358
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_merge!).and_return(nil)
|
359
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_comments!).and_return(nil)
|
360
360
|
end
|
361
361
|
|
362
362
|
let(:pr_obj) { :ohai }
|
@@ -366,27 +366,27 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
366
366
|
end
|
367
367
|
|
368
368
|
it 'should call .build_pr_header!' do
|
369
|
-
|
369
|
+
expect_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_header!).with({}, pr_obj).and_return(nil)
|
370
370
|
github_pr.send(:build_pr_info, pr_obj, full_name)
|
371
371
|
end
|
372
372
|
|
373
373
|
it 'should call .build_pr_commitinfo!' do
|
374
|
-
|
374
|
+
expect_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_commitinfo!).with({}, pr_obj).and_return(nil)
|
375
375
|
github_pr.send(:build_pr_info, pr_obj, full_name)
|
376
376
|
end
|
377
377
|
|
378
378
|
it 'should call .build_pr_status!' do
|
379
|
-
|
379
|
+
expect_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_status!).with({}, pr_obj, full_name).and_return(nil)
|
380
380
|
github_pr.send(:build_pr_info, pr_obj, full_name)
|
381
381
|
end
|
382
382
|
|
383
383
|
it 'should call .build_pr_merge!' do
|
384
|
-
|
384
|
+
expect_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_merge!).with({}, pr_obj).and_return(nil)
|
385
385
|
github_pr.send(:build_pr_info, pr_obj, full_name)
|
386
386
|
end
|
387
387
|
|
388
388
|
it 'should call .build_pr_comments!' do
|
389
|
-
|
389
|
+
expect_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_comments!).with({}, pr_obj).and_return(nil)
|
390
390
|
github_pr.send(:build_pr_info, pr_obj, full_name)
|
391
391
|
end
|
392
392
|
end
|
@@ -408,7 +408,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
408
408
|
before do
|
409
409
|
@merge_status = { sha: 'abc456', merged: true, message: 'Pull Request successfully merged' }
|
410
410
|
@octo_obj = double('Octokit::Client', merge_pull_request: @merge_status)
|
411
|
-
|
411
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:octo).and_return(@octo_obj)
|
412
412
|
end
|
413
413
|
|
414
414
|
context 'when all goes well' do
|
@@ -423,7 +423,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
423
423
|
@merge_status = { sha: 'abc456', merged: false, message: '*BOOM*' }
|
424
424
|
@octo_obj = double('Octokit::Client')
|
425
425
|
allow(@octo_obj).to receive(:merge_pull_request).and_raise(StandardError.new)
|
426
|
-
|
426
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:octo).and_return(@octo_obj)
|
427
427
|
end
|
428
428
|
|
429
429
|
it 'should return nil' do
|
@@ -445,8 +445,8 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
445
445
|
review_comments: 2, comments: 1
|
446
446
|
}
|
447
447
|
@pr_resp = { fail: false, not_found: false, pr: @pr_info }
|
448
|
-
|
449
|
-
|
448
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:pull_request).and_return(@pr_resp)
|
449
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_info).and_return(@pr_info)
|
450
450
|
end
|
451
451
|
|
452
452
|
it 'should reply with the expeced output' do
|
@@ -472,8 +472,8 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
472
472
|
merged_by: 'theckman (Tim Heckman)', review_comments: 2, comments: 1
|
473
473
|
}
|
474
474
|
@pr_resp = { fail: false, not_found: false, pr: @pr_info }
|
475
|
-
|
476
|
-
|
475
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:pull_request).and_return(@pr_resp)
|
476
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:build_pr_info).and_return(@pr_info)
|
477
477
|
end
|
478
478
|
|
479
479
|
it 'should reply with the expeced output' do
|
@@ -492,7 +492,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
492
492
|
context 'when the PR was not found' do
|
493
493
|
before do
|
494
494
|
@pr_resp = { fail: true, not_found: true, pr: @pr_info }
|
495
|
-
|
495
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:pull_request).and_return(@pr_resp)
|
496
496
|
end
|
497
497
|
|
498
498
|
it 'should reply with the not found error' do
|
@@ -508,15 +508,15 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
508
508
|
@pr_obj = { head: { ref: 'fix-some-bugs' }, title: 'fix bug' }
|
509
509
|
@merge_status = { sha: 'abc456', merged: true, message: 'Pull Request successfully merged' }
|
510
510
|
@octo_obj = double('Octokit::Client', pull_request: @pr_obj)
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
511
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:octo).and_return(@octo_obj)
|
512
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:func_disabled?).and_return(false)
|
513
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:config).and_return(@cfg_obj)
|
514
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:merge_pr).and_return(@merge_status)
|
515
515
|
end
|
516
516
|
|
517
517
|
context 'when command disabled' do
|
518
518
|
before do
|
519
|
-
|
519
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:func_disabled?).and_return(true)
|
520
520
|
end
|
521
521
|
|
522
522
|
it 'should no-op and say such' do
|
@@ -538,7 +538,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
538
538
|
|
539
539
|
context 'when merging should succeed' do
|
540
540
|
it 'should set the right commit message' do
|
541
|
-
|
541
|
+
expect_any_instance_of(Lita::Handlers::GithubPR).to receive(:merge_pr).with(
|
542
542
|
'GrapeDuty', 'lita-test', '42', "Merge pull request #42 from GrapeDuty/fix-some-bugs\n\nfix bug"
|
543
543
|
)
|
544
544
|
send_command('shipit GrapeDuty/lita-test #42')
|
@@ -554,7 +554,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
554
554
|
context 'when merging bombs' do
|
555
555
|
before do
|
556
556
|
@merge_status = { sha: 'abc456', merged: false, message: '*BOOM*' }
|
557
|
-
|
557
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:merge_pr).and_return(@merge_status)
|
558
558
|
end
|
559
559
|
|
560
560
|
it 'should confirm the failure' do
|
@@ -571,7 +571,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
571
571
|
before do
|
572
572
|
@merge_status = { sha: 'abc456', merged: false, message: '*BOOM*' }
|
573
573
|
@octo_obj = double('Octokit::Client', pull_request: @pr_obj)
|
574
|
-
|
574
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:merge_pr).and_return(nil)
|
575
575
|
end
|
576
576
|
|
577
577
|
it 'should confirm the failure' do
|
@@ -589,8 +589,8 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
589
589
|
before do
|
590
590
|
cfg_obj = double('Lita::Configuration')
|
591
591
|
octo_obj = double('Octokit::Client', pull_requests: [])
|
592
|
-
|
593
|
-
|
592
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:octo).and_return(octo_obj)
|
593
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:config).and_return(cfg_obj)
|
594
594
|
end
|
595
595
|
|
596
596
|
context 'when there are no pull requests' do
|
@@ -607,7 +607,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
607
607
|
{ title: 'Test1', number: 42, html_url: 'htmlurl', user: { login: 'theckman' } }
|
608
608
|
]
|
609
609
|
octo_obj = double('Octokit::Client', pull_requests: pr)
|
610
|
-
|
610
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:octo).and_return(octo_obj)
|
611
611
|
end
|
612
612
|
|
613
613
|
it 'should reply with the PRs' do
|
@@ -643,7 +643,7 @@ describe Lita::Handlers::GithubPR, lita_handler: true do
|
|
643
643
|
{ title: 'Test1', number: 42, html_url: 'xxx', user: { login: 'theckman' } }
|
644
644
|
]
|
645
645
|
octo_obj = double('Octokit::Client', pull_requests: pr)
|
646
|
-
|
646
|
+
allow_any_instance_of(Lita::Handlers::GithubPR).to receive(:octo).and_return(octo_obj)
|
647
647
|
end
|
648
648
|
|
649
649
|
it 'should return the list of ten oldest & ten newest' do
|
@@ -128,125 +128,208 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
131
|
-
describe '.
|
131
|
+
describe '.default_teams' do
|
132
132
|
before do
|
133
133
|
allow(github_repo).to receive(:team_id_by_slug).and_return(88)
|
134
134
|
end
|
135
135
|
|
136
|
-
context 'when
|
136
|
+
context 'when default_team_slugs is set' do
|
137
137
|
before do
|
138
|
-
cfg_obj = double('Lita::Configuration',
|
138
|
+
cfg_obj = double('Lita::Configuration', default_team_slugs: ['heckman'])
|
139
139
|
allow(github_repo).to receive(:config).and_return(cfg_obj)
|
140
140
|
end
|
141
141
|
|
142
|
-
it 'should return the team ID of the slug' do
|
142
|
+
it 'should return an array containing the team ID of the slug' do
|
143
143
|
expect(github_repo).to receive(:team_id_by_slug).with('heckman', 'GrapeDuty')
|
144
144
|
.and_return(42)
|
145
|
-
expect(github_repo.send(:
|
145
|
+
expect(github_repo.send(:default_teams, github_org)).to eql [42]
|
146
146
|
end
|
147
147
|
end
|
148
148
|
|
149
|
-
context 'when
|
149
|
+
context 'when default_team_slugs is not set' do
|
150
150
|
before do
|
151
|
-
cfg_obj = double('Lita::Configuration',
|
151
|
+
cfg_obj = double('Lita::Configuration', default_team_slugs: nil)
|
152
152
|
allow(github_repo).to receive(:config).and_return(cfg_obj)
|
153
153
|
end
|
154
154
|
|
155
|
-
it 'should return nil' do
|
156
|
-
expect(github_repo.send(:
|
155
|
+
it 'should return [nil]' do
|
156
|
+
expect(github_repo.send(:default_teams, github_org)).to eql [nil]
|
157
157
|
end
|
158
158
|
end
|
159
|
-
end
|
160
159
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
allow(github_repo).to receive(:team_id_by_slug).and_return(42)
|
167
|
-
allow(github_repo).to receive(:should_repo_be_private?).and_return(true)
|
168
|
-
end
|
160
|
+
context 'when default_team_slugs is an empty array' do
|
161
|
+
before do
|
162
|
+
cfg_obj = double('Lita::Configuration', default_team_slugs: [])
|
163
|
+
allow(github_repo).to receive(:config).and_return(cfg_obj)
|
164
|
+
end
|
169
165
|
|
170
|
-
|
171
|
-
|
172
|
-
|
166
|
+
it 'should return [nil]' do
|
167
|
+
expect(github_repo.send(:default_teams, github_org)).to eql [nil]
|
168
|
+
end
|
173
169
|
end
|
174
170
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
171
|
+
context 'when default_team_slugs is set to an array with multiple elements' do
|
172
|
+
before do
|
173
|
+
cfg_obj = double('Lita::Configuration', default_team_slugs: %w(heckman orwell))
|
174
|
+
allow(github_repo).to receive(:config).and_return(cfg_obj)
|
175
|
+
end
|
176
|
+
|
177
|
+
it 'should return an array containing the corresponding team IDs' do
|
178
|
+
expect(github_repo).to receive(:team_id_by_slug).with('heckman', 'GrapeDuty')
|
179
|
+
.and_return(42)
|
180
|
+
expect(github_repo).to receive(:team_id_by_slug).with('orwell', 'GrapeDuty')
|
181
|
+
.and_return(84)
|
182
|
+
expect(github_repo.send(:default_teams, github_org)).to eql [42, 84]
|
183
|
+
end
|
180
184
|
end
|
185
|
+
end
|
181
186
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
187
|
+
describe '.extrapolate_create_opts' do
|
188
|
+
context 'when default_team_slugs is set' do
|
189
|
+
before do
|
190
|
+
@eco_opts = {}
|
191
|
+
@c_obj = double('Lita::Configuration', default_team_slugs: ['h3ckman'])
|
192
|
+
allow(github_repo).to receive(:config).and_return(@c_obj)
|
193
|
+
allow(github_repo).to receive(:team_id_by_slug).and_return(42)
|
194
|
+
allow(github_repo).to receive(:should_repo_be_private?).and_return(true)
|
189
195
|
end
|
190
196
|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
end
|
197
|
+
it 'should set the :organization key, :team_id key, and :private key' do
|
198
|
+
h = { organization: github_org, team_id: 42, private: true }
|
199
|
+
expect(github_repo.send(:extrapolate_create_opts, @eco_opts, github_org)).to eql h
|
200
|
+
end
|
196
201
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
+
it 'should set the private key to the return of should_repo_be_private?' do
|
203
|
+
opts = { private: 'test', team_id: 42 }
|
204
|
+
expect(github_repo).to receive(:should_repo_be_private?).with('test').and_return :ohai
|
205
|
+
r = github_repo.send(:extrapolate_create_opts, opts, github_org)
|
206
|
+
expect(r[:private]).to eql :ohai
|
202
207
|
end
|
203
|
-
end
|
204
208
|
|
205
|
-
|
206
|
-
|
207
|
-
|
209
|
+
context 'when there is no :team set' do
|
210
|
+
context 'when default_teams returns an array containing a team id' do
|
211
|
+
it 'should get the default team_id' do
|
212
|
+
h = { organization: github_org, team_id: 44, private: true }
|
213
|
+
expect(github_repo).to receive(:default_teams).with(github_org).and_return([44])
|
214
|
+
expect(github_repo.send(:extrapolate_create_opts, @eco_opts, github_org)).to eql h
|
215
|
+
end
|
216
|
+
end
|
208
217
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
218
|
+
context 'when default_teams returns [nil]' do
|
219
|
+
before do
|
220
|
+
@c_obj = double('Lita::Configuration', default_team_slugs: nil)
|
221
|
+
allow(github_repo).to receive(:config).and_return(@c_obj)
|
222
|
+
end
|
223
|
+
|
224
|
+
it 'should not set the :team_id key' do
|
225
|
+
h = { organization: github_org, private: true }
|
226
|
+
expect(github_repo).to receive(:default_teams).with(github_org).and_return([nil])
|
227
|
+
expect(github_repo.send(:extrapolate_create_opts, @eco_opts, github_org)).to eql h
|
228
|
+
end
|
213
229
|
end
|
214
230
|
end
|
215
231
|
|
216
|
-
context 'when
|
217
|
-
context 'when
|
218
|
-
|
219
|
-
|
220
|
-
|
232
|
+
context 'when options contains :team and no :team_id' do
|
233
|
+
context 'when given a valid slug' do
|
234
|
+
before { @eco_opts = { team: 'heckman' } }
|
235
|
+
|
236
|
+
it 'should set the :team_id key' do
|
237
|
+
h = { organization: github_org, team_id: 84, private: true }.merge!(@eco_opts)
|
238
|
+
expect(github_repo).to receive(:team_id_by_slug).with('heckman', github_org).and_return(84)
|
221
239
|
expect(github_repo.send(:extrapolate_create_opts, @eco_opts, github_org)).to eql h
|
222
240
|
end
|
223
241
|
end
|
224
242
|
|
225
|
-
context 'when
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
243
|
+
context 'when given an invalid slug' do
|
244
|
+
context 'when there is a default slug set' do
|
245
|
+
it 'should set the team to the default' do
|
246
|
+
h = { organization: github_org, team_id: 42, private: true }.merge!(@eco_opts)
|
247
|
+
expect(github_repo).to receive(:team_id_by_slug).with('h3ckman', github_org).and_return(42)
|
248
|
+
expect(github_repo.send(:extrapolate_create_opts, @eco_opts, github_org)).to eql h
|
249
|
+
end
|
230
250
|
end
|
231
251
|
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
252
|
+
context 'when there is no default slug set' do
|
253
|
+
before do
|
254
|
+
@eco_opts = { team: 'h3ckman', private: true }
|
255
|
+
c_obj = double('Lita::Configuration', default_team_slugs: nil)
|
256
|
+
allow(github_repo).to receive(:config).and_return(c_obj)
|
257
|
+
end
|
258
|
+
|
259
|
+
it 'should not set a :team_id' do
|
260
|
+
h = { organization: github_org }.merge!(@eco_opts)
|
261
|
+
expect(github_repo).to receive(:team_id_by_slug).with('h3ckman', github_org)
|
262
|
+
.and_return(nil)
|
263
|
+
expect(github_repo).to receive(:default_teams).with(github_org).and_call_original
|
264
|
+
expect(github_repo.send(:extrapolate_create_opts, @eco_opts, github_org)).to eql h
|
265
|
+
end
|
238
266
|
end
|
239
267
|
end
|
240
268
|
end
|
269
|
+
|
270
|
+
context 'when there is a :team_id key' do
|
271
|
+
before { @eco_opts = { team_id: 44, private: true } }
|
272
|
+
|
273
|
+
it 'should just leave it alone...' do
|
274
|
+
h = { organization: github_org }.merge!(@eco_opts)
|
275
|
+
expect(github_repo.send(:extrapolate_create_opts, @eco_opts, github_org)).to eql h
|
276
|
+
end
|
277
|
+
end
|
241
278
|
end
|
242
279
|
|
243
|
-
context '
|
244
|
-
before
|
280
|
+
context 'with an array of default teams' do
|
281
|
+
before do
|
282
|
+
allow(github_repo).to receive(:should_repo_be_private?).and_return(true)
|
283
|
+
end
|
245
284
|
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
285
|
+
context 'consisting of a nil element' do
|
286
|
+
before do
|
287
|
+
allow(github_repo).to receive(:default_teams).with(github_org).and_return([nil])
|
288
|
+
end
|
289
|
+
|
290
|
+
it 'does not set :team_id' do
|
291
|
+
expect(github_repo.send(:extrapolate_create_opts, { private: true }, github_org)).to eql(organization: github_org, private: true)
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
context 'consisting of one valid team ID' do
|
296
|
+
before do
|
297
|
+
allow(github_repo).to receive(:default_teams).with(github_org).and_return([42])
|
298
|
+
end
|
299
|
+
|
300
|
+
it 'sets :team_id' do
|
301
|
+
expect(github_repo.send(:extrapolate_create_opts, { private: true }, github_org)).to eql(organization: github_org, team_id: 42, private: true)
|
302
|
+
end
|
303
|
+
end
|
304
|
+
|
305
|
+
context 'consisting of two valid team IDs' do
|
306
|
+
before do
|
307
|
+
allow(github_repo).to receive(:default_teams).with(github_org).and_return([42, 84])
|
308
|
+
end
|
309
|
+
|
310
|
+
it 'sets :team_id and :other_teams' do
|
311
|
+
expect(github_repo.send(:extrapolate_create_opts, { private: true }, github_org)).to eql(organization: github_org, team_id: 42, other_teams: [84], private: true)
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
context 'consisting of three valid team IDs' do
|
316
|
+
before do
|
317
|
+
allow(github_repo).to receive(:default_teams).with(github_org).and_return([42, 84, 1])
|
318
|
+
end
|
319
|
+
|
320
|
+
it 'sets :team_id and :other_teams' do
|
321
|
+
expect(github_repo.send(:extrapolate_create_opts, { private: true }, github_org)).to eql(organization: github_org, team_id: 42, other_teams: [84, 1], private: true)
|
322
|
+
end
|
323
|
+
end
|
324
|
+
|
325
|
+
context 'consisting of one valid team ID and one invalid team ID' do
|
326
|
+
before do
|
327
|
+
allow(github_repo).to receive(:default_teams).with(github_org).and_return([42, nil])
|
328
|
+
end
|
329
|
+
|
330
|
+
it 'sets :team_id but not :other_teams' do
|
331
|
+
expect(github_repo.send(:extrapolate_create_opts, { private: true }, github_org)).to eql(organization: github_org, team_id: 42, private: true)
|
332
|
+
end
|
250
333
|
end
|
251
334
|
end
|
252
335
|
end
|
@@ -261,11 +344,20 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
261
344
|
allow(github_repo).to receive(:repo?).with("#{github_org}/lita-test").and_return(true)
|
262
345
|
end
|
263
346
|
|
264
|
-
it 'should confirm
|
347
|
+
it 'should confirm successful creation' do
|
265
348
|
opts = { private: true, team_id: 42, organization: github_org }
|
266
349
|
expect(github_repo.send(:create_repo, github_org, 'lita-test', opts))
|
267
350
|
.to eql 'Created GrapeDuty/lita-test: https://github.com/GrapeDuty/lita-test'
|
268
351
|
end
|
352
|
+
|
353
|
+
context 'when other teams are given' do
|
354
|
+
it 'should add teams to the repo after creating it' do
|
355
|
+
expect(github_repo).to receive(:add_team_to_repo).with('GrapeDuty/lita-test', 42)
|
356
|
+
expect(github_repo).to receive(:add_team_to_repo).with('GrapeDuty/lita-test', 84)
|
357
|
+
opts = { private: true, team_id: 1, other_teams: [42, 84], organization: github_org }
|
358
|
+
github_repo.send(:create_repo, github_org, 'lita-test', opts)
|
359
|
+
end
|
360
|
+
end
|
269
361
|
end
|
270
362
|
|
271
363
|
context 'when repo not created' do
|
@@ -562,10 +654,10 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
562
654
|
conf_obj = double('Lita::Configuration', default_org: 'GrapeDuty')
|
563
655
|
@response = double('Lita::Response', match_data: match_data)
|
564
656
|
@octo_obj = double('Octokit::Client', edit_repository: { description: 'oh hello' })
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
657
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:config).and_return(conf_obj)
|
658
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:func_disabled?).and_return(false)
|
659
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo?).and_return(true)
|
660
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:octo).and_return(@octo_obj)
|
569
661
|
end
|
570
662
|
|
571
663
|
context 'when valid inputs provided, and all things work out' do
|
@@ -576,7 +668,9 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
576
668
|
end
|
577
669
|
|
578
670
|
context 'when function disabled' do
|
579
|
-
before
|
671
|
+
before do
|
672
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:func_disabled?).and_return(true)
|
673
|
+
end
|
580
674
|
|
581
675
|
it 'should return the method disabled error' do
|
582
676
|
send_command('gh repo update description lita-test A new description!')
|
@@ -585,7 +679,9 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
585
679
|
end
|
586
680
|
|
587
681
|
context 'when repo not found' do
|
588
|
-
before
|
682
|
+
before do
|
683
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo?).and_return(false)
|
684
|
+
end
|
589
685
|
|
590
686
|
it 'should return the repo not found error' do
|
591
687
|
send_command('gh repo update description lita-test A new description!')
|
@@ -612,10 +708,10 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
612
708
|
conf_obj = double('Lita::Configuration', default_org: 'GrapeDuty')
|
613
709
|
@response = double('Lita::Response', match_data: match_data)
|
614
710
|
@octo_obj = double('Octokit::Client', edit_repository: { homepage: 'https://test.it' })
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
711
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:config).and_return(conf_obj)
|
712
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:octo).and_return(@octo_obj)
|
713
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:func_disabled?).and_return(false)
|
714
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo?).and_return(true)
|
619
715
|
end
|
620
716
|
|
621
717
|
context 'when valid inputs provided, and all things work out' do
|
@@ -626,7 +722,9 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
626
722
|
end
|
627
723
|
|
628
724
|
context 'when function disabled' do
|
629
|
-
before
|
725
|
+
before do
|
726
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:func_disabled?).and_return(true)
|
727
|
+
end
|
630
728
|
|
631
729
|
it 'should return the method disabled error' do
|
632
730
|
send_command('gh repo update homepage lita-test https://test.it')
|
@@ -635,7 +733,9 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
635
733
|
end
|
636
734
|
|
637
735
|
context 'when repo not found' do
|
638
|
-
before
|
736
|
+
before do
|
737
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo?).and_return(false)
|
738
|
+
end
|
639
739
|
|
640
740
|
it 'should return the repo not found error' do
|
641
741
|
send_command('gh repo update homepage lita-test https://test.it')
|
@@ -685,7 +785,7 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
685
785
|
}
|
686
786
|
pr = [nil, nil, nil, nil, nil]
|
687
787
|
@octo_obj = double('Octokit::Client', repository: repo, pull_requests: pr)
|
688
|
-
|
788
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:octo).and_return(@octo_obj)
|
689
789
|
end
|
690
790
|
|
691
791
|
it 'should return some repo info' do
|
@@ -699,9 +799,9 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
699
799
|
|
700
800
|
describe '.repo_delete' do
|
701
801
|
before do
|
702
|
-
|
703
|
-
|
704
|
-
|
802
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:func_disabled?).and_return(false)
|
803
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:delete_repo).and_return('hello there')
|
804
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo?).with("#{github_org}/lita-test").and_return(true)
|
705
805
|
end
|
706
806
|
|
707
807
|
it 'reply with the return from delete_repo()' do
|
@@ -711,7 +811,7 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
711
811
|
|
712
812
|
context 'when command disabled' do
|
713
813
|
before do
|
714
|
-
|
814
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:func_disabled?).and_return(true)
|
715
815
|
end
|
716
816
|
|
717
817
|
it 'should no-op and say such if the command is disabled' do
|
@@ -722,7 +822,7 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
722
822
|
|
723
823
|
context 'when repo not found' do
|
724
824
|
before do
|
725
|
-
|
825
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo?).with("#{github_org}/lita-test").and_return(false)
|
726
826
|
end
|
727
827
|
|
728
828
|
it 'should no-op informing you that the repo is not there' do
|
@@ -735,15 +835,15 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
735
835
|
describe '.repo_create' do
|
736
836
|
before do
|
737
837
|
@opts = { private: true, team_id: 42, organization: github_org }
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
838
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:func_disabled?).and_return(false)
|
839
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo?).with("#{github_org}/lita-test").and_return(false)
|
840
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:extrapolate_create_opts).and_return(@opts)
|
841
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:create_repo).and_return('hello from PAX prime!')
|
742
842
|
end
|
743
843
|
|
744
844
|
context 'when command disabled' do
|
745
845
|
before do
|
746
|
-
|
846
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:func_disabled?).and_return(true)
|
747
847
|
end
|
748
848
|
|
749
849
|
it 'should no-op and say such if the command is disabled' do
|
@@ -754,7 +854,7 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
754
854
|
|
755
855
|
context 'when repo already exists' do
|
756
856
|
before do
|
757
|
-
|
857
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo?).with("#{github_org}/lita-test").and_return(true)
|
758
858
|
end
|
759
859
|
|
760
860
|
it 'should tell you it already exists' do
|
@@ -765,11 +865,11 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
765
865
|
|
766
866
|
context 'when repo does not exist' do
|
767
867
|
before do
|
768
|
-
|
868
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo?).with("#{github_org}/lita-test").and_return(false)
|
769
869
|
end
|
770
870
|
|
771
871
|
it 'should reply with the return of create_repo()' do
|
772
|
-
|
872
|
+
expect_any_instance_of(Lita::Handlers::GithubRepo).to receive(:extrapolate_create_opts).and_return(@opts)
|
773
873
|
send_command("gh repo create #{github_org}/lita-test")
|
774
874
|
expect(replies.last).to eql 'hello from PAX prime!'
|
775
875
|
end
|
@@ -778,9 +878,9 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
778
878
|
|
779
879
|
describe '.repo_rename' do
|
780
880
|
before do
|
781
|
-
|
782
|
-
|
783
|
-
|
881
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:func_disabled?).and_return(false)
|
882
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:rename_repo).and_return('hello there')
|
883
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo?).with("#{github_org}/lita-test").and_return(true)
|
784
884
|
end
|
785
885
|
|
786
886
|
it 'reply with the return from rename_repo()' do
|
@@ -790,7 +890,7 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
790
890
|
|
791
891
|
context 'when command disabled' do
|
792
892
|
before do
|
793
|
-
|
893
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:func_disabled?).and_return(true)
|
794
894
|
end
|
795
895
|
|
796
896
|
it 'should no-op and say such if the command is disabled' do
|
@@ -801,7 +901,7 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
801
901
|
|
802
902
|
context 'when repo not found' do
|
803
903
|
before do
|
804
|
-
|
904
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo?).with("#{github_org}/lita-test").and_return(false)
|
805
905
|
end
|
806
906
|
|
807
907
|
it 'should no-op informing you that the repo is not there' do
|
@@ -818,7 +918,7 @@ describe Lita::Handlers::GithubRepo, lita_handler: true do
|
|
818
918
|
{ name: 'Everyone', slug: 'everyone', id: 42, permission: 'push' }
|
819
919
|
]
|
820
920
|
@octo_obj = double('Octokit::Client', repository_teams: @teams)
|
821
|
-
|
921
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:octo).and_return(@octo_obj)
|
822
922
|
end
|
823
923
|
|
824
924
|
context 'when it finds a repo' do
|
@@ -853,11 +953,11 @@ Name: Interns, Slug: interns, ID: 84, Perms: pull
|
|
853
953
|
|
854
954
|
describe '.repo_team_router' do
|
855
955
|
before do
|
856
|
-
|
956
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo_team_add).with(an_instance_of(Lita::Response)).and_return('ohai')
|
857
957
|
end
|
858
958
|
|
859
959
|
it 'should call the method based on action and respond with its return' do
|
860
|
-
|
960
|
+
expect_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo_team_add).with(an_instance_of(Lita::Response)).and_return('ohai')
|
861
961
|
send_command("gh repo team add 42 #{github_org}/lita-test")
|
862
962
|
expect(replies.last).to eql 'ohai'
|
863
963
|
end
|
@@ -865,11 +965,11 @@ Name: Interns, Slug: interns, ID: 84, Perms: pull
|
|
865
965
|
|
866
966
|
describe '.repo_update_router' do
|
867
967
|
before do
|
868
|
-
|
968
|
+
allow_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo_update_description).with(an_instance_of(Lita::Response)).and_return('ohai')
|
869
969
|
end
|
870
970
|
|
871
971
|
it 'should call the method based on the action and respond with its return' do
|
872
|
-
|
972
|
+
expect_any_instance_of(Lita::Handlers::GithubRepo).to receive(:repo_update_description).with(an_instance_of(Lita::Response)).and_return('ohai')
|
873
973
|
send_command("gh repo update description #{github_org}/lita-test Something funky here")
|
874
974
|
expect(replies.last).to eql 'ohai'
|
875
975
|
end
|
@@ -300,7 +300,7 @@ Following: 20, Followers: 10, Joined: 2011-05-14 04:16:33 UTC'
|
|
300
300
|
before do
|
301
301
|
@secret = 'GZSDEMLDMY3TQYLG'
|
302
302
|
conf_obj = double('Lita::Configuration', totp_secret: @secret)
|
303
|
-
|
303
|
+
allow_any_instance_of(Lita::Handlers::Github).to receive(:config).and_return(conf_obj)
|
304
304
|
end
|
305
305
|
|
306
306
|
context 'when token is set' do
|
@@ -314,7 +314,7 @@ Following: 20, Followers: 10, Joined: 2011-05-14 04:16:33 UTC'
|
|
314
314
|
context 'when token is not set' do
|
315
315
|
before do
|
316
316
|
conf_obj = double('Lita::Configuration', totp_secret: nil)
|
317
|
-
|
317
|
+
allow_any_instance_of(Lita::Handlers::Github).to receive(:config).and_return(conf_obj)
|
318
318
|
end
|
319
319
|
|
320
320
|
it 'should return the error message' do
|
@@ -344,15 +344,15 @@ Following: 20, Followers: 10, Joined: 2011-05-14 04:16:33 UTC'
|
|
344
344
|
}
|
345
345
|
@orgs = [{ login: 'PagerDuty' }, { login: 'GrapeDuty' }]
|
346
346
|
@octo_obj = double('Octokit::Client', user: @user_obj, organizations: @orgs)
|
347
|
-
|
348
|
-
|
347
|
+
allow_any_instance_of(Lita::Handlers::Github).to receive(:octo).and_return(@octo_obj)
|
348
|
+
allow_any_instance_of(Lita::Handlers::Github).to receive(:whois_reply).and_return('StubbedResponse')
|
349
349
|
end
|
350
350
|
|
351
351
|
context 'when all goes well' do
|
352
352
|
it 'should return the response from whois_reply' do
|
353
353
|
expect(@octo_obj).to receive(:user).with('theckman').and_return(@user_obj)
|
354
354
|
expect(@octo_obj).to receive(:organizations).with('theckman').and_return(@orgs)
|
355
|
-
|
355
|
+
allow_any_instance_of(Lita::Handlers::Github).to receive(:whois_reply).with(@user_obj, %w(PagerDuty GrapeDuty)).and_return('StubbedResponse')
|
356
356
|
send_command('gh whois theckman')
|
357
357
|
expect(replies.last).to eql 'StubbedResponse'
|
358
358
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-github
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Heckman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -257,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
257
257
|
version: '0'
|
258
258
|
requirements: []
|
259
259
|
rubyforge_project:
|
260
|
-
rubygems_version: 2.4.
|
260
|
+
rubygems_version: 2.4.5
|
261
261
|
signing_key:
|
262
262
|
specification_version: 4
|
263
263
|
summary: GitHub repo/org management in Lita; handler not ready for production
|