2008-05-18 06:22:34 +02:00
require " active_support/test_case "
2009-02-04 21:26:08 +01:00
module ActiveRecord
2008-05-18 06:22:34 +02:00
class TestCase < ActiveSupport :: TestCase #:nodoc:
def assert_date_from_db ( expected , actual , message = nil )
2008-11-24 22:53:39 +01:00
# SybaseAdapter doesn't have a separate column type just for dates,
2008-05-18 06:22:34 +02:00
# so the time is in the string and incorrectly formatted
2008-11-24 22:53:39 +01:00
if current_adapter? ( :SybaseAdapter )
2008-05-18 06:22:34 +02:00
assert_equal expected . to_s , actual . to_date . to_s , message
else
assert_equal expected . to_s , actual . to_s , message
end
end
2008-09-07 07:54:05 +02:00
def assert_sql ( * patterns_to_match )
$queries_executed = [ ]
yield
ensure
failed_patterns = [ ]
patterns_to_match . each do | pattern |
failed_patterns << pattern unless $queries_executed . any? { | sql | pattern === sql }
end
assert failed_patterns . empty? , " Query pattern(s) #{ failed_patterns . map ( & :inspect ) . join ( ', ' ) } not found. "
end
2008-05-18 06:22:34 +02:00
def assert_queries ( num = 1 )
2008-09-07 07:54:05 +02:00
$queries_executed = [ ]
2008-05-18 06:22:34 +02:00
yield
ensure
2009-02-04 21:26:08 +01:00
%w{ BEGIN COMMIT } . each { | x | $queries_executed . delete ( x ) }
2008-10-27 07:47:01 +01:00
assert_equal num , $queries_executed . size , " #{ $queries_executed . size } instead of #{ num } queries were executed. #{ $queries_executed . size == 0 ? '' : " \n Queries: \n #{ $queries_executed . join ( " \n " ) } " } "
2008-05-18 06:22:34 +02:00
end
def assert_no_queries ( & block )
assert_queries ( 0 , & block )
end
2008-10-27 07:47:01 +01:00
def self . use_concurrent_connections
setup :connection_allow_concurrency_setup
teardown :connection_allow_concurrency_teardown
end
def connection_allow_concurrency_setup
@connection = ActiveRecord :: Base . remove_connection
ActiveRecord :: Base . establish_connection ( @connection . merge ( { :allow_concurrency = > true } ) )
end
def connection_allow_concurrency_teardown
ActiveRecord :: Base . clear_all_connections!
ActiveRecord :: Base . establish_connection ( @connection )
end
2009-03-16 15:55:30 +01:00
def with_kcode ( kcode )
if RUBY_VERSION < '1.9'
orig_kcode , $KCODE = $KCODE , kcode
begin
yield
ensure
$KCODE = orig_kcode
end
else
yield
end
end
2008-05-18 06:22:34 +02:00
end
end