aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-10-12 15:57:26 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-10-26 13:44:07 -0700
commitcc468d3ec81d6f1298fca91c0549584b36dafcc6 (patch)
tree02c6e8949a86127d7ad9c08aef18be9c7a966063 /activerecord/test
parent6ceffb8178b6d419d4453e1e24d4138215c35217 (diff)
downloadrails-cc468d3ec81d6f1298fca91c0549584b36dafcc6.tar.gz
rails-cc468d3ec81d6f1298fca91c0549584b36dafcc6.tar.bz2
rails-cc468d3ec81d6f1298fca91c0549584b36dafcc6.zip
exec returns an AR::Result
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb35
-rw-r--r--activerecord/test/cases/helper.rb8
2 files changed, 43 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb b/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb
index f4a856e42a..52630c5ad4 100644
--- a/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb
+++ b/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb
@@ -60,6 +60,41 @@ module ActiveRecord
bind_param = conn.substitute_for('foo', [])
assert_equal Arel.sql('?'), bind_param
end
+
+ def test_exec_no_binds
+ conn = Base.sqlite3_connection :database => ':memory:',
+ :adapter => 'sqlite3',
+ :timeout => 100
+
+ conn.exec('create table ex(id int, data string)')
+ result = conn.exec('SELECT id, data FROM ex')
+ assert_equal 0, result.rows.length
+ assert_equal 2, result.columns.length
+ assert_equal %w{ id data }, result.columns
+
+ conn.exec('INSERT INTO ex (id, data) VALUES (1, "foo")')
+ result = conn.exec('SELECT id, data FROM ex')
+ assert_equal 1, result.rows.length
+ assert_equal 2, result.columns.length
+
+ assert_equal [[1, 'foo']], result.rows
+ end
+
+ def test_exec_with_binds
+ conn = Base.sqlite3_connection :database => ':memory:',
+ :adapter => 'sqlite3',
+ :timeout => 100
+
+ conn.exec('create table ex(id int, data string)')
+ conn.exec('INSERT INTO ex (id, data) VALUES (1, "foo")')
+ result = conn.exec(
+ 'SELECT id, data FROM ex WHERE id = ?', nil, [[nil, 1]])
+
+ assert_equal 1, result.rows.length
+ assert_equal 2, result.columns.length
+
+ assert_equal [[1, 'foo']], result.rows
+ end
end
end
end
diff --git a/activerecord/test/cases/helper.rb b/activerecord/test/cases/helper.rb
index 2d3047c875..f6ef155d66 100644
--- a/activerecord/test/cases/helper.rb
+++ b/activerecord/test/cases/helper.rb
@@ -55,6 +55,14 @@ ActiveRecord::Base.connection.class.class_eval do
end
alias_method_chain :execute, :query_record
+
+ def exec_with_query_record(sql, name = nil, binds = [], &block)
+ $queries_executed ||= []
+ $queries_executed << sql unless IGNORED_SQL.any? { |r| sql =~ r }
+ exec_without_query_record(sql, name, binds, &block)
+ end
+
+ alias_method_chain :exec, :query_record
end
ActiveRecord::Base.connection.class.class_eval {