Fix a failing test in Railtie and properly define all severity levels in MockLogger for LogSubscriber.
This commit is contained in:
parent
e1df4b9568
commit
d4151d7f0a
@ -22,7 +22,6 @@ def set_logger(logger)
|
||||
end
|
||||
|
||||
def test_basic_query_logging
|
||||
@logger.debugging = true
|
||||
Developer.all
|
||||
wait
|
||||
assert_equal 1, @logger.logged(:debug).size
|
||||
@ -31,7 +30,6 @@ def test_basic_query_logging
|
||||
end
|
||||
|
||||
def test_cached_queries
|
||||
@logger.debugging = true
|
||||
ActiveRecord::Base.cache do
|
||||
Developer.all
|
||||
Developer.all
|
||||
@ -43,14 +41,14 @@ def test_cached_queries
|
||||
end
|
||||
|
||||
def test_basic_query_doesnt_log_when_level_is_not_debug
|
||||
@logger.debugging = false
|
||||
@logger.level = 1
|
||||
Developer.all
|
||||
wait
|
||||
assert_equal 0, @logger.logged(:debug).size
|
||||
end
|
||||
|
||||
def test_cached_queries_doesnt_log_when_level_is_not_debug
|
||||
@logger.debugging = false
|
||||
@logger.level = 1
|
||||
ActiveRecord::Base.cache do
|
||||
Developer.all
|
||||
Developer.all
|
||||
|
@ -1,4 +1,5 @@
|
||||
require 'active_support/log_subscriber'
|
||||
require 'active_support/buffered_logger'
|
||||
|
||||
module ActiveSupport
|
||||
class LogSubscriber
|
||||
@ -47,13 +48,14 @@ def teardown
|
||||
end
|
||||
|
||||
class MockLogger
|
||||
attr_reader :flush_count
|
||||
attr_accessor :debugging
|
||||
alias :debug? :debugging
|
||||
include ActiveSupport::BufferedLogger::Severity
|
||||
|
||||
def initialize
|
||||
attr_reader :flush_count
|
||||
attr_accessor :level
|
||||
|
||||
def initialize(level = DEBUG)
|
||||
@flush_count = 0
|
||||
@debugging = false
|
||||
@level = level
|
||||
@logged = Hash.new { |h,k| h[k] = [] }
|
||||
end
|
||||
|
||||
@ -68,6 +70,14 @@ def logged(level)
|
||||
def flush
|
||||
@flush_count += 1
|
||||
end
|
||||
|
||||
ActiveSupport::BufferedLogger::Severity.constants.each do |severity|
|
||||
class_eval <<-EOT, __FILE__, __LINE__ + 1
|
||||
def #{severity.downcase}?
|
||||
#{severity} >= @level
|
||||
end
|
||||
EOT
|
||||
end
|
||||
end
|
||||
|
||||
# Wait notifications to be published.
|
||||
|
@ -1,17 +1,6 @@
|
||||
require "isolation/abstract_unit"
|
||||
|
||||
module ApplicationTests
|
||||
class MockLogger
|
||||
def method_missing(*args)
|
||||
@logged ||= []
|
||||
@logged << args.last
|
||||
end
|
||||
|
||||
def logged
|
||||
@logged.compact.map { |l| l.to_s.strip }
|
||||
end
|
||||
end
|
||||
|
||||
class NotificationsTest < Test::Unit::TestCase
|
||||
include ActiveSupport::Testing::Isolation
|
||||
|
||||
@ -34,15 +23,17 @@ def wait
|
||||
RUBY
|
||||
|
||||
require "#{app_path}/config/environment"
|
||||
require "active_support/log_subscriber/test_helper"
|
||||
|
||||
ActiveRecord::Base.logger = logger = MockLogger.new
|
||||
logger = ActiveSupport::LogSubscriber::TestHelper::MockLogger.new
|
||||
ActiveRecord::Base.logger = logger
|
||||
|
||||
# Mimic Active Record notifications
|
||||
instrument "sql.active_record", :name => "SQL", :sql => "SHOW tables"
|
||||
wait
|
||||
|
||||
assert_equal 1, logger.logged.size
|
||||
assert_match /SHOW tables/, logger.logged.last
|
||||
assert_equal 1, logger.logged(:debug).size
|
||||
assert_match /SHOW tables/, logger.logged(:debug).last
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user