Skip to content

Commit edc9ec3

Browse files
committed
Update tests to logging minitest helpers
1 parent 86ae37b commit edc9ec3

15 files changed

+326
-221
lines changed

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ gem "puma"
88
gem "active_model_serializers"
99
gem "amazing_print"
1010
gem "minitest"
11+
gem "minitest-rails"
1112
gem "rake"
1213
gem "sprockets", "< 4.0"
14+
gem "semantic_logger", github: "reidmorrison/semantic_logger"
1315

1416
gem "rails", "~> 6.1.0"
1517
gem "sqlite3", "~> 1.4.0", platform: :ruby

gemfiles/rails_5.1.gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ gem "puma"
77
gem "active_model_serializers"
88
gem "amazing_print"
99
gem "minitest"
10+
gem "minitest-rails"
1011
gem "rake"
1112
gem "sprockets", "< 4.0"
13+
gem "semantic_logger", github: "reidmorrison/semantic_logger"
1214
gem "rails", "~> 5.1.5"
1315
gem "sqlite3", "~> 1.3.0", platform: :ruby
1416
gem "activerecord-jdbcsqlite3-adapter", "~> 51.0", platform: :jruby

gemfiles/rails_5.2.gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ gem "puma"
77
gem "active_model_serializers"
88
gem "amazing_print"
99
gem "minitest"
10+
gem "minitest-rails"
1011
gem "rake"
1112
gem "sprockets", "< 4.0"
13+
gem "semantic_logger", github: "reidmorrison/semantic_logger"
1214
gem "rails", "~> 5.2.0"
1315
gem "sqlite3", "~> 1.3.0", platform: :ruby
1416
gem "activerecord-jdbcsqlite3-adapter", "~> 52.0", platform: :jruby

gemfiles/rails_6.0.gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ gem "puma"
77
gem "active_model_serializers"
88
gem "amazing_print"
99
gem "minitest"
10+
gem "minitest-rails"
1011
gem "rake"
1112
gem "sprockets", "< 4.0"
13+
gem "semantic_logger", github: "reidmorrison/semantic_logger"
1214
gem "rails", "~> 6.0.0"
1315
gem "sqlite3", "~> 1.4.0", platform: :ruby
1416
gem "activerecord-jdbcsqlite3-adapter", "~> 60.0", platform: :jruby

gemfiles/rails_6.1.gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ gem "puma"
77
gem "active_model_serializers"
88
gem "amazing_print"
99
gem "minitest"
10+
gem "minitest-rails"
1011
gem "rake"
1112
gem "sprockets", "< 4.0"
13+
gem "semantic_logger", github: "reidmorrison/semantic_logger"
1214
gem "rails", "~> 6.1.0"
1315
gem "sqlite3", "~> 1.4.0", platform: :ruby
1416
gem "activerecord-jdbcsqlite3-adapter", "~> 61.0", platform: :jruby

gemfiles/rails_7.0.gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ gem "puma"
77
gem "active_model_serializers"
88
gem "amazing_print"
99
gem "minitest"
10+
gem "minitest-rails"
1011
gem "rake"
1112
gem "sprockets", "< 4.0"
13+
gem "semantic_logger", github: "reidmorrison/semantic_logger"
1214
gem "rails", "~> 7.0.0"
1315
gem "sqlite3", "~> 1.4.0", platform: :ruby
1416
gem "thread_safe", "~> 0.3.6"

test/action_mailer_test.rb

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,6 @@ def some_email(to:, from:, subject:)
88
end
99

1010
describe "ActionMailer" do
11-
before do
12-
::ActionMailer::Base.delivery_method = :test
13-
@mock_logger = MockLogger.new
14-
@appender = SemanticLogger.add_appender(logger: @mock_logger, formatter: :raw)
15-
end
16-
17-
after do
18-
SemanticLogger.remove_appender(@appender)
19-
end
20-
2111
describe "#deliver" do
2212
it "sets the ActionMailer logger" do
2313
assert_kind_of SemanticLogger::Logger, MyMailer.logger
@@ -26,6 +16,40 @@ def some_email(to:, from:, subject:)
2616
it "sends the email" do
2717
MyMailer.some_email(to: '[email protected]', from: '[email protected]', subject: 'test').deliver_now
2818
end
19+
20+
it "writes log messages" do
21+
messages = semantic_logger_events do
22+
MyMailer.some_email(to: '[email protected]', from: '[email protected]', subject: 'test').deliver_now
23+
end
24+
assert_equal 2, messages.count, messages
25+
26+
assert_semantic_logger_event(
27+
messages[0],
28+
level: :info,
29+
name: "ActionMailer::Base",
30+
message_includes: "ActionMailerTest::MyMailer#some_email: processed outbound mail",
31+
payload_includes: {
32+
event_name: "process.action_mailer",
33+
mailer: "ActionMailerTest::MyMailer",
34+
action: :some_email,
35+
}
36+
)
37+
38+
assert_semantic_logger_event(
39+
messages[1],
40+
level: :info,
41+
name: "ActionMailer::Base",
42+
message_includes: Rails::VERSION::MAJOR >= 6 ? "Delivered mail" : "Skipped delivery",
43+
payload_includes: {
44+
event_name: "deliver.action_mailer",
45+
mailer: "ActionMailerTest::MyMailer",
46+
perform_deliveries: Rails::VERSION::MAJOR >= 6 ? true : nil,
47+
subject: "test",
48+
49+
from: ["[email protected]"],
50+
}
51+
)
52+
end
2953
end
3054

3155
describe "Logging::LogSubscriber" do
@@ -36,11 +60,7 @@ def some_email(to:, from:, subject:)
3660
let(:subscriber) { RailsSemanticLogger::ActionMailer::LogSubscriber.new }
3761

3862
let(:event) do
39-
ActiveSupport::Notifications::Event.new event_name,
40-
5.seconds.ago,
41-
Time.zone.now,
42-
SecureRandom.uuid,
43-
payload
63+
ActiveSupport::Notifications::Event.new(event_name, 5.seconds.ago, Time.zone.now, SecureRandom.uuid, payload)
4464
end
4565

4666
let(:payload) do

test/active_job_test.rb

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,6 @@ def id
3838
describe "ActiveJob" do
3939
before do
4040
skip "Older rails does not support ActiveJob" unless defined?(ActiveJob)
41-
@mock_logger = MockLogger.new
42-
@appender = SemanticLogger.add_appender(logger: @mock_logger, formatter: :raw)
43-
end
44-
45-
after do
46-
SemanticLogger.remove_appender(@appender)
4741
end
4842

4943
describe ".perform_now" do
@@ -64,11 +58,7 @@ def id
6458
let(:subscriber) { RailsSemanticLogger::ActiveJob::LogSubscriber.new }
6559

6660
let(:event) do
67-
ActiveSupport::Notifications::Event.new event_name,
68-
5.seconds.ago,
69-
Time.zone.now,
70-
SecureRandom.uuid,
71-
payload
61+
ActiveSupport::Notifications::Event.new(event_name, 5.seconds.ago, Time.zone.now, SecureRandom.uuid, payload)
7262
end
7363

7464
let(:event_name) { "enqueue.active_job" }
@@ -106,14 +96,28 @@ def id
10696
}
10797
end
10898

109-
specify do
110-
subscriber.perform(event)
111-
112-
SemanticLogger.flush
113-
actual = @mock_logger.message
114-
115-
assert_equal({name: "ArgumentError", message: "error", stack_trace: nil}, actual[:exception])
116-
assert_equal("ActiveJobTest::MyJob", actual[:payload][:job_class])
99+
it "logs messages" do
100+
messages = semantic_logger_events do
101+
subscriber.perform(event)
102+
end
103+
assert_equal 1, messages.count, messages
104+
105+
assert_semantic_logger_event(
106+
messages[0],
107+
level: :error,
108+
name: "Rails",
109+
message_includes: "Error performing ActiveJobTest::MyJob",
110+
payload_includes: {
111+
job_class: "ActiveJobTest::MyJob",
112+
queue: "my_jobs",
113+
event_name: "perform.active_job"
114+
}
115+
)
116+
assert_includes messages[0].payload, :job_id
117+
118+
exception = messages[0].exception
119+
assert exception.is_a?(ArgumentError)
120+
assert_equal "error", exception.message
117121
end
118122
end
119123

0 commit comments

Comments
 (0)