From 5a7722de98bcf4ad932cf2ec15faa47d1d431457 Mon Sep 17 00:00:00 2001 From: Rick Olson Date: Sun, 5 Mar 2006 23:41:17 +0000 Subject: added assert_queries for the AR test suite git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3784 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/test/abstract_unit.rb | 8 ++++++-- activerecord/test/base_test.rb | 7 +++++++ 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/abstract_unit.rb b/activerecord/test/abstract_unit.rb index 70487980c5..6c089f3696 100755 --- a/activerecord/test/abstract_unit.rb +++ b/activerecord/test/abstract_unit.rb @@ -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 diff --git a/activerecord/test/base_test.rb b/activerecord/test/base_test.rb index c5834f2e5b..fe74bfa7e3 100755 --- a/activerecord/test/base_test.rb +++ b/activerecord/test/base_test.rb @@ -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. # -- cgit v1.2.3