1 require "active_support/test_case"
4 class TestCase
< ActiveSupport
::TestCase #:nodoc:
5 self.fixture_path
= FIXTURES_ROOT
6 self.use_instantiated_fixtures
= false
7 self.use_transactional_fixtures
= true
9 def create_fixtures(*table_names
, &block
)
10 Fixtures
.create_fixtures(FIXTURES_ROOT
, table_names
, {}, &block
)
13 def assert_date_from_db(expected
, actual
, message
= nil)
14 # SybaseAdapter doesn't have a separate column type just for dates,
15 # so the time is in the string and incorrectly formatted
16 if current_adapter
?(:SybaseAdapter)
17 assert_equal expected
.to_s
, actual
.to_date
.to_s
, message
19 assert_equal expected
.to_s
, actual
.to_s
, message
23 def assert_sql(*patterns_to_match
)
24 $queries_executed = []
28 patterns_to_match
.each
do |pattern
|
29 failed_patterns
<< pattern
unless $queries_executed.any
?{ |sql
| pattern
=== sql
}
31 assert failed_patterns
.empty
?, "Query pattern(s) #{failed_patterns.map(&:inspect).join(', ')} not found."
34 def assert_queries(num
= 1)
35 $queries_executed = []
38 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")}"}"
41 def assert_no_queries(&block
)
42 assert_queries(0, &block
)
45 def self.use_concurrent_connections
46 setup
:connection_allow_concurrency_setup
47 teardown
:connection_allow_concurrency_teardown
50 def connection_allow_concurrency_setup
51 @connection = ActiveRecord
::Base.remove_connection
52 ActiveRecord
::Base.establish_connection(@connection.merge({:allow_concurrency => true}))
55 def connection_allow_concurrency_teardown
56 ActiveRecord
::Base.clear_all_connections
!
57 ActiveRecord
::Base.establish_connection(@connection)