aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/active_record
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2012-01-04 16:07:27 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2012-01-04 16:07:27 -0800
commit071c8bf62ac7ffdb587268a6789fd825d0dae2a6 (patch)
tree18c5963a408a9396fcab2150acd42cc0413a9210 /activerecord/test/active_record
parentda4fef815592f674252b72cb86cb436a4aae8e28 (diff)
downloadrails-071c8bf62ac7ffdb587268a6789fd825d0dae2a6.tar.gz
rails-071c8bf62ac7ffdb587268a6789fd825d0dae2a6.tar.bz2
rails-071c8bf62ac7ffdb587268a6789fd825d0dae2a6.zip
active record base class test case should not be public
Diffstat (limited to 'activerecord/test/active_record')
-rw-r--r--activerecord/test/active_record/test_case.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/activerecord/test/active_record/test_case.rb b/activerecord/test/active_record/test_case.rb
new file mode 100644
index 0000000000..5398a14fc6
--- /dev/null
+++ b/activerecord/test/active_record/test_case.rb
@@ -0,0 +1,53 @@
+module ActiveRecord
+ # = Active Record Test Case
+ #
+ # Defines some test assertions to test against SQL queries.
+ class TestCase < ActiveSupport::TestCase #:nodoc:
+ setup :cleanup_identity_map
+
+ def setup
+ cleanup_identity_map
+ end
+
+ def cleanup_identity_map
+ ActiveRecord::IdentityMap.clear
+ end
+
+ def assert_date_from_db(expected, actual, message = nil)
+ # SybaseAdapter doesn't have a separate column type just for dates,
+ # so the time is in the string and incorrectly formatted
+ if current_adapter?(:SybaseAdapter)
+ assert_equal expected.to_s, actual.to_date.to_s, message
+ else
+ assert_equal expected.to_s, actual.to_s, message
+ end
+ end
+
+ def assert_sql(*patterns_to_match)
+ ActiveRecord::SQLCounter.log = []
+ yield
+ ActiveRecord::SQLCounter.log
+ ensure
+ failed_patterns = []
+ patterns_to_match.each do |pattern|
+ failed_patterns << pattern unless ActiveRecord::SQLCounter.log.any?{ |sql| pattern === sql }
+ end
+ assert failed_patterns.empty?, "Query pattern(s) #{failed_patterns.map{ |p| p.inspect }.join(', ')} not found.#{ActiveRecord::SQLCounter.log.size == 0 ? '' : "\nQueries:\n#{ActiveRecord::SQLCounter.log.join("\n")}"}"
+ end
+
+ def assert_queries(num = 1)
+ ActiveRecord::SQLCounter.log = []
+ yield
+ ensure
+ assert_equal num, ActiveRecord::SQLCounter.log.size, "#{ActiveRecord::SQLCounter.log.size} instead of #{num} queries were executed.#{ActiveRecord::SQLCounter.log.size == 0 ? '' : "\nQueries:\n#{ActiveRecord::SQLCounter.log.join("\n")}"}"
+ end
+
+ def assert_no_queries(&block)
+ prev_ignored_sql = ActiveRecord::SQLCounter.ignored_sql
+ ActiveRecord::SQLCounter.ignored_sql = []
+ assert_queries(0, &block)
+ ensure
+ ActiveRecord::SQLCounter.ignored_sql = prev_ignored_sql
+ end
+ end
+end