Skip to content

Commit 2e97ed3

Browse files
committed
Show backtrace in table and show severity in email subject
1 parent dee2965 commit 2e97ed3

File tree

7 files changed

+58
-24
lines changed

7 files changed

+58
-24
lines changed
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
<li><%= frame %></li>
1+
<tr>
2+
<td><%= frame %></td>
3+
</tr>
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<p>No backtrace available</p>
1+
<tr><td>No backtrace available</td></tr>

app/views/email_error_reporter/error_mailer/error.html.erb

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22
<p><%= @error.message %></p>
33

44
<div>
5-
<%= render(partial: "frame", collection: @backtrace) || render("no_backtrace") -%>
5+
<table border="1">
6+
<%= render(partial: "frame", collection: @backtrace) || render("no_backtrace") -%>
7+
</table>
68
</div>

lib/email_error_reporter/error_mailer.rb

+7-1
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,14 @@ def error(error, handled:, severity:, context:, source: nil)
99

1010
@backtrace = Array.wrap(error.backtrace)
1111

12+
severity_to_emoji = {
13+
error: "🔥",
14+
warning: "⚠️",
15+
info: "ℹ️"
16+
}
17+
1218
mail(
13-
subject: "#{error.class}",
19+
subject: "#{severity_to_emoji.fetch(@severity)} #{error.class}",
1420
to: Rails.application.config.email_error_reporter.to
1521
)
1622
end

test/dummy/test/fixtures/email_error_reporter/error_mailer/error

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22
<p>some message</p>
33

44
<div>
5-
<p>No backtrace available</p>
5+
<table border="1">
6+
<tr><td>No backtrace available</td></tr>
7+
</table>
68
</div>

test/dummy/test/fixtures/email_error_reporter/error_mailer/error_with_backtrace

+8-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
<p>some message</p>
33

44
<div>
5-
<li>foo</li>
6-
<li>bar</li>
5+
<table border="1">
6+
<tr>
7+
<td>foo</td>
8+
</tr>
9+
<tr>
10+
<td>bar</td>
11+
</tr>
12+
</table>
713
</div>

test/error_mailer_test.rb

+33-17
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,46 @@
11
require "test_helper"
22

33
class EmailErrorReporter::ErrorMailerTest < ActionMailer::TestCase
4+
setup do
5+
@exception = Exception.new("some message")
6+
end
7+
48
test "renders the template correctly" do
5-
exception = Exception.new("some message")
6-
email = EmailErrorReporter::ErrorMailer.error(
7-
exception,
8-
handled: true,
9-
severity: :info,
10-
context: {}
11-
)
12-
assert_equal [], email.to
13-
assert_equal "Exception", email.subject
14-
assert_equal read_fixture("error").join, email.body.to_s
9+
assert_equal [], error_mail.to
10+
assert_equal read_fixture("error").join, error_mail.body.to_s
1511
end
1612

1713
test "renders a backtrace" do
18-
exception = Exception.new("some message")
19-
exception.set_backtrace(["foo", "bar"])
14+
@exception.set_backtrace(["foo", "bar"])
15+
16+
assert_equal [], error_mail.to
17+
assert_equal read_fixture("error_with_backtrace").join, error_mail.body.to_s
18+
end
19+
20+
test "severity: error" do
21+
email = error_mail(severity: :error)
22+
assert_equal "🔥" + " Exception", email.subject
23+
end
24+
25+
test "severity: warning" do
26+
email = error_mail(severity: :warning)
27+
assert_equal "⚠️" + " Exception", email.subject
28+
end
29+
30+
test "severity: info" do
31+
email = error_mail(severity: :info)
32+
assert_equal "ℹ️" + " Exception", email.subject
33+
end
34+
35+
private
36+
37+
def error_mail(**kwargs)
2038
email = EmailErrorReporter::ErrorMailer.error(
21-
exception,
39+
@exception,
2240
handled: true,
2341
severity: :info,
24-
context: {}
42+
context: {},
43+
**kwargs
2544
)
26-
assert_equal [], email.to
27-
assert_equal "Exception", email.subject
28-
assert_equal read_fixture("error_with_backtrace").join, email.body.to_s
2945
end
3046
end

0 commit comments

Comments
 (0)