From bfb2771a59791dcd606617e3089353f40a71b99a Mon Sep 17 00:00:00 2001 From: Eloy Duran Date: Sun, 1 Feb 2009 13:19:03 +0100 Subject: [PATCH] Moved removing transaction queries from $queries_executed to IGNORED_SQL in the test helper.rb. Added test for not counting `SHOW FIELDS FROM'. --- activerecord/lib/active_record/test_case.rb | 1 - activerecord/test/cases/helper.rb | 2 +- activerecord/test/cases/test_case_test.rb | 34 ++++++++++++++++++++------ 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/activerecord/lib/active_record/test_case.rb b/activerecord/lib/active_record/test_case.rb index 211dd78..149b932 100644 --- a/activerecord/lib/active_record/test_case.rb +++ b/activerecord/lib/active_record/test_case.rb @@ -27,7 +27,6 @@ module ActiveRecord $queries_executed = [] yield ensure - %w{ BEGIN COMMIT }.each { |x| $queries_executed.delete(x) } assert_equal num, $queries_executed.size, "#{$queries_executed.size} instead of #{num} queries were executed.#{$queries_executed.size == 0 ? '' : "\nQueries:\n#{$queries_executed.join("\n")}"}" end diff --git a/activerecord/test/cases/helper.rb b/activerecord/test/cases/helper.rb index 24ce35e..aef9d4a 100644 --- a/activerecord/test/cases/helper.rb +++ b/activerecord/test/cases/helper.rb @@ -34,7 +34,7 @@ rescue LoadError end ActiveRecord::Base.connection.class.class_eval do - IGNORED_SQL = [/^PRAGMA/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/, /^SELECT @@ROWCOUNT/, /^SAVEPOINT/, /^ROLLBACK TO SAVEPOINT/, /^RELEASE SAVEPOINT/, /SHOW FIELDS/] + IGNORED_SQL = [/^PRAGMA/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/, /^SELECT @@ROWCOUNT/, /^SAVEPOINT/, /^ROLLBACK TO SAVEPOINT/, /^RELEASE SAVEPOINT/, /^SHOW FIELDS/, /^BEGIN/, /^COMMIT/] def execute_with_query_record(sql, name = nil, &block) $queries_executed ||= [] diff --git a/activerecord/test/cases/test_case_test.rb b/activerecord/test/cases/test_case_test.rb index dae4433..f4a689f 100644 --- a/activerecord/test/cases/test_case_test.rb +++ b/activerecord/test/cases/test_case_test.rb @@ -8,31 +8,49 @@ end class TestCaseTest < ActiveRecord::TestCase def setup @test_case = AssertionTest.new(:test_nothing) + + # Make sure we don't perform make any queries + ActiveRecord::Base.connection.stubs(:execute_without_query_record) end test "assert_queries should succeed when the expected numer of queries is executed" do @test_case.expects(:assert_equal).with(2, 2, "2 instead of 2 queries were executed.\nQueries:\nSELECT 1\nSELECT 2") @test_case.assert_queries(2) do - $queries_executed = ["SELECT 1", "SELECT 2"] + execute "SELECT 1" + execute "SELECT 2" end end test "assert_queries should fail when the executed number of queries is not equal to the expected number" do @test_case.expects(:assert_equal).with(1, 2, "2 instead of 1 queries were executed.\nQueries:\nSELECT 1\nSELECT 2") @test_case.assert_queries(1) do - $queries_executed = ["SELECT 1", "SELECT 2"] + execute "SELECT 1" + execute "SELECT 2" end end test "assert_queries should not count transaction queries" do @test_case.expects(:assert_equal).with(3, 2, "2 instead of 3 queries were executed.\nQueries:\nSELECT 1\nUPDATE `people` SET 'name' = 'David'") @test_case.assert_queries(3) do - $queries_executed = [ - "SELECT 1", - "BEGIN", - "UPDATE `people` SET 'name' = 'David'", - "COMMIT" - ] + execute "SELECT 1" + execute "BEGIN" + execute "UPDATE `people` SET 'name' = 'David'" + execute "COMMIT" end end + + test "assert_queries should not count show fields queries" do + @test_case.expects(:assert_equal).with(3, 2, "2 instead of 3 queries were executed.\nQueries:\nSELECT 1\nUPDATE `people` SET 'name' = 'David'") + @test_case.assert_queries(3) do + execute "SELECT 1" + execute "SHOW FIELDS FROM `people`" + execute "UPDATE `people` SET 'name' = 'David'" + end + end + + private + + def execute(query) + ActiveRecord::Base.connection.execute(query) + end end \ No newline at end of file -- 1.5.5.3