Allow escaping wildcards (\*) in wildcard searches.
This commit is contained in:
17
test/unit/string_test.rb
Normal file
17
test/unit/string_test.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
require 'test_helper'
|
||||
|
||||
class StringTest < ActiveSupport::TestCase
|
||||
context "String#to_escaped_for_sql_like" do
|
||||
should "work" do
|
||||
assert_equal('foo\%bar', 'foo%bar'.to_escaped_for_sql_like)
|
||||
assert_equal('foo\_bar', 'foo_bar'.to_escaped_for_sql_like)
|
||||
assert_equal('foo%bar', 'foo*bar'.to_escaped_for_sql_like)
|
||||
assert_equal('foo*bar', 'foo\*bar'.to_escaped_for_sql_like)
|
||||
assert_equal('foo\\\\%bar', 'foo\\\\*bar'.to_escaped_for_sql_like)
|
||||
assert_equal('foo\\\\bar', 'foo\bar'.to_escaped_for_sql_like)
|
||||
|
||||
assert_equal('%\\\\%', '*\\\\*'.to_escaped_for_sql_like)
|
||||
assert_equal('%*%', '*\**'.to_escaped_for_sql_like)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -310,5 +310,17 @@ class UserTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when searched by name" do
|
||||
should "match wildcards" do
|
||||
user1 = FactoryGirl.create(:user, :name => "foo")
|
||||
user2 = FactoryGirl.create(:user, :name => "foo*bar")
|
||||
user3 = FactoryGirl.create(:user, :name => "bar\*baz")
|
||||
|
||||
assert_equal([user2.id, user1.id], User.search(name: "foo*").map(&:id))
|
||||
assert_equal([user2.id], User.search(name: "foo\*bar").map(&:id))
|
||||
assert_equal([user3.id], User.search(name: "bar\\\*baz").map(&:id))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user