1 require "active_support/test_case"
4 class TestCase
< ActiveSupport
::TestCase #:nodoc:
5 def assert_date_from_db(expected
, actual
, message
= nil)
6 # SybaseAdapter doesn't have a separate column type just for dates,
7 # so the time is in the string and incorrectly formatted
8 if current_adapter
?(:SybaseAdapter)
9 assert_equal expected
.to_s
, actual
.to_date
.to_s
, message
11 assert_equal expected
.to_s
, actual
.to_s
, message
15 def assert_sql(*patterns_to_match
)
16 $queries_executed = []
20 patterns_to_match
.each
do |pattern
|
21 failed_patterns
<< pattern
unless $queries_executed.any
?{ |sql
| pattern
=== sql
}
23 assert failed_patterns
.empty
?, "Query pattern(s) #{failed_patterns.map(&:inspect).join(', ')} not found."
26 def assert_queries(num
= 1)
27 $queries_executed = []
30 %w
{ BEGIN COMMIT
}.each
{ |x
| $queries_executed.delete(x
) }
31 assert_equal num
, $queries_executed.size
, "#{$queries_executed.size} instead of #{num} queries were executed.#{$queries_executed.size == 0 ? '' : "\nQueries
:\n#{$queries_executed.join("\n")}"}"
34 def assert_no_queries(&block
)
35 assert_queries(0, &block
)
38 def self.use_concurrent_connections
39 setup
:connection_allow_concurrency_setup
40 teardown
:connection_allow_concurrency_teardown
43 def connection_allow_concurrency_setup
44 @connection = ActiveRecord
::Base.remove_connection
45 ActiveRecord
::Base.establish_connection(@connection.merge({:allow_concurrency => true}))
48 def connection_allow_concurrency_teardown
49 ActiveRecord
::Base.clear_all_connections
!
50 ActiveRecord
::Base.establish_connection(@connection)
54 if RUBY_VERSION < '1.9'
55 orig_kcode
, $KCODE = $KCODE, kcode