lita-ticket_notifier 0.0.16 → 0.0.17

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: 07ea5e3f9e0d1f5ded04baf1b61b9c5e95758dd6
4
- data.tar.gz: 7d286988170deac84b84b5bf28f44c0efc8b0e0d
3
+ metadata.gz: 8b80a502e26bde3b64f26ec101abc9197d8a99db
4
+ data.tar.gz: 99a0e39ef697bc37e50245501ebc4b6f191df388
5
5
  SHA512:
6
- metadata.gz: 8866bb90007f009360654c90ac4b4355956428ff41dcacff5934e24ff9ee8b42199dde6d308e6208749f3a7369cabec8a4f7d01e4d32243fee28a7d7f90f4c24
7
- data.tar.gz: 2f22fbe3bba62260695bcd7cd0711e50981e6f11b29acefd3ba154632ad2ca526058b3e18858409335e9cfbdf63fee54d6bac230ce458a6ede0ac829c34222c0
6
+ metadata.gz: b5f2d71bd678b6de2263a153ed6adf9749b48a6d25b441cb1df3b40ab29ed425290f584ea93552f373b6a78bfdf7f7a4c020703c3ca37a3dc23fee83c29687f9
7
+ data.tar.gz: daa99f4220a17de77a0ca03742c54a4367786ee02dd7bc72b926242830afb19559f696bb7abc4fda90c4afcfb3baad42b65e571e4d868b102723d6eb1e26143f
@@ -2,6 +2,11 @@ module Lita
2
2
  module Handlers
3
3
  class TicketNotifier < Handler
4
4
  attr_accessor :ticket_json, :ticket_object
5
+
6
+ def self.default_config(config)
7
+ config.tags_watching = ''
8
+ end
9
+
5
10
  http.post "/ticket_notification", :ticket_notification
6
11
 
7
12
  route(/ticket notify start/i, :add_ticket_notification, command: true,
@@ -15,7 +20,7 @@ module Lita
15
20
  def ticket_notification(request, response)
16
21
  self.ticket_json ||= JSON.parse(request.body.read)
17
22
  user_names.each do |user_name|
18
- send_message_to_user(user_name, ticket_message)
23
+ send_message_to_user(user_name, ticket_message) if notify?
19
24
  end
20
25
  end
21
26
 
@@ -35,6 +40,22 @@ module Lita
35
40
 
36
41
  private
37
42
 
43
+ def tags_watching
44
+ Lita.config.handlers.ticket_notifier.tags_watching
45
+ end
46
+
47
+ def watching_all_tags?
48
+ tags_watching.empty?
49
+ end
50
+
51
+ def watching_tag?
52
+ (ticket.tag.split & tags_watching.split).any?
53
+ end
54
+
55
+ def notify?
56
+ watching_all_tags? || watching_tag?
57
+ end
58
+
38
59
  def send_message_to_user(user_name, message)
39
60
  robot.send_message(source_from_name(user_name), message)
40
61
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "lita-ticket_notifier"
3
- spec.version = "0.0.16"
3
+ spec.version = "0.0.17"
4
4
  spec.authors = ["Michael van den Beuken", "Ruben Estevez", "Jordan Babe", "Mathieu Gilbert", "Ryan Jones", "Darko Dosenovic"]
5
5
  spec.email = ["michael.beuken@gmail.com", "ruben.a.estevez@gmail.com", "jorbabe@gmail.com", "mathieu.gilbert@ama.ab.ca", "ryan.michael.jones@gmail.com", "darko.dosenovic@ama.ab.ca"]
6
6
  spec.description = %q{Notify users about new tickets coming in.}
@@ -21,7 +21,7 @@
21
21
  "project_id": 66073,
22
22
  "spam": false,
23
23
  "state": "review",
24
- "tag": "dev",
24
+ "tag": "dev pies",
25
25
  "title": "test ticket",
26
26
  "updated_at": "2014-08-06T22:55:32Z",
27
27
  "url": "http://waffles.lighthouseapp.com/projects/1/tickets/200",
@@ -0,0 +1,36 @@
1
+ {
2
+ "version": {
3
+ "assigned_user_id": null,
4
+ "attachments_count": 0,
5
+ "body": "",
6
+ "body_html": "",
7
+ "closed": true,
8
+ "created_at": "2014-08-06T22:55:30Z",
9
+ "creator_id": 240273,
10
+ "creator_name": "Mathieu Gilbert",
11
+ "diffable_attributes": {
12
+ "state": "resolved"
13
+ },
14
+ "importance": 3,
15
+ "importance_name": "Low",
16
+ "milestone_id": null,
17
+ "milestone_order": 9999,
18
+ "number": 4146,
19
+ "permalink": "test-ticket",
20
+ "priority": 3,
21
+ "project_id": 66073,
22
+ "spam": false,
23
+ "state": "review",
24
+ "tag": "doomsday",
25
+ "title": "test ticket",
26
+ "updated_at": "2014-08-06T22:55:32Z",
27
+ "url": "http://waffles.lighthouseapp.com/projects/1/tickets/200",
28
+ "user_id": 240273,
29
+ "user_name": "Mathieu Gilbert",
30
+ "version": 3,
31
+ "watchers_ids": [
32
+ 240273,
33
+ 216682
34
+ ]
35
+ }
36
+ }
@@ -4,9 +4,16 @@ require "json"
4
4
  describe Lita::Handlers::TicketNotifier, lita_handler: true do
5
5
  let(:payload) { File.read(File.join('spec', 'fixtures', 'ticket.json')) }
6
6
  let(:request) { OpenStruct.new({ body: OpenStruct.new({ read: payload }) }) }
7
+ let(:unwatched_payload) { File.read(File.join('spec', 'fixtures', 'unwatched_ticket.json')) }
8
+ let(:unwatched_request) { OpenStruct.new({ body: OpenStruct.new({ read: unwatched_payload }) }) }
9
+
7
10
  let(:teddy) { Lita::User.create(123, name: "Teddy Ruxbin") }
8
11
  let(:batman) { Lita::User.create(567, name: "The Batman") }
9
- let(:ticket_messsage) { "Ticket: test ticket\nState:review\nImportance:Low\nTags:dev\nhttp://waffles.lighthouseapp.com/projects/1/tickets/200" }
12
+ let(:ticket_messsage) { "Ticket: test ticket\nState:review\nImportance:Low\nTags:dev pies\nhttp://waffles.lighthouseapp.com/projects/1/tickets/200" }
13
+
14
+ before(:each) do
15
+ Lita.config.handlers.ticket_notifier.tags_watching = 'pies cakes'
16
+ end
10
17
 
11
18
  it { routes_command("ticket notify start").to(:add_ticket_notification) }
12
19
  it { routes_command("ticket notify stop").to(:remove_ticket_notification) }
@@ -25,6 +32,31 @@ describe Lita::Handlers::TicketNotifier, lita_handler: true do
25
32
  subject.ticket_notification(request, nil)
26
33
  end
27
34
 
35
+ it "sends notifications for chosen tags" do
36
+ expect(subject).to receive(:send_message_to_user).once
37
+
38
+ send_command("ticket notify start")
39
+
40
+ subject.ticket_notification(request, nil)
41
+ end
42
+
43
+ it "defaults to watching all tags" do
44
+ Lita.config.handlers.ticket_notifier.tags_watching = ''
45
+ expect(subject).to receive(:send_message_to_user).once
46
+
47
+ send_command("ticket notify start")
48
+
49
+ subject.ticket_notification(request, nil)
50
+ end
51
+
52
+ it "doesn't send notifications for unwatched tags" do
53
+ expect(subject).to_not receive(:send_message_to_user)
54
+
55
+ send_command("ticket notify start")
56
+
57
+ subject.ticket_notification(unwatched_request, nil)
58
+ end
59
+
28
60
  it "doesn't add you twice" do
29
61
  send_command("ticket notify start")
30
62
  send_command("ticket notify start")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-ticket_notifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael van den Beuken
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2014-08-12 00:00:00.000000000 Z
16
+ date: 2014-08-13 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: lita
@@ -107,6 +107,7 @@ files:
107
107
  - lita-ticket_notifier.gemspec
108
108
  - locales/en.yml
109
109
  - spec/fixtures/ticket.json
110
+ - spec/fixtures/unwatched_ticket.json
110
111
  - spec/lita/handlers/ticket_notifier_spec.rb
111
112
  - spec/spec_helper.rb
112
113
  homepage: https://github.com/amaabca/lita-ticket_notifier
@@ -136,5 +137,6 @@ specification_version: 4
136
137
  summary: Users can opt-in/out from Lighthouse new ticket notifications.
137
138
  test_files:
138
139
  - spec/fixtures/ticket.json
140
+ - spec/fixtures/unwatched_ticket.json
139
141
  - spec/lita/handlers/ticket_notifier_spec.rb
140
142
  - spec/spec_helper.rb