Fix a failing test in Railtie and properly define all severity levels in MockLogger for LogSubscriber.

This commit is contained in:
José Valim 2010-07-20 21:20:19 +02:00
parent e1df4b9568
commit d4151d7f0a
3 changed files with 22 additions and 23 deletions

@ -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