mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
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:
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user