From 442f7114b6627f0bc26de3a3360415cda13a4b57 Mon Sep 17 00:00:00 2001 From: Ken Collins Date: Fri, 19 Sep 2008 19:08:37 -0400 Subject: [PATCH] Adding a GroupedScope::TestCase and copying AR assert query style helpers from rails2 to use in lower versions. --- test/lib/test_case.rb | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 test/lib/test_case.rb diff --git a/test/lib/test_case.rb b/test/lib/test_case.rb new file mode 100644 index 0000000..d1b3755 --- /dev/null +++ b/test/lib/test_case.rb @@ -0,0 +1,49 @@ + +ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__)+'/debug.log') +ActiveRecord::Base.colorize_logging = false +ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => ':memory:' +ActiveRecord::Base.connection.class.class_eval do + IGNORED_SQL = [/^PRAGMA/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/, /^SELECT @@ROWCOUNT/] + def execute_with_query_record(sql, name = nil, &block) + $queries_executed ||= [] + $queries_executed << sql unless IGNORED_SQL.any? { |r| sql =~ r } + execute_without_query_record(sql, name, &block) + end + alias_method_chain :execute, :query_record +end + +module GroupedScope + class TestCase < Test::Unit::TestCase + + self.new_backtrace_silencer(:shoulda) { |line| line.include? 'lib/shoulda' } + self.new_backtrace_silencer(:mocha) { |line| line.include? 'lib/mocha' } + self.backtrace_silencers << :shoulda << :mocha + + def test_truth ; end + + protected + + 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 + + def assert_queries(num = 1) + $queries_executed = [] + yield + ensure + assert_equal num, $queries_executed.size, "#{$queries_executed.size} instead of #{num} queries were executed." + end + + def assert_no_queries(&block) + assert_queries(0, &block) + end + + end +end