Froze rails gems
[depot.git] / vendor / rails / activerecord / lib / active_record / test_case.rb
1 require "active_support/test_case"
2
3 module ActiveRecord
4 class TestCase < ActiveSupport::TestCase #:nodoc:
5 self.fixture_path = FIXTURES_ROOT
6 self.use_instantiated_fixtures = false
7 self.use_transactional_fixtures = true
8
9 def create_fixtures(*table_names, &block)
10 Fixtures.create_fixtures(FIXTURES_ROOT, table_names, {}, &block)
11 end
12
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
18 else
19 assert_equal expected.to_s, actual.to_s, message
20 end
21 end
22
23 def assert_sql(*patterns_to_match)
24 $queries_executed = []
25 yield
26 ensure
27 failed_patterns = []
28 patterns_to_match.each do |pattern|
29 failed_patterns << pattern unless $queries_executed.any?{ |sql| pattern === sql }
30 end
31 assert failed_patterns.empty?, "Query pattern(s) #{failed_patterns.map(&:inspect).join(', ')} not found."
32 end
33
34 def assert_queries(num = 1)
35 $queries_executed = []
36 yield
37 ensure
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")}"}"
39 end
40
41 def assert_no_queries(&block)
42 assert_queries(0, &block)
43 end
44
45 def self.use_concurrent_connections
46 setup :connection_allow_concurrency_setup
47 teardown :connection_allow_concurrency_teardown
48 end
49
50 def connection_allow_concurrency_setup
51 @connection = ActiveRecord::Base.remove_connection
52 ActiveRecord::Base.establish_connection(@connection.merge({:allow_concurrency => true}))
53 end
54
55 def connection_allow_concurrency_teardown
56 ActiveRecord::Base.clear_all_connections!
57 ActiveRecord::Base.establish_connection(@connection)
58 end
59 end
60 end