lita-jira 0.8.0 → 0.8.1

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: 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