lita-jira 0.8.1 → 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: 4bb3875a14b8411fc109e2f604e7620ba1b813a2
4
- data.tar.gz: 945da5586a8a8bbd0c5b7437d52d30122cae27ee
3
+ metadata.gz: ea9ffc666b62d8002d7b6a73c06326729d9ea353
4
+ data.tar.gz: 32f4b00c25016a0647b1ef10a36c1010a6889933
5
5
  SHA512:
6
- metadata.gz: 3126e1e246e59c9ee7d72a1764bbb25cb9284e50ac6d946725533f47846c8de99b59368884c963673daa9307ca3e6d3eb2b56f49d61521e3a9974a78c5db2cc3
7
- data.tar.gz: 2736cceeb65eab4331ececb8622081c906ae086c433e2f65d975fe5695a9bc8749cc598fdbac675794b438b0f832b292292dc80c4ecc12d9ab4df6ed9a711197
6
+ metadata.gz: ed36ac8d4af1cf4517d6a9c275d1110a8a38bccfd8ae5fb12a8aa35665cc377437b83dea732ebbe90db353a6b713b778742c5ec31ad357c9b81c496ded8f90bc
7
+ data.tar.gz: 6941736d8aefcbd0ea8ef7a4d8927089c03f99f9834ecf4efdeaf0433b4f9c77af52624b93e76f1aaf6dad0614638c86566d5029ee3000857fe0a4ca029ede8b
@@ -1,6 +1,17 @@
1
+ # TODO: Enable
2
+ # require: rubocop-rspec
3
+
1
4
  FileName:
2
5
  Exclude:
3
6
  - lib/lita-jira.rb
4
7
 
5
8
  LineLength:
6
9
  Max: 190
10
+
11
+ Metrics/BlockLength:
12
+ Exclude:
13
+ - 'spec/**/*'
14
+
15
+ Style/FrozenStringLiteralComment:
16
+ Exclude:
17
+ - spec/lita/handlers/jira_spec.rb
@@ -0,0 +1 @@
1
+ 2.4.2
@@ -1,8 +1,10 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1
4
- - 2.2
3
+ - 2.3
4
+ - 2.4
5
5
  services:
6
6
  - redis-server
7
7
  sudo: false
8
8
  cache: bundler
9
+ before_install:
10
+ - gem update --system
@@ -5,12 +5,25 @@ This project adheres to [Semantic Versioning] and [Keep A Changelog].
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.9.0] - 2017-11-27
9
+ ### Improvements
10
+ - [#21] Provide additional information in error logging
11
+ - [#24] Search multiple issue keys in single message in ambient route
12
+ - Update testing to currently supported Ruby versions
13
+
14
+ ### Fixes:
15
+ - [#22] Fix TODO regex to capture all information
16
+
8
17
  ## [0.7.2] - 2015-12-01
9
18
  ### Fixed
10
19
  - Updated Simplecov invocation to newer style
11
20
  - Adjusted ambient issue detection to avoid triggering on URL-like strings
12
21
 
13
- [Unreleased]: https://github.com/esigler/lita-jira/compare/v0.7.2...HEAD
22
+ [#24]: https://github.com/esigler/lita-jira/pull/24
23
+ [#22]: https://github.com/esigler/lita-jira/pull/22
24
+ [#21]: https://github.com/esigler/lita-jira/pull/21
25
+ [Unreleased]: https://github.com/esigler/lita-jira/compare/v0.9.0...HEAD
26
+ [0.9.0]: https://github.com/esigler/lita-jira/compare/v0.8.1...v0.9.0
14
27
  [0.7.2]: https://github.com/esigler/lita-jira/compare/v0.7.1...v0.7.2
15
28
  [Semantic Versioning]: http://semver.org/
16
29
  [Keep A Changelog]: http://keepachangelog.com/
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
- source 'https://rubygems.org'
1
+ # frozen_string_literal: true
2
2
 
3
- gem 'jira-ruby', require: 'jira'
3
+ source 'https://rubygems.org'
4
4
 
5
5
  gemspec
data/README.md CHANGED
@@ -3,7 +3,6 @@
3
3
  [![Build Status](https://img.shields.io/travis/esigler/lita-jira/master.svg)](https://travis-ci.org/esigler/lita-jira)
4
4
  [![MIT License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://tldrlegal.com/license/mit-license)
5
5
  [![RubyGems :: RMuh Gem Version](http://img.shields.io/gem/v/lita-jira.svg)](https://rubygems.org/gems/lita-jira)
6
- [![Coveralls Coverage](https://img.shields.io/coveralls/esigler/lita-jira/master.svg)](https://coveralls.io/r/esigler/lita-jira)
7
6
  [![Code Climate](https://img.shields.io/codeclimate/github/esigler/lita-jira.svg)](https://codeclimate.com/github/esigler/lita-jira)
8
7
  [![Gemnasium](https://img.shields.io/gemnasium/esigler/lita-jira.svg)](https://gemnasium.com/esigler/lita-jira)
9
8
 
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
  require 'rubocop/rake_task'
@@ -5,4 +7,4 @@ require 'rubocop/rake_task'
5
7
  RSpec::Core::RakeTask.new(:spec)
6
8
  RuboCop::RakeTask.new(:rubocop)
7
9
 
8
- task default: [:spec, :rubocop]
10
+ task default: %i[spec rubocop]
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Helper functions for lita-jira
2
4
  module JiraHelper
3
5
  # Issues
4
6
  module Issue
5
7
  def fetch_issue(key, expected = true)
6
8
  client.Issue.find(key)
7
- rescue
8
- log.error('JIRA HTTPError') if expected
9
+ rescue StandardError => e
10
+ log.error("JIRA HTTPError #{e}") if expected
9
11
  nil
10
12
  end
11
13
 
@@ -13,14 +15,17 @@ module JiraHelper
13
15
  #
14
16
  # @param [Type String] jql Valid JQL query
15
17
  # @return [Type Array] 0-m JIRA Issues returned from query
16
- def fetch_issues(jql)
18
+ def fetch_issues(jql, suppress_exceptions = false)
17
19
  client.Issue.jql(jql)
20
+ rescue StandardError => e
21
+ throw e unless suppress_exceptions
22
+ nil
18
23
  end
19
24
 
20
25
  def fetch_project(key)
21
26
  client.Project.find(key)
22
- rescue
23
- log.error('JIRA HTTPError')
27
+ rescue StandardError => e
28
+ log.error("JIRA HTTPError #{e}")
24
29
  nil
25
30
  end
26
31
 
@@ -70,7 +75,7 @@ module JiraHelper
70
75
  # @return [Type String] fallback or returned value from yield block
71
76
  def optional_issue_property(fallback = '')
72
77
  yield
73
- rescue
78
+ rescue StandardError
74
79
  fallback
75
80
  end
76
81
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Helper functions for lita-jira
2
4
  module JiraHelper
3
5
  # Misc
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Helper functions for lita-jira
2
4
  module JiraHelper
3
5
  # Regular expressions
4
6
  module Regex
5
7
  COMMENT_PATTERN = /\"(?<comment>.+)\"/
6
- SUBJECT_PATTERN = /\"(?<subject>.+)\"/
7
- SUMMARY_PATTERN = /\"(?<summary>.+)\"/
8
+ SUBJECT_PATTERN = /\"(?<subject>.+?)\"/
9
+ SUMMARY_PATTERN = /\"(?<summary>.+?)\"/
8
10
  PROJECT_PATTERN = /(?<project>[a-zA-Z0-9]{1,10})/
9
11
  ISSUE_PATTERN = /(?<issue>#{PROJECT_PATTERN}-[0-9]{1,5}+)/
10
12
  EMAIL_PATTERN = /(?<email>[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+)/i
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Helper functions for lita-jira
2
4
  module JiraHelper
3
5
  # Utility helpers
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'lita'
2
4
 
3
5
  Lita.load_locales Dir[File.expand_path(
4
6
  File.join('..', '..', 'locales', '*.yml'), __FILE__
5
7
  )]
6
8
 
7
- require 'jira'
9
+ require 'jira-ruby'
8
10
 
9
11
  require 'jirahelper/issue'
10
12
  require 'jirahelper/misc'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # lita-jira plugin
2
4
  module Lita
3
5
  # Because we can.
@@ -121,8 +123,8 @@ module Lita
121
123
 
122
124
  begin
123
125
  issues = fetch_issues("assignee = '#{get_email(response.user)}' AND status not in (Closed)")
124
- rescue
125
- log.error('JIRA HTTPError')
126
+ rescue StandardError => e
127
+ log.error("JIRA HTTPError #{e}")
126
128
  response.reply(t('error.request'))
127
129
  return
128
130
  end
@@ -134,8 +136,24 @@ module Lita
134
136
 
135
137
  def ambient(response)
136
138
  return if invalid_ambient?(response)
137
- issue = fetch_issue(response.match_data['issue'], false)
138
- response.reply(format_issue(issue)) if issue
139
+
140
+ # response.matches returns an array of array of strings, where the inner arrays are [issue, project]
141
+ # (e.g. [["XYZ-123", "XYZ"]]). We map it into an array of issues (["XYZ-123"]).
142
+ issue_keys = response.matches.map { |match| match[0] }
143
+
144
+ if issue_keys.length > 1
145
+ # Note that if any of the issue keys do not exist in JIRA, then an exception is thrown and no results are returned.
146
+ # A JIRA 'suggestion' has been filed to allow partial results: https://jira.atlassian.com/browse/JRASERVER-40245
147
+ jql = "key in (#{issue_keys.join(',')})"
148
+ # Exceptions are suppressed and no results are returned since this is just ambient parsing and we do not want
149
+ # the bot to pop up with error messages when an explicit command was not requested.
150
+ issues = fetch_issues(jql, true)
151
+ response.reply(format_issues(issues)) if issues && !issues.empty?
152
+ else
153
+ # Only one issue key was parsed, so directly fetch the one issue.
154
+ issue = fetch_issue(response.match_data['issue'], false)
155
+ response.reply(format_issue(issue)) if issue
156
+ end
139
157
  end
140
158
 
141
159
  private
@@ -152,7 +170,7 @@ module Lita
152
170
  points = response.match_data['points']
153
171
  begin
154
172
  issue.save!(fields: { config.points_field.to_sym => points.to_i })
155
- rescue
173
+ rescue StandardError
156
174
  return response.reply(t('error.unable_to_point'))
157
175
  end
158
176
  response.reply(t('point.added', issue: issue.key, points: points))
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # lita-jira plugin
2
4
  module Lita
3
5
  # Because we can.
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Gem::Specification.new do |spec|
2
4
  spec.name = 'lita-jira'
3
- spec.version = '0.8.1'
4
- spec.authors = ['Eric Sigler', 'Matt Critchlow', 'Tristan Chong', 'Lee Briggs']
5
- spec.email = ['me@esigler.com', 'matt.critchlow@gmail.com', 'ong@tristaneuan.ch', 'lee@brig.gs']
5
+ spec.version = '0.9.0'
6
+ spec.authors = ['Eric Sigler', 'Matt Critchlow', 'Tristan Chong', 'Lee Briggs', 'Kenneth Kwan']
7
+ spec.email = ['me@esigler.com', 'matt.critchlow@gmail.com', 'ong@tristaneuan.ch', 'lee@brig.gs', 'kenneth.m.kwan@gmail.com']
6
8
  spec.description = 'A JIRA plugin for Lita.'
7
9
  spec.summary = spec.description
8
10
  spec.homepage = 'https://github.com/esigler/lita-jira'
@@ -14,13 +16,13 @@ Gem::Specification.new do |spec|
14
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
15
17
  spec.require_paths = ['lib']
16
18
 
17
- spec.add_runtime_dependency 'lita', '>= 4.0'
18
19
  spec.add_runtime_dependency 'jira-ruby'
20
+ spec.add_runtime_dependency 'lita', '>= 4.0'
19
21
 
20
22
  spec.add_development_dependency 'bundler'
21
- spec.add_development_dependency 'coveralls'
22
23
  spec.add_development_dependency 'rake'
23
24
  spec.add_development_dependency 'rspec'
24
25
  spec.add_development_dependency 'rubocop'
26
+ spec.add_development_dependency 'rubocop-rspec'
25
27
  spec.add_development_dependency 'simplecov'
26
28
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe JiraHelper::Regex do
6
+ PROJECT_PATTERN = JiraHelper::Regex::PROJECT_PATTERN
7
+ SUBJECT_PATTERN = JiraHelper::Regex::SUBJECT_PATTERN
8
+ SUMMARY_PATTERN = JiraHelper::Regex::SUMMARY_PATTERN
9
+
10
+ #
11
+ # route(
12
+ # /^todo\s#{PROJECT_PATTERN}\s#{SUBJECT_PATTERN}(\s#{SUMMARY_PATTERN})?$/,
13
+ #
14
+ let(:regex) { Regexp.new(/^todo\s#{PROJECT_PATTERN}\s#{SUBJECT_PATTERN}(\s#{SUMMARY_PATTERN})?$/) }
15
+
16
+ it 'double quotes around subject and summary' do
17
+ subject = 'Any subject'
18
+ summary = 'Any summary'
19
+ project = 'PRJ'
20
+ message = %(todo #{project} "#{subject}" "#{summary}")
21
+ match = message.match(regex)
22
+ expect(match['project']).to eq(project)
23
+ expect(match['summary']).to eq(summary)
24
+ expect(match['subject']).to eq(subject)
25
+ end
26
+ end
@@ -2,6 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe Lita::Handlers::Jira, lita_handler: true do
4
4
  before do
5
+ registry.register_handler(Lita::Handlers::Jira)
6
+ registry.register_handler(Lita::Handlers::JiraUtility)
5
7
  registry.config.handlers.jira.site = 'http://jira.local'
6
8
  end
7
9
 
@@ -207,6 +209,12 @@ describe Lita::Handlers::Jira, lita_handler: true do
207
209
  expect(replies.last).to eq('Issue XYZ-987 created')
208
210
  end
209
211
 
212
+ it 'creates a new issue if the project is valid and there is a summary and subject' do
213
+ grab_request(valid_client)
214
+ send_command('todo XYZ "Some subject text" "Summary text"')
215
+ expect(replies.last).to eq('Issue XYZ-987 created')
216
+ end
217
+
210
218
  it 'warns the user when the project is not valid' do
211
219
  grab_request(failed_find_project)
212
220
  send_command('todo ABC "Some summary text"')
@@ -215,84 +223,116 @@ describe Lita::Handlers::Jira, lita_handler: true do
215
223
  end
216
224
 
217
225
  describe '#ambient' do
218
- it 'does not show details for a detected issue by default'
226
+ before do
227
+ registry.config.handlers.jira.ambient = true
228
+ @user1 = Lita::User.create('U1', name: 'User 1', mention_name: 'user1')
229
+ @user2 = Lita::User.create('U2', name: 'User 2', mention_name: 'user2')
230
+ @user3 = Lita::User.create('U3', name: 'User 3', mention_name: 'user3')
231
+ @user4 = Lita::User.create('U4', name: 'User 4', mention_name: 'user4')
232
+ registry.config.handlers.jira.ignore = ['User 2', 'U3', 'user4']
219
233
 
220
- context 'when enabled in config' do
221
- before(:each) do
222
- registry.config.handlers.jira.ambient = true
223
- grab_request(valid_client)
224
- end
234
+ grab_request(valid_client)
235
+ end
236
+
237
+ it 'does not show details for a detected issue by default' do
238
+ registry.config.handlers.jira.ambient = false
239
+ send_message('foo XYZ-987 bar')
240
+ expect(replies).to eq([])
241
+ end
242
+
243
+ it 'shows details for a detected issue in a message' do
244
+ send_message('XYZ-987')
245
+ send_message('foo XYZ-987 bar')
246
+ send_message('foo XYZ-987?')
247
+ expect(replies.size).to eq(3)
248
+ end
249
+
250
+ it 'does not show details for a detected issue in a command' do
251
+ send_command('foo XYZ-987 bar')
252
+ expect(replies.size).to eq(0)
253
+ end
254
+
255
+ it 'does not show details for a issue in a URL-ish context' do
256
+ send_message('http://www.example.com/XYZ-987')
257
+ send_message('http://www.example.com/XYZ-987.html')
258
+ send_message('http://www.example.com/someother-XYZ-987.html')
259
+ send_message('TIL http://ruby-doc.org/core-2.3.0/Enumerable.html#method-i-each_slice')
260
+ expect(replies.size).to eq(0)
261
+ end
262
+
263
+ it 'shows details for a detected issue sent by a user absent from the list' do
264
+ send_message('foo XYZ-987 bar', as: @user1)
265
+ expect(replies.last).to eq("[XYZ-987] Some summary text\nStatus: In Progress, assigned to: A Person, fixVersion: Sprint 2, priority: P0\nhttp://jira.local/browse/XYZ-987")
266
+ end
225
267
 
226
- it 'shows details for a detected issue in a message' do
227
- send_message('XYZ-987')
228
- send_message('foo XYZ-987 bar')
229
- send_message('foo XYZ-987?')
230
- expect(replies.size).to eq(3)
268
+ it 'does not show details for a detected issue sent by a user whose name is on the list' do
269
+ send_message('foo XYZ-987 bar', as: @user2)
270
+ expect(replies.size).to eq(0)
271
+ end
272
+
273
+ it 'does not show details for a detected issue sent by a user whose ID is on the list' do
274
+ send_message('foo XYZ-987 bar', as: @user3)
275
+ expect(replies.size).to eq(0)
276
+ end
277
+
278
+ it 'does not show details for a detected issue sent by a user whose mention name is on the list' do
279
+ send_message('foo XYZ-987 bar', as: @user4)
280
+ expect(replies.size).to eq(0)
281
+ end
282
+
283
+ it 'performs a search for multiple issues when more than one issue is detected' do
284
+ prev_format = registry.config.handlers.jira.format
285
+ registry.config.handlers.jira.format = 'one-line'
286
+ send_message('XYZ-987 XYZ-988')
287
+ registry.config.handlers.jira.format = prev_format
288
+ expect(replies.size).to eq(3)
289
+ expect(replies).to eq([
290
+ 'Here are issues currently assigned to you:',
291
+ 'http://jira.local/browse/XYZ-987 - In Progress, A Person - Some summary text',
292
+ 'http://jira.local/browse/XYZ-988 - In Progress 2, A Person 2 - Some summary text 2'
293
+ ])
294
+ end
295
+
296
+ it 'does not show details for multiple issues in URL-ish contexts' do
297
+ send_message('http://www.example.com/XYZ-987 http://www.example.com/XYZ-988')
298
+ send_message('http://www.example.com/XYZ-987.html http://www.example.com/XYZ-988.html')
299
+ expect(replies.size).to eq(0)
300
+ end
301
+
302
+ it 'does show details for a single issue when only one is not in a URL-ish context' do
303
+ send_message('http://www.example.com/XYZ-988 foo XYZ-987 bar http://www.example.com/XYZ-989', as: @user1)
304
+ expect(replies.size).to eq(1)
305
+ expect(replies.last).to eq("[XYZ-987] Some summary text\nStatus: In Progress, assigned to: A Person, fixVersion: Sprint 2, priority: P0\nhttp://jira.local/browse/XYZ-987")
306
+ end
307
+
308
+ it 'does not show details for multiple detected issues sent by a user whose name is on the list' do
309
+ send_message('XYZ-987 XYZ-988', as: @user2)
310
+ expect(replies.size).to eq(0)
311
+ end
312
+
313
+ context 'with rooms configured' do
314
+ def send_room_message(body, room)
315
+ robot.receive(Lita::Message.new(robot, body, Lita::Source.new(user: user, room: room)))
231
316
  end
232
317
 
233
- it 'does not show details for a detected issue in a command' do
234
- send_command('foo XYZ-987 bar')
235
- expect(replies.size).to eq(0)
318
+ before do
319
+ @room1 = 'Room1'
320
+ @room2 = 'Room2'
321
+ registry.config.handlers.jira.rooms = [@room1]
236
322
  end
237
323
 
238
- it 'does not show details for a issue in a URL-ish context' do
239
- send_message('http://www.example.com/XYZ-987')
240
- send_message('http://www.example.com/XYZ-987.html')
241
- send_message('http://www.example.com/someother-XYZ-987.html')
242
- send_message('TIL http://ruby-doc.org/core-2.3.0/Enumerable.html#method-i-each_slice')
243
- expect(replies.size).to eq(0)
324
+ it 'shows details for a detected issue sent in a room on the list' do
325
+ send_room_message('foo XYZ-987 bar', @room1)
326
+ expect(replies.last).to eq("[XYZ-987] Some summary text\nStatus: In Progress, assigned to: A Person, fixVersion: Sprint 2, priority: P0\nhttp://jira.local/browse/XYZ-987")
244
327
  end
245
328
 
246
- context 'and an ignore list is defined' do
247
- before(:each) do
248
- @user1 = Lita::User.create('U1', name: 'User 1', mention_name: 'user1')
249
- @user2 = Lita::User.create('U2', name: 'User 2', mention_name: 'user2')
250
- @user3 = Lita::User.create('U3', name: 'User 3', mention_name: 'user3')
251
- @user4 = Lita::User.create('U4', name: 'User 4', mention_name: 'user4')
252
- registry.config.handlers.jira.ignore = ['User 2', 'U3', 'user4']
253
- end
254
-
255
- it 'shows details for a detected issue sent by a user absent from the list' do
256
- send_message('foo XYZ-987 bar', as: @user1)
257
- expect(replies.last).to eq("[XYZ-987] Some summary text\nStatus: In Progress, assigned to: A Person, fixVersion: Sprint 2, priority: P0\nhttp://jira.local/browse/XYZ-987")
258
- end
259
-
260
- it 'does not show details for a detected issue sent by a user whose name is on the list' do
261
- send_message('foo XYZ-987 bar', as: @user2)
262
- expect(replies.size).to eq(0)
263
- end
264
-
265
- it 'does not show details for a detected issue sent by a user whose ID is on the list' do
266
- send_message('foo XYZ-987 bar', as: @user3)
267
- expect(replies.size).to eq(0)
268
- end
269
-
270
- it 'does not show details for a detected issue sent by a user whose mention name is on the list' do
271
- send_message('foo XYZ-987 bar', as: @user4)
272
- expect(replies.size).to eq(0)
273
- end
329
+ it 'does not show details for a detected issue sent in a room absent from the list' do
330
+ send_room_message('foo XYZ-987 bar', @room2)
331
+ expect(replies.size).to eq(0)
274
332
  end
275
333
 
276
- context 'and a room list is defined' do
277
- def send_room_message(body, room)
278
- robot.receive(Lita::Message.new(robot, body, Lita::Source.new(user: user, room: room)))
279
- end
280
-
281
- before(:each) do
282
- @room1 = 'Room1'
283
- @room2 = 'Room2'
284
- registry.config.handlers.jira.rooms = [@room1]
285
- end
286
-
287
- it 'shows details for a detected issue sent in a room on the list' do
288
- send_room_message('foo XYZ-987 bar', @room1)
289
- expect(replies.last).to eq("[XYZ-987] Some summary text\nStatus: In Progress, assigned to: A Person, fixVersion: Sprint 2, priority: P0\nhttp://jira.local/browse/XYZ-987")
290
- end
291
-
292
- it 'does not show details for a detected issue sent in a room absent from the list' do
293
- send_room_message('foo XYZ-987 bar', @room2)
294
- expect(replies.size).to eq(0)
295
- end
334
+ after do
335
+ registry.config.handlers.jira.rooms = []
296
336
  end
297
337
  end
298
338
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Lita::Handlers::JiraUtility, lita_handler: true do
@@ -1,8 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'simplecov'
2
- require 'coveralls'
3
4
  SimpleCov.formatters = [
4
- SimpleCov::Formatter::HTMLFormatter,
5
- Coveralls::SimpleCov::Formatter
5
+ SimpleCov::Formatter::HTMLFormatter
6
6
  ]
7
7
  SimpleCov.start { add_filter '/spec/' }
8
8
 
@@ -12,10 +12,21 @@ require 'lita/rspec'
12
12
  Lita.version_3_compatibility_mode = false
13
13
 
14
14
  RSpec.configure do |config|
15
- config.before do
16
- registry.register_handler(Lita::Handlers::Jira)
17
- registry.register_handler(Lita::Handlers::JiraUtility)
15
+ config.expect_with :rspec do |expectations|
16
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
18
17
  end
18
+
19
+ # TODO: Enable
20
+ # config.mock_with :rspec do |mocks|
21
+ # mocks.verify_partial_doubles = true
22
+ # end
23
+
24
+ config.filter_run :focus
25
+ config.run_all_when_everything_filtered = true
26
+ config.default_formatter = 'doc' if config.files_to_run.one?
27
+ config.order = :random
28
+
29
+ Kernel.srand config.seed
19
30
  end
20
31
 
21
32
  def grab_request(result)
metadata CHANGED
@@ -1,46 +1,47 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-jira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Sigler
8
8
  - Matt Critchlow
9
9
  - Tristan Chong
10
10
  - Lee Briggs
11
+ - Kenneth Kwan
11
12
  autorequire:
12
13
  bindir: bin
13
14
  cert_chain: []
14
- date: 2016-06-01 00:00:00.000000000 Z
15
+ date: 2017-11-27 00:00:00.000000000 Z
15
16
  dependencies:
16
17
  - !ruby/object:Gem::Dependency
17
- name: lita
18
+ name: jira-ruby
18
19
  requirement: !ruby/object:Gem::Requirement
19
20
  requirements:
20
21
  - - ">="
21
22
  - !ruby/object:Gem::Version
22
- version: '4.0'
23
+ version: '0'
23
24
  type: :runtime
24
25
  prerelease: false
25
26
  version_requirements: !ruby/object:Gem::Requirement
26
27
  requirements:
27
28
  - - ">="
28
29
  - !ruby/object:Gem::Version
29
- version: '4.0'
30
+ version: '0'
30
31
  - !ruby/object:Gem::Dependency
31
- name: jira-ruby
32
+ name: lita
32
33
  requirement: !ruby/object:Gem::Requirement
33
34
  requirements:
34
35
  - - ">="
35
36
  - !ruby/object:Gem::Version
36
- version: '0'
37
+ version: '4.0'
37
38
  type: :runtime
38
39
  prerelease: false
39
40
  version_requirements: !ruby/object:Gem::Requirement
40
41
  requirements:
41
42
  - - ">="
42
43
  - !ruby/object:Gem::Version
43
- version: '0'
44
+ version: '4.0'
44
45
  - !ruby/object:Gem::Dependency
45
46
  name: bundler
46
47
  requirement: !ruby/object:Gem::Requirement
@@ -56,7 +57,7 @@ dependencies:
56
57
  - !ruby/object:Gem::Version
57
58
  version: '0'
58
59
  - !ruby/object:Gem::Dependency
59
- name: coveralls
60
+ name: rake
60
61
  requirement: !ruby/object:Gem::Requirement
61
62
  requirements:
62
63
  - - ">="
@@ -70,7 +71,7 @@ dependencies:
70
71
  - !ruby/object:Gem::Version
71
72
  version: '0'
72
73
  - !ruby/object:Gem::Dependency
73
- name: rake
74
+ name: rspec
74
75
  requirement: !ruby/object:Gem::Requirement
75
76
  requirements:
76
77
  - - ">="
@@ -84,7 +85,7 @@ dependencies:
84
85
  - !ruby/object:Gem::Version
85
86
  version: '0'
86
87
  - !ruby/object:Gem::Dependency
87
- name: rspec
88
+ name: rubocop
88
89
  requirement: !ruby/object:Gem::Requirement
89
90
  requirements:
90
91
  - - ">="
@@ -98,7 +99,7 @@ dependencies:
98
99
  - !ruby/object:Gem::Version
99
100
  version: '0'
100
101
  - !ruby/object:Gem::Dependency
101
- name: rubocop
102
+ name: rubocop-rspec
102
103
  requirement: !ruby/object:Gem::Requirement
103
104
  requirements:
104
105
  - - ">="
@@ -131,6 +132,7 @@ email:
131
132
  - matt.critchlow@gmail.com
132
133
  - ong@tristaneuan.ch
133
134
  - lee@brig.gs
135
+ - kenneth.m.kwan@gmail.com
134
136
  executables: []
135
137
  extensions: []
136
138
  extra_rdoc_files: []
@@ -138,6 +140,7 @@ files:
138
140
  - ".gitignore"
139
141
  - ".rspec"
140
142
  - ".rubocop.yml"
143
+ - ".ruby-version"
141
144
  - ".travis.yml"
142
145
  - CHANGELOG.md
143
146
  - CONTRIBUTING.md
@@ -154,6 +157,7 @@ files:
154
157
  - lib/lita/handlers/jira_utility.rb
155
158
  - lita-jira.gemspec
156
159
  - locales/en.yml
160
+ - spec/jirahelper/regex_spec.rb
157
161
  - spec/lita/handlers/jira_spec.rb
158
162
  - spec/lita/handlers/jira_utility_spec.rb
159
163
  - spec/spec_helper.rb
@@ -178,11 +182,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
178
182
  version: '0'
179
183
  requirements: []
180
184
  rubyforge_project:
181
- rubygems_version: 2.4.5
185
+ rubygems_version: 2.6.13
182
186
  signing_key:
183
187
  specification_version: 4
184
188
  summary: A JIRA plugin for Lita.
185
189
  test_files:
190
+ - spec/jirahelper/regex_spec.rb
186
191
  - spec/lita/handlers/jira_spec.rb
187
192
  - spec/lita/handlers/jira_utility_spec.rb
188
193
  - spec/spec_helper.rb