mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Add test cases for #sanitize_sql_array
with named_bind_variables
And add code examples to `sanitize_sql_for_conditions`, `sanitize_sql_for_assignment`, and `sanitize_sql_array`.
This commit is contained in:
parent
92bc8cdb07
commit
49ff2ba2fe
2 changed files with 19 additions and 0 deletions
|
@ -18,6 +18,9 @@ module ActiveRecord
|
|||
# sanitize_sql_for_conditions(["name=? and group_id=?", "foo'bar", 4])
|
||||
# # => "name='foo''bar' and group_id=4"
|
||||
#
|
||||
# sanitize_sql_for_conditions(["name=:name and group_id=:group_id", name: "foo'bar", group_id: 4])
|
||||
# # => "name='foo''bar' and group_id='4'"
|
||||
#
|
||||
# sanitize_sql_for_conditions(["name='%s' and group_id='%s'", "foo'bar", 4])
|
||||
# # => "name='foo''bar' and group_id='4'"
|
||||
#
|
||||
|
@ -40,6 +43,9 @@ module ActiveRecord
|
|||
# sanitize_sql_for_assignment(["name=? and group_id=?", nil, 4])
|
||||
# # => "name=NULL and group_id=4"
|
||||
#
|
||||
# sanitize_sql_for_assignment(["name=:name and group_id=:group_id", name: nil, group_id: 4])
|
||||
# # => "name=NULL and group_id=4"
|
||||
#
|
||||
# Post.send(:sanitize_sql_for_assignment, { name: nil, group_id: 4 })
|
||||
# # => "`posts`.`name` = NULL, `posts`.`group_id` = 4"
|
||||
#
|
||||
|
@ -140,6 +146,9 @@ module ActiveRecord
|
|||
# sanitize_sql_array(["name=? and group_id=?", "foo'bar", 4])
|
||||
# # => "name='foo''bar' and group_id=4"
|
||||
#
|
||||
# sanitize_sql_array(["name=:name and group_id=:group_id", name: "foo'bar", group_id: 4])
|
||||
# # => "name='foo''bar' and group_id=4"
|
||||
#
|
||||
# sanitize_sql_array(["name='%s' and group_id='%s'", "foo'bar", 4])
|
||||
# # => "name='foo''bar' and group_id='4'"
|
||||
def sanitize_sql_array(ary)
|
||||
|
|
|
@ -25,6 +25,16 @@ class SanitizeTest < ActiveRecord::TestCase
|
|||
assert_equal "name=#{quoted_bambi_and_thumper}", Binary.send(:sanitize_sql_array, ["name=?", "Bambi\nand\nThumper".mb_chars])
|
||||
end
|
||||
|
||||
def test_sanitize_sql_array_handles_named_bind_variables
|
||||
quoted_bambi = ActiveRecord::Base.connection.quote("Bambi")
|
||||
assert_equal "name=#{quoted_bambi}", Binary.send(:sanitize_sql_array, ["name=:name", name: "Bambi"])
|
||||
assert_equal "name=#{quoted_bambi} AND id=1", Binary.send(:sanitize_sql_array, ["name=:name AND id=:id", name: "Bambi", id: 1])
|
||||
|
||||
quoted_bambi_and_thumper = ActiveRecord::Base.connection.quote("Bambi\nand\nThumper")
|
||||
assert_equal "name=#{quoted_bambi_and_thumper}", Binary.send(:sanitize_sql_array, ["name=:name", name: "Bambi\nand\nThumper"])
|
||||
assert_equal "name=#{quoted_bambi_and_thumper} AND name2=#{quoted_bambi_and_thumper}", Binary.send(:sanitize_sql_array, ["name=:name AND name2=:name", name: "Bambi\nand\nThumper"])
|
||||
end
|
||||
|
||||
def test_sanitize_sql_array_handles_relations
|
||||
david = Author.create!(name: 'David')
|
||||
david_posts = david.posts.select(:id)
|
||||
|
|
Loading…
Reference in a new issue