aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/application/initializers/notifications_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/test/application/initializers/notifications_test.rb')
-rw-r--r--railties/test/application/initializers/notifications_test.rb58
1 files changed, 58 insertions, 0 deletions
diff --git a/railties/test/application/initializers/notifications_test.rb b/railties/test/application/initializers/notifications_test.rb
new file mode 100644
index 0000000000..c65c955734
--- /dev/null
+++ b/railties/test/application/initializers/notifications_test.rb
@@ -0,0 +1,58 @@
+# frozen_string_literal: true
+
+require "isolation/abstract_unit"
+
+module ApplicationTests
+ class NotificationsTest < ActiveSupport::TestCase
+ include ActiveSupport::Testing::Isolation
+
+ def setup
+ build_app
+ end
+
+ def teardown
+ teardown_app
+ end
+
+ def instrument(*args, &block)
+ ActiveSupport::Notifications.instrument(*args, &block)
+ end
+
+ def wait
+ ActiveSupport::Notifications.notifier.wait
+ end
+
+ test "rails log_subscribers are added" do
+ add_to_config <<-RUBY
+ config.colorize_logging = false
+ RUBY
+
+ require "#{app_path}/config/environment"
+ require "active_support/log_subscriber/test_helper"
+
+ logger = ActiveSupport::LogSubscriber::TestHelper::MockLogger.new
+ ActiveRecord::Base.logger = logger
+ ActiveRecord::Base.verbose_query_logs = false
+
+ # Mimic Active Record notifications
+ instrument "sql.active_record", name: "SQL", sql: "SHOW tables"
+ wait
+
+ assert_equal 1, logger.logged(:debug).size
+ assert_match(/SHOW tables/, logger.logged(:debug).last)
+ end
+
+ test "rails load_config_initializer event is instrumented" do
+ app_file "config/initializers/foo.rb", ""
+
+ events = []
+ callback = ->(*_) { events << _ }
+ ActiveSupport::Notifications.subscribed(callback, "load_config_initializer.railties") do
+ app
+ end
+
+ assert_equal %w[load_config_initializer.railties], events.map(&:first)
+ assert_includes events.first.last[:initializer], "config/initializers/foo.rb"
+ end
+ end
+end