lita-pagerduty 0.0.1 → 0.1.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.
@@ -1,25 +1,26 @@
1
1
  Gem::Specification.new do |spec|
2
- spec.name = "lita-pagerduty"
3
- spec.version = "0.0.1"
4
- spec.authors = ["Eric Sigler"]
5
- spec.email = ["me@esigler.com"]
6
- spec.description = %q{A Lita handler to interact with PagerDuty}
7
- spec.summary = %q{A Lita handler to interact with PagerDuty}
8
- spec.homepage = "http://github.com/esigler/lita-pagerduty"
9
- spec.license = "MIT"
10
- spec.metadata = { "lita_plugin_type" => "handler" }
2
+ spec.name = 'lita-pagerduty'
3
+ spec.version = '0.1.0'
4
+ spec.authors = ['Eric Sigler']
5
+ spec.email = ['eric@pagerduty.com']
6
+ spec.description = 'A Lita handler to interact with PagerDuty'
7
+ spec.summary = 'A Lita handler to interact with PagerDuty'
8
+ spec.homepage = 'http://github.com/esigler/lita-pagerduty'
9
+ spec.license = 'MIT'
10
+ spec.metadata = { 'lita_plugin_type' => 'handler' }
11
11
 
12
- spec.files = `git ls-files`.split($/)
13
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
14
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
15
- spec.require_paths = ["lib"]
12
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
13
+ spec.executables = spec.files.grep(%r{^bin\/}) { |f| File.basename(f) }
14
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)\/})
15
+ spec.require_paths = ['lib']
16
16
 
17
- spec.add_runtime_dependency "lita", ">= 3.0"
18
- spec.add_runtime_dependency "pagerduty-sdk"
17
+ spec.add_runtime_dependency 'lita', '>= 4.0'
18
+ spec.add_runtime_dependency 'pagerduty-sdk'
19
19
 
20
- spec.add_development_dependency "bundler", "~> 1.3"
21
- spec.add_development_dependency "rake"
22
- spec.add_development_dependency "rspec", ">= 3.0.0.beta2"
23
- spec.add_development_dependency "simplecov"
24
- spec.add_development_dependency "coveralls"
20
+ spec.add_development_dependency 'bundler', '~> 1.3'
21
+ spec.add_development_dependency 'coveralls'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'rspec', '>= 3.0'
24
+ spec.add_development_dependency 'rubocop'
25
+ spec.add_development_dependency 'simplecov'
25
26
  end
data/locales/en.yml CHANGED
@@ -2,3 +2,83 @@ en:
2
2
  lita:
3
3
  handlers:
4
4
  pagerduty:
5
+ error:
6
+ not_implemented: Not implemented yet.
7
+ help:
8
+ ack:
9
+ syntax: pager ack 1234
10
+ desc: Acknowledge a specific incident
11
+ ack_all:
12
+ syntax: pager ack all
13
+ desc: Acknowledge all triggered incidents
14
+ ack_mine:
15
+ syntax: pager ack mine
16
+ desc: Acknowledge all triggered incidents assigned to me
17
+ forget:
18
+ syntax: pager forget
19
+ desc: Remove your chat user / email association
20
+ identify:
21
+ syntax: pager identify <email address>
22
+ desc: Associate your chat user with your email address
23
+ incident:
24
+ syntax: pager incident 1234
25
+ desc: Show a specific incident
26
+ incidents_all:
27
+ syntax: pager incidents all
28
+ desc: Show all open incidents
29
+ incidents_mine:
30
+ syntax: pager incidents mine
31
+ desc: Show all open incidents assigned to me
32
+ note:
33
+ syntax: pager note 1234 some text
34
+ desc: Add a note to a specific incident (not implemented yet)
35
+ notes:
36
+ syntax: pager notes 1234
37
+ desc: Show all notes for a specific incident
38
+ resolve:
39
+ syntax: pager resolve 1234
40
+ desc: Resolve a specific incident
41
+ resolve_all:
42
+ syntax: pager resolve all
43
+ desc: Resolve all triggered incidents
44
+ resolve_mine:
45
+ syntax: pager resolve mine
46
+ desc: Resolve all triggered incidents assigned to me
47
+ on_call_list:
48
+ syntax: pager oncall
49
+ desc: List available schedules
50
+ on_call_lookup:
51
+ syntax: pager oncall <schedule>
52
+ desc: Show who is on call for the given schedule
53
+ whos_on_call:
54
+ syntax: who's on call?
55
+ desc: Show everyone currently on call (not implemented yet)
56
+ identify:
57
+ already: You have already been identified!
58
+ complete: You have now been identified.
59
+ missing: You have not identified yourself (use the help command for more info)
60
+ incident:
61
+ acknowledged: "%{id}: Incident acknowledged"
62
+ already_set: "%{id}: Incident already %{status}"
63
+ none: No triggered, open, or acknowledged incidents
64
+ none_mine: You have no triggered, open, or acknowledged incidents
65
+ not_found: "%{id}: Incident not found"
66
+ resolved: "%{id}: Incident resolved"
67
+ unable_to_acknowledge: "%{id}: Unable to acknowledge incident"
68
+ unable_to_resolve: "%{id}: Unable to resolve incident"
69
+ info: "%{id}: \"%{subject}\", assigned to: %{assigned}"
70
+ forget:
71
+ complete: Your email has now been forgotten.
72
+ unknown: No email on record for you.
73
+ all:
74
+ acknowledged: "Acknowledged: %{list}"
75
+ resolved: "Resolved: %{list}"
76
+ note:
77
+ show: "%{id}: %{content} (%{email})"
78
+ on_call_list:
79
+ response: "Available schedules: %{schedules}"
80
+ no_schedules_found: "No schedules found"
81
+ on_call_lookup:
82
+ response: "%{name} (%{email}) is currently on call for %{schedule_name}"
83
+ no_matching_schedule: "No matching schedules found for '%{schedule_name}'"
84
+ no_one_on_call: "No one is currently on call for %{schedule_name}"
@@ -0,0 +1,95 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lita::Handlers::PagerdutyAck, lita_handler: true do
4
+ include_context 'basic fixtures'
5
+
6
+ it do
7
+ is_expected.to route_command('pager ack all').to(:ack_all)
8
+ is_expected.to route_command('pager ack mine').to(:ack_mine)
9
+ is_expected.to route_command('pager ack ABC123').to(:ack)
10
+ end
11
+
12
+ describe '#ack_all' do
13
+ describe 'when there are acknowledgable incidents' do
14
+ it 'shows them as acknowledged' do
15
+ expect(Pagerduty).to receive(:new).twice { incidents }
16
+ send_command('pager ack all')
17
+ expect(replies.last).to eq('Acknowledged: ABC789')
18
+ end
19
+ end
20
+
21
+ describe 'when there are no acknowledgable incidents' do
22
+ it 'shows a warning' do
23
+ expect(Pagerduty).to receive(:new) { no_incidents }
24
+ send_command('pager ack all')
25
+ expect(replies.last).to eq('No triggered, open, or acknowledged ' \
26
+ 'incidents')
27
+ end
28
+ end
29
+ end
30
+
31
+ describe '#ack_mine' do
32
+ describe 'when there are acknowledgable incidents for the user' do
33
+ it 'shows them as acknowledged' do
34
+ bar = Lita::User.create(123, name: 'bar')
35
+ expect(Pagerduty).to receive(:new).twice { incidents }
36
+ send_command('pager identify bar@example.com', as: bar)
37
+ send_command('pager ack mine', as: bar)
38
+ expect(replies.last).to eq('Acknowledged: ABC789')
39
+ end
40
+ end
41
+
42
+ describe 'when there are no acknowledgable incidents for the user' do
43
+ it 'shows a warning' do
44
+ foo = Lita::User.create(123, name: 'foo')
45
+ expect(Pagerduty).to receive(:new) { incidents }
46
+ send_command('pager identify foo@example.com', as: foo)
47
+ send_command('pager ack mine', as: foo)
48
+ expect(replies.last).to eq('You have no triggered, open, or ' \
49
+ 'acknowledged incidents')
50
+ end
51
+ end
52
+
53
+ describe 'when the user has not identified themselves' do
54
+ it 'shows a warning' do
55
+ send_command('pager ack mine')
56
+ expect(replies.last).to eq('You have not identified yourself (use ' \
57
+ 'the help command for more info)')
58
+ end
59
+ end
60
+ end
61
+
62
+ describe '#ack' do
63
+ describe 'when the incident has not been acknowledged' do
64
+ it 'shows the acknowledgement' do
65
+ expect(Pagerduty).to receive(:new) { new_incident }
66
+ send_command('pager ack ABC123')
67
+ expect(replies.last).to eq('ABC123: Incident acknowledged')
68
+ end
69
+ end
70
+
71
+ describe 'when the incident has already been acknowledged' do
72
+ it 'shows the warning' do
73
+ expect(Pagerduty).to receive(:new) { acknowledged_incident }
74
+ send_command('pager ack ABC123')
75
+ expect(replies.last).to eq('ABC123: Incident already acknowledged')
76
+ end
77
+ end
78
+
79
+ describe 'when the incident does not exist' do
80
+ it 'shows an error' do
81
+ expect(Pagerduty).to receive(:new) { no_incident }
82
+ send_command('pager ack ABC123')
83
+ expect(replies.last).to eq('ABC123: Incident not found')
84
+ end
85
+ end
86
+
87
+ describe 'when the incident cannot be acknowledged' do
88
+ it 'shows that its unable to acknowledge' do
89
+ expect(Pagerduty).to receive(:new) { unable_to_ack_incident }
90
+ send_command('pager ack ABC123')
91
+ expect(replies.last).to eq('ABC123: Unable to acknowledge incident')
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lita::Handlers::PagerdutyIncident, lita_handler: true do
4
+ include_context 'basic fixtures'
5
+
6
+ it do
7
+ is_expected.to route_command('pager incidents all').to(:incidents_all)
8
+ is_expected.to route_command('pager incidents mine').to(:incidents_mine)
9
+ is_expected.to route_command('pager incident ABC123').to(:incident)
10
+ end
11
+
12
+ describe '#incidents_all' do
13
+ describe 'when there are open incidents' do
14
+ it 'shows a list of incidents' do
15
+ expect(Pagerduty).to receive(:new) { incidents }
16
+ send_command('pager incidents all')
17
+ expect(replies.last).to eq('ABC789: "Still broke", assigned to: '\
18
+ 'bar@example.com')
19
+ end
20
+ end
21
+
22
+ describe 'when there are no open incidents' do
23
+ it 'shows a warning' do
24
+ expect(Pagerduty).to receive(:new) { no_incidents }
25
+ send_command('pager incidents all')
26
+ expect(replies.last).to eq('No triggered, open, or acknowledged ' \
27
+ 'incidents')
28
+ end
29
+ end
30
+ end
31
+
32
+ describe '#incidents_mine' do
33
+ describe 'when there are open incidents for the user' do
34
+ it 'shows a list of incidents' do
35
+ bar = Lita::User.create(123, name: 'bar')
36
+ expect(Pagerduty).to receive(:new) { incidents }
37
+ send_command('pager identify bar@example.com', as: bar)
38
+ send_command('pager incidents mine', as: bar)
39
+ expect(replies.last).to eq('ABC789: "Still broke", assigned to: ' \
40
+ 'bar@example.com')
41
+ end
42
+ end
43
+
44
+ describe 'when there are no open incidents for the user' do
45
+ it 'shows no incidents' do
46
+ foo = Lita::User.create(123, name: 'foo')
47
+ expect(Pagerduty).to receive(:new) { incidents }
48
+ send_command('pager identify foo@example.com', as: foo)
49
+ send_command('pager incidents mine', as: foo)
50
+ expect(replies.last).to eq('You have no triggered, open, or ' \
51
+ 'acknowledged incidents')
52
+ end
53
+ end
54
+
55
+ describe 'when the user has not identified themselves' do
56
+ it 'shows a warning' do
57
+ send_command('pager incidents mine')
58
+ expect(replies.last).to eq('You have not identified yourself (use ' \
59
+ 'the help command for more info)')
60
+ end
61
+ end
62
+ end
63
+
64
+ describe '#incident' do
65
+ describe 'when the incident exists' do
66
+ it 'shows incident details' do
67
+ expect(Pagerduty).to receive(:new) { new_incident }
68
+ send_command('pager incident ABC123')
69
+ expect(replies.last).to eq('ABC123: "something broke", ' \
70
+ 'assigned to: foo@example.com')
71
+ end
72
+ end
73
+
74
+ describe 'when the incident does not exist' do
75
+ it 'shows an error' do
76
+ expect(Pagerduty).to receive(:new) { no_incident }
77
+ send_command('pager incident ABC123')
78
+ expect(replies.last).to eq('ABC123: Incident not found')
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lita::Handlers::PagerdutyNote, lita_handler: true do
4
+ include_context 'basic fixtures'
5
+
6
+ it do
7
+ is_expected.to route_command('pager notes ABC123').to(:notes)
8
+ is_expected.to route_command('pager note ABC123 some text').to(:note)
9
+ end
10
+
11
+ describe '#notes' do
12
+ describe 'when the incident has notes' do
13
+ it 'shows incident notes' do
14
+ expect(Pagerduty).to receive(:new) { incident_with_notes }
15
+ send_command('pager notes ABC123')
16
+ expect(replies.last).to eq('ABC123: Hi! (foo@example.com)')
17
+ end
18
+ end
19
+
20
+ describe 'when the incident doesnt have notes' do
21
+ it 'shows no notes' do
22
+ expect(Pagerduty).to receive(:new) { new_incident }
23
+ send_command('pager notes ABC123')
24
+ expect(replies.last).to eq('ABC123: No notes')
25
+ end
26
+ end
27
+
28
+ describe 'when the incident does not exist' do
29
+ it 'shows an error' do
30
+ expect(Pagerduty).to receive(:new) { no_incident }
31
+ send_command('pager notes ABC123')
32
+ expect(replies.last).to eq('ABC123: Incident not found')
33
+ end
34
+ end
35
+ end
36
+
37
+ describe '#note' do
38
+ it 'shows a warning' do
39
+ send_command('pager note ABC123 some text')
40
+ expect(replies.last).to eq('Not implemented yet.')
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,95 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lita::Handlers::PagerdutyResolve, lita_handler: true do
4
+ include_context 'basic fixtures'
5
+
6
+ it do
7
+ is_expected.to route_command('pager resolve all').to(:resolve_all)
8
+ is_expected.to route_command('pager resolve mine').to(:resolve_mine)
9
+ is_expected.to route_command('pager resolve ABC123').to(:resolve)
10
+ end
11
+
12
+ describe '#resolve_all' do
13
+ describe 'when there are resolvable incidents' do
14
+ it 'shows them as resolved' do
15
+ expect(Pagerduty).to receive(:new).twice { incidents }
16
+ send_command('pager resolve all')
17
+ expect(replies.last).to eq('Resolved: ABC789')
18
+ end
19
+ end
20
+
21
+ describe 'when there are no resolvable incidents' do
22
+ it 'shows a warning' do
23
+ expect(Pagerduty).to receive(:new) { no_incidents }
24
+ send_command('pager resolve all')
25
+ expect(replies.last).to eq('No triggered, open, or acknowledged ' \
26
+ 'incidents')
27
+ end
28
+ end
29
+ end
30
+
31
+ describe '#resolve_mine' do
32
+ describe 'when there are resolvable incidents for the user' do
33
+ it 'shows them as acknowledged' do
34
+ bar = Lita::User.create(123, name: 'bar')
35
+ expect(Pagerduty).to receive(:new).twice { incidents }
36
+ send_command('pager identify bar@example.com', as: bar)
37
+ send_command('pager resolve mine', as: bar)
38
+ expect(replies.last).to eq('Resolved: ABC789')
39
+ end
40
+ end
41
+
42
+ describe 'when there are no resolvable incidents for the user' do
43
+ it 'shows a warning' do
44
+ foo = Lita::User.create(123, name: 'foo')
45
+ expect(Pagerduty).to receive(:new) { incidents }
46
+ send_command('pager identify foo@example.com', as: foo)
47
+ send_command('pager resolve mine', as: foo)
48
+ expect(replies.last).to eq('You have no triggered, open, or ' \
49
+ 'acknowledged incidents')
50
+ end
51
+ end
52
+
53
+ describe 'when the user has not identified themselves' do
54
+ it 'shows a warning' do
55
+ send_command('pager resolve mine')
56
+ expect(replies.last).to eq('You have not identified yourself (use ' \
57
+ 'the help command for more info)')
58
+ end
59
+ end
60
+ end
61
+
62
+ describe '#resolve' do
63
+ describe 'when the incident has not been resolved' do
64
+ it 'shows the resolve' do
65
+ expect(Pagerduty).to receive(:new) { new_incident }
66
+ send_command('pager resolve ABC123')
67
+ expect(replies.last).to eq('ABC123: Incident resolved')
68
+ end
69
+ end
70
+
71
+ describe 'when the incident has already been resolved' do
72
+ it 'shows the warning' do
73
+ expect(Pagerduty).to receive(:new) { resolved_incident }
74
+ send_command('pager resolve ABC123')
75
+ expect(replies.last).to eq('ABC123: Incident already resolved')
76
+ end
77
+ end
78
+
79
+ describe 'when the incident does not exist' do
80
+ it 'shows an error' do
81
+ expect(Pagerduty).to receive(:new) { no_incident }
82
+ send_command('pager resolve ABC123')
83
+ expect(replies.last).to eq('ABC123: Incident not found')
84
+ end
85
+ end
86
+
87
+ describe 'when the incident cannot be resolved' do
88
+ it 'shows an error' do
89
+ expect(Pagerduty).to receive(:new) { unable_to_resolve_incident }
90
+ send_command('pager resolve ABC123')
91
+ expect(replies.last).to eq('ABC123: Unable to resolve incident')
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lita::Handlers::PagerdutyUtility, lita_handler: true do
4
+ include_context 'basic fixtures'
5
+
6
+ it do
7
+ is_expected.to route_command('pager oncall').to(:on_call_list)
8
+ is_expected.to route_command('pager oncall ops').to(:on_call_lookup)
9
+ is_expected.to route_command('pager identify foobar@example.com').to(:identify)
10
+ is_expected.to route_command('pager forget').to(:forget)
11
+ end
12
+
13
+ before do
14
+ Lita.config.handlers.pagerduty.api_key = 'foo'
15
+ Lita.config.handlers.pagerduty.subdomain = 'bar'
16
+ end
17
+
18
+ describe '#identify' do
19
+ describe 'when that email is new' do
20
+ it 'shows a successful identification' do
21
+ foo = Lita::User.create(123, name: 'foo')
22
+ send_command('pager identify foo@example.com', as: foo)
23
+ expect(replies.last).to eq('You have now been identified.')
24
+ end
25
+ end
26
+
27
+ # TODO: It'd be great to validate this against the existing
28
+ # users on the PD account.
29
+
30
+ describe 'when that email exists already' do
31
+ it 'shows a warning' do
32
+ baz = Lita::User.create(321, name: 'baz')
33
+ send_command('pager identify baz@example.com', as: baz)
34
+ send_command('pager identify baz@example.com', as: baz)
35
+ expect(replies.last).to eq('You have already been identified!')
36
+ end
37
+ end
38
+ end
39
+
40
+ describe '#forget' do
41
+ describe 'when that user is associated' do
42
+ it 'shows a successful forget' do
43
+ foo = Lita::User.create(123, name: 'foo')
44
+ send_command('pager identify foo@example.com', as: foo)
45
+ send_command('pager forget', as: foo)
46
+ expect(replies.last).to eq('Your email has now been forgotten.')
47
+ end
48
+ end
49
+
50
+ describe 'when that user is not associated' do
51
+ it 'shows a warning' do
52
+ foo = Lita::User.create(123, name: 'foo')
53
+ send_command('pager forget', as: foo)
54
+ expect(replies.last).to eq('No email on record for you.')
55
+ end
56
+ end
57
+ end
58
+ end
data/spec/spec_helper.rb CHANGED
@@ -8,3 +8,152 @@ SimpleCov.start { add_filter '/spec/' }
8
8
 
9
9
  require 'lita-pagerduty'
10
10
  require 'lita/rspec'
11
+
12
+ Lita.version_3_compatibility_mode = false
13
+
14
+ RSpec.configure do |config|
15
+ config.before do
16
+ registry.register_handler(Lita::Handlers::PagerdutyAck)
17
+ registry.register_handler(Lita::Handlers::PagerdutyIncident)
18
+ registry.register_handler(Lita::Handlers::PagerdutyNote)
19
+ registry.register_handler(Lita::Handlers::PagerdutyResolve)
20
+ registry.register_handler(Lita::Handlers::PagerdutyUtility)
21
+ end
22
+ end
23
+
24
+ RSpec.shared_context 'basic fixtures' do
25
+ let(:no_incident) do
26
+ client = double
27
+ expect(client).to receive(:get_incident) { 'No results' }
28
+ client
29
+ end
30
+
31
+ let(:no_incidents) do
32
+ client = double
33
+ expect(client).to receive(:incidents) do
34
+ double(
35
+ incidents: []
36
+ )
37
+ end
38
+ client
39
+ end
40
+
41
+ let(:incidents) do
42
+ client = double
43
+ expect(client).to receive(:incidents) do
44
+ double(
45
+ incidents: [
46
+ double(
47
+ id: 'ABC123',
48
+ status: 'resolved',
49
+ trigger_summary_data: double(subject: 'something broke'),
50
+ assigned_to_user: double(email: 'foo@example.com')
51
+ ),
52
+ double(
53
+ id: 'ABC789',
54
+ status: 'triggered',
55
+ trigger_summary_data: double(subject: 'Still broke'),
56
+ assigned_to_user: double(email: 'bar@example.com')
57
+ )
58
+ ]
59
+ )
60
+ end
61
+ allow(client).to receive(:get_incident) do
62
+ double(
63
+ status: 'triggered',
64
+ trigger_summary_data: double(subject: 'Still broke'),
65
+ assigned_to_user: double(email: 'bar@example.com'),
66
+ acknowledge: { 'id' => 'ABC789', 'status' => 'acknowledged' },
67
+ resolve: { 'id' => 'ABC789', 'status' => 'resolved' },
68
+ notes: double(notes: [])
69
+ )
70
+ end
71
+ client
72
+ end
73
+
74
+ let(:new_incident) do
75
+ client = double
76
+ expect(client).to receive(:get_incident) do
77
+ double(
78
+ id: 'ABC123',
79
+ status: 'triggered',
80
+ trigger_summary_data: double(subject: 'something broke'),
81
+ assigned_to_user: double(email: 'foo@example.com'),
82
+ acknowledge: { 'id' => 'ABC123', 'status' => 'acknowledged' },
83
+ resolve: { 'id' => 'ABC123', 'status' => 'resolved' },
84
+ notes: double(notes: [])
85
+ )
86
+ end
87
+ client
88
+ end
89
+
90
+ let(:acknowledged_incident) do
91
+ client = double
92
+ expect(client).to receive(:get_incident) do
93
+ double(
94
+ status: 'acknowledged',
95
+ trigger_summary_data: double(subject: 'something broke'),
96
+ assigned_to_user: double(email: 'foo@example.com'),
97
+ acknowledge: { 'error' =>
98
+ { 'message' => 'Incident Already Acknowledged', 'code' => 1002 }
99
+ },
100
+ resolve: { 'id' => 'ABC123', 'status' => 'resolved' },
101
+ notes: double(notes: [])
102
+ )
103
+ end
104
+ client
105
+ end
106
+
107
+ let(:resolved_incident) do
108
+ client = double
109
+ expect(client).to receive(:get_incident) do
110
+ double(
111
+ status: 'resolved',
112
+ trigger_summary_data: double(subject: 'something broke'),
113
+ assigned_to_user: double(email: 'foo@example.com'),
114
+ notes: double(notes: [])
115
+ )
116
+ end
117
+ client
118
+ end
119
+
120
+ let(:unable_to_resolve_incident) do
121
+ client = double
122
+ expect(client).to receive(:get_incident) do
123
+ double(
124
+ status: 'notresolved',
125
+ resolve: { 'id' => 'ABC123', 'status' => 'notresolved' }
126
+ )
127
+ end
128
+ client
129
+ end
130
+
131
+ let(:unable_to_ack_incident) do
132
+ client = double
133
+ expect(client).to receive(:get_incident) do
134
+ double(
135
+ status: 'notacked',
136
+ acknowledge: { 'error' => {} },
137
+ resolve: { 'id' => 'ABC123', 'status' => 'notacked' }
138
+ )
139
+ end
140
+ client
141
+ end
142
+
143
+ let(:incident_with_notes) do
144
+ client = double
145
+ expect(client).to receive(:get_incident) do
146
+ double(
147
+ id: 'ABC123',
148
+ status: 'resolved',
149
+ trigger_summary_data: double(subject: 'something broke'),
150
+ assigned_to_user: double(email: 'foo@example.com'),
151
+ notes: double(
152
+ notes: [double(content: 'Hi!',
153
+ user: double(email: 'foo@example.com'))]
154
+ )
155
+ )
156
+ end
157
+ client
158
+ end
159
+ end