Commit 93241288077e60539f6ae21b174d7ec287b4e45d

Authored by Edgars Beigarts
1 parent ae91fcb5
Exists in master

More compact slack notifications

app/models/notification_services/slack_service.rb
@@ -19,41 +19,35 @@ class NotificationServices::SlackService < NotificationService @@ -19,41 +19,35 @@ class NotificationServices::SlackService < NotificationService
19 19
20 def post_payload(problem) 20 def post_payload(problem)
21 { 21 {
  22 + username: "Errbit",
  23 + icon_emoji: ":collision:",
22 attachments: [ 24 attachments: [
23 { 25 {
24 - fallback: message_for_slack(problem),  
25 - pretext: "<#{problem.url}|Errbit - #{problem.app.name}: #{problem.error_class}>",  
26 - color: "#D00000",  
27 - fields: [ 26 + fallback: message_for_slack(problem),
  27 + title: problem.message.to_s.truncate(100),
  28 + title_link: problem.url,
  29 + text: problem.where,
  30 + color: "#D00000",
  31 + fields: [
28 { 32 {
29 - title: "Environment",  
30 - value: problem.environment,  
31 - short: false 33 + title: "Application",
  34 + value: problem.app.name,
  35 + short: true
32 }, 36 },
33 { 37 {
34 - title: "Location",  
35 - value: problem.where,  
36 - short: false 38 + title: "Environment",
  39 + value: problem.environment,
  40 + short: true
37 }, 41 },
38 { 42 {
39 - title: "Message",  
40 - value: problem.message.to_s,  
41 - short: false 43 + title: "Times Occurred",
  44 + value: problem.notices_count,
  45 + short: true
42 }, 46 },
43 { 47 {
44 title: "First Noticed", 48 title: "First Noticed",
45 - value: problem.first_notice_at,  
46 - short: false  
47 - },  
48 - {  
49 - title: "Last Noticed",  
50 - value: problem.last_notice_at,  
51 - short: false  
52 - },  
53 - {  
54 - title: "Times Occurred",  
55 - value: problem.notices_count,  
56 - short: false 49 + value: problem.first_notice_at.try(:to_s, :db),
  50 + short: true
57 } 51 }
58 ] 52 ]
59 } 53 }
spec/fabricators/notice_fabricator.rb
@@ -2,7 +2,7 @@ Fabricator :notice do @@ -2,7 +2,7 @@ Fabricator :notice do
2 app 2 app
3 err 3 err
4 error_class 'FooError' 4 error_class 'FooError'
5 - message 'Too Much Bar' 5 + message 'FooError: Too Much Bar'
6 backtrace 6 backtrace
7 server_environment { { 'environment-name' => 'production' } } 7 server_environment { { 'environment-name' => 'production' } }
8 request { { 'component' => 'foo', 'action' => 'bar' } } 8 request { { 'component' => 'foo', 'action' => 'bar' } }
spec/models/notification_service/slack_service_spec.rb
@@ -2,46 +2,42 @@ describe NotificationServices::SlackService, type: &#39;model&#39; do @@ -2,46 +2,42 @@ describe NotificationServices::SlackService, type: &#39;model&#39; do
2 it "it should send a notification to Slack with hook url" do 2 it "it should send a notification to Slack with hook url" do
3 # setup 3 # setup
4 notice = Fabricate :notice 4 notice = Fabricate :notice
5 - notification_service = Fabricate :slack_notification_service, app: notice.app, service_url: "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXX" 5 + notification_service = Fabricate :slack_notification_service,
  6 + app: notice.app,
  7 + service_url: "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXX"
6 problem = notice.problem 8 problem = notice.problem
7 9
8 # faraday stubbing 10 # faraday stubbing
9 payload = { 11 payload = {
  12 + username: "Errbit",
  13 + icon_emoji: ":collision:",
10 attachments: [ 14 attachments: [
11 { 15 {
12 - fallback: notification_service.message_for_slack(problem),  
13 - pretext: "<#{problem.url}|Errbit - #{problem.app.name}: #{problem.error_class}>",  
14 - color: "#D00000",  
15 - fields: [ 16 + fallback: notification_service.message_for_slack(problem),
  17 + title: problem.message.to_s.truncate(100),
  18 + title_link: problem.url,
  19 + text: problem.where,
  20 + color: "#D00000",
  21 + fields: [
16 { 22 {
17 - title: "Environment",  
18 - value: problem.environment,  
19 - short: false 23 + title: "Application",
  24 + value: problem.app.name,
  25 + short: true
20 }, 26 },
21 { 27 {
22 - title: "Location",  
23 - value: problem.where,  
24 - short: false 28 + title: "Environment",
  29 + value: problem.environment,
  30 + short: true
25 }, 31 },
26 { 32 {
27 - title: "Message",  
28 - value: problem.message.to_s,  
29 - short: false 33 + title: "Times Occurred",
  34 + value: problem.notices_count,
  35 + short: true
30 }, 36 },
31 { 37 {
32 title: "First Noticed", 38 title: "First Noticed",
33 - value: problem.first_notice_at,  
34 - short: false  
35 - },  
36 - {  
37 - title: "Last Noticed",  
38 - value: problem.last_notice_at,  
39 - short: false  
40 - },  
41 - {  
42 - title: "Times Occurred",  
43 - value: problem.notices_count,  
44 - short: false 39 + value: problem.first_notice_at.try(:to_s, :db),
  40 + short: true
45 } 41 }
46 ] 42 ]
47 } 43 }