added assert_queries for the AR test suite

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3784 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Rick Olson
2006-03-05 23:41:17 +00:00
parent 2f9442c1d4
commit 5a7722de98
2 changed files with 13 additions and 2 deletions

View File

@@ -30,7 +30,7 @@ class Test::Unit::TestCase #:nodoc:
end
end
def assert_no_queries
def assert_queries(num = 1)
ActiveRecord::Base.connection.class.class_eval do
self.query_count = 0
alias_method :execute, :execute_with_query_counting
@@ -40,7 +40,11 @@ class Test::Unit::TestCase #:nodoc:
ActiveRecord::Base.connection.class.class_eval do
alias_method :execute, :execute_without_query_counting
end
assert_equal 0, ActiveRecord::Base.connection.query_count, "1 or more queries were executed"
assert_equal num, ActiveRecord::Base.connection.query_count, "#{ActiveRecord::Base.connection.query_count} instead of #{num} queries were executed."
end
def assert_no_queries(&block)
assert_queries(0, &block)
end
end

View File

@@ -1147,6 +1147,13 @@ class BasicsTest < Test::Unit::TestCase
assert_equal LoosePerson, LooseDescendant.base_class
end
def test_assert_queries
query = lambda { ActiveRecord::Base.connection.execute 'select count(*) from developers' }
assert_queries(2) { 2.times { query.call } }
assert_queries 1, &query
assert_no_queries { assert true }
end
# FIXME: this test ought to run, but it needs to run sandboxed so that it
# doesn't b0rk the current test environment by undefing everything.
#