Commit 70d21539b107df6471cd054e1f04fb9cb3571b96

Authored by Stephen Crosby
2 parents 624c8a81 93241288
Exists in master

Merge remote-tracking branch 'mak-it/slack'

app/models/notification_services/slack_service.rb
... ... @@ -19,41 +19,35 @@ class NotificationServices::SlackService < NotificationService
19 19  
20 20 def post_payload(problem)
21 21 {
  22 + username: "Errbit",
  23 + icon_emoji: ":collision:",
22 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 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 2 app
3 3 err
4 4 error_class 'FooError'
5   - message 'Too Much Bar'
  5 + message 'FooError: Too Much Bar'
6 6 backtrace
7 7 server_environment { { 'environment-name' => 'production' } }
8 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 2 it "it should send a notification to Slack with hook url" do
3 3 # setup
4 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 8 problem = notice.problem
7 9  
8 10 # faraday stubbing
9 11 payload = {
  12 + username: "Errbit",
  13 + icon_emoji: ":collision:",
10 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 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 }
... ...