lita-jira 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 48c00700fdf50c30b6ad579589c2fd0524c40910
4
- data.tar.gz: 601010e495e0f28b68a3a7f854eb0af1c51bcb63
3
+ metadata.gz: 4bb3875a14b8411fc109e2f604e7620ba1b813a2
4
+ data.tar.gz: 945da5586a8a8bbd0c5b7437d52d30122cae27ee
5
5
  SHA512:
6
- metadata.gz: 9b64f58dc863e610feb45e334859b7b21af89a0ff2dfcde1ee49b82a19702781eeb8bcddba9ea0ac7aa486deeb9a789c2260a814b96a7d1c0877b447bf4ff470
7
- data.tar.gz: 873c4fb13c1f868e55f1edc193aa675178b50cd0dc93b51808ce02b5dfe484b7ad2153f6544328249eaf99dd7b2b1100f6b1b9c29b3bf0a910ae051ff5dfd424
6
+ metadata.gz: 3126e1e246e59c9ee7d72a1764bbb25cb9284e50ac6d946725533f47846c8de99b59368884c963673daa9307ca3e6d3eb2b56f49d61521e3a9974a78c5db2cc3
7
+ data.tar.gz: 2736cceeb65eab4331ececb8622081c906ae086c433e2f65d975fe5695a9bc8749cc598fdbac675794b438b0f832b292292dc80c4ecc12d9ab4df6ed9a711197
@@ -9,5 +9,6 @@ module JiraHelper
9
9
  ISSUE_PATTERN = /(?<issue>#{PROJECT_PATTERN}-[0-9]{1,5}+)/
10
10
  EMAIL_PATTERN = /(?<email>[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+)/i
11
11
  AMBIENT_PATTERN = /(\s|^)#{ISSUE_PATTERN}/
12
+ POINTS_PATTERN = /(?<points>\d{1,2})/
12
13
  end
13
14
  end
@@ -16,6 +16,7 @@ module Lita
16
16
  config :ignore, required: false, type: Array, default: []
17
17
  config :rooms, required: false, type: Array
18
18
  config :use_ssl, required: false, types: [TrueClass, FalseClass], default: true
19
+ config :points_field, required: false, type: String
19
20
 
20
21
  include ::JiraHelper::Issue
21
22
  include ::JiraHelper::Misc
@@ -67,6 +68,15 @@ module Lita
67
68
  }
68
69
  )
69
70
 
71
+ route(
72
+ /^jira\spoint\s#{ISSUE_PATTERN}\sas\s#{POINTS_PATTERN}$/,
73
+ :point,
74
+ command: true,
75
+ help: {
76
+ t('help.point.syntax') => t('help.point.desc')
77
+ }
78
+ )
79
+
70
80
  # Detect ambient JIRA issues in non-command messages
71
81
  route AMBIENT_PATTERN, :ambient, command: false
72
82
 
@@ -99,6 +109,13 @@ module Lita
99
109
  end
100
110
 
101
111
  # rubocop:disable Metrics/AbcSize
112
+ def point(response)
113
+ return response.reply(t('error.field_undefined')) if config.points_field.blank?
114
+ issue = fetch_issue(response.match_data['issue'])
115
+ return response.reply(t('error.request')) unless issue
116
+ set_points_on_issue(issue, response)
117
+ end
118
+
102
119
  def myissues(response)
103
120
  return response.reply(t('error.not_identified')) unless user_stored?(response.user)
104
121
 
@@ -130,6 +147,16 @@ module Lita
130
147
  def ignored?(user)
131
148
  config.ignore.include?(user.id) || config.ignore.include?(user.mention_name) || config.ignore.include?(user.name)
132
149
  end
150
+
151
+ def set_points_on_issue(issue, response)
152
+ points = response.match_data['points']
153
+ begin
154
+ issue.save!(fields: { config.points_field.to_sym => points.to_i })
155
+ rescue
156
+ return response.reply(t('error.unable_to_point'))
157
+ end
158
+ response.reply(t('point.added', issue: issue.key, points: points))
159
+ end
133
160
  # rubocop:enable Metrics/AbcSize
134
161
  end
135
162
  # rubocop:enable Metrics/ClassLength
data/lita-jira.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'lita-jira'
3
- spec.version = '0.8.0'
3
+ spec.version = '0.8.1'
4
4
  spec.authors = ['Eric Sigler', 'Matt Critchlow', 'Tristan Chong', 'Lee Briggs']
5
5
  spec.email = ['me@esigler.com', 'matt.critchlow@gmail.com', 'ong@tristaneuan.ch', 'lee@brig.gs']
6
6
  spec.description = 'A JIRA plugin for Lita.'
data/locales/en.yml CHANGED
@@ -6,6 +6,8 @@ en:
6
6
  already_identified: "You are already identified as %{email}"
7
7
  not_identified: You do not have an email address on record
8
8
  request: Error fetching JIRA issue
9
+ field_undefined: You must define `points_field` in your lita_config
10
+ unable_to_point: Cannot set points on issue
9
11
  help:
10
12
  identify:
11
13
  syntax: jira identify <email address>
@@ -19,6 +21,9 @@ en:
19
21
  comment:
20
22
  syntax: jira comment on <issue> <comment text>
21
23
  desc: Adds <comment text> to <issue>
24
+ point:
25
+ syntax: jira point <issue> as <points>
26
+ desc: Adds <points> points to <issue>
22
27
  details:
23
28
  syntax: jira details <issue>
24
29
  desc: Shows detailed information for <issue>
@@ -42,6 +47,8 @@ en:
42
47
  summary: "%{key}: %{summary}"
43
48
  comment:
44
49
  added: "Comment added to %{issue}"
50
+ point:
51
+ added: "Added a point estimation of %{points} to %{issue}"
45
52
  myissues:
46
53
  empty: "You do not have any assigned issues. Great job!"
47
54
  info: "Here are issues currently assigned to you:"
@@ -13,6 +13,7 @@ describe Lita::Handlers::Jira, lita_handler: true do
13
13
  fixVersions: [{ 'name' => 'Sprint 2' }],
14
14
  key: 'XYZ-987')
15
15
  allow(result).to receive('save') { true }
16
+ allow(result).to receive('save!') { true }
16
17
  allow(result).to receive('fetch') { true }
17
18
  result
18
19
  end
@@ -96,6 +97,7 @@ describe Lita::Handlers::Jira, lita_handler: true do
96
97
  is_expected.to route_command('jira ABC-123').to(:summary)
97
98
  is_expected.to route_command('jira details ABC-123').to(:details)
98
99
  is_expected.to route_command('jira comment on ABC-123 "You just need a cat"').to(:comment)
100
+ is_expected.to route_command('jira point ABC-123 as 2').to(:point)
99
101
  is_expected.to route_command('todo ABC "summary text"').to(:todo)
100
102
  is_expected.to route_command('todo ABC "summary text" "subject text"').to(:todo)
101
103
  is_expected.to route_command('jira myissues').to(:myissues)
@@ -165,6 +167,39 @@ describe Lita::Handlers::Jira, lita_handler: true do
165
167
  end
166
168
  end
167
169
 
170
+ describe '#point' do
171
+ before(:each) do
172
+ registry.config.handlers.jira.points_field = 'some_custom_points_field'
173
+ end
174
+
175
+ it 'updates the issue with a story point value' do
176
+ expect(saved_issue).to receive(:save!).with(fields: { some_custom_points_field: 5 })
177
+ grab_request(valid_client)
178
+ send_command('jira point XYZ-987 as 5')
179
+ expect(replies.last).to eq('Added a point estimation of 5 to XYZ-987')
180
+ end
181
+
182
+ it 'warns the user when the issue is not valid' do
183
+ grab_request(failed_find_issue)
184
+ send_command('jira point XYZ-987 as 5')
185
+ expect(replies.last).to eq('Error fetching JIRA issue')
186
+ end
187
+
188
+ it 'warns the user when the config points_field is not defined' do
189
+ registry.config.handlers.jira.points_field = ''
190
+ grab_request(valid_client)
191
+ send_command('jira point XYZ-987 as 5')
192
+ expect(replies.last).to eq('You must define `points_field` in your lita_config')
193
+ end
194
+
195
+ it 'warns the user when settings points fails' do
196
+ allow(saved_issue).to receive(:save!).and_throw(JIRA::HTTPError)
197
+ grab_request(valid_client)
198
+ send_command('jira point XYZ-987 as 5')
199
+ expect(replies.last).to eq('Cannot set points on issue')
200
+ end
201
+ end
202
+
168
203
  describe '#todo' do
169
204
  it 'creates a new issue if the project is valid and there is a summary' do
170
205
  grab_request(valid_client)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-jira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Sigler
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-02-26 00:00:00.000000000 Z
14
+ date: 2016-06-01 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: lita