diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index 0788186d2..565943576 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -718,7 +718,7 @@ class PostQueryBuilder class_methods do def scan_query(query) terms = [] - query = query.gsub(/[[:space:]]/, " ") + query = query.to_s.gsub(/[[:space:]]/, " ") scanner = StringScanner.new(query) until scanner.eos? diff --git a/test/unit/post_query_builder_test.rb b/test/unit/post_query_builder_test.rb index 50a7592f3..c293cfe47 100644 --- a/test/unit/post_query_builder_test.rb +++ b/test/unit/post_query_builder_test.rb @@ -63,12 +63,21 @@ class PostQueryBuilderTest < ActiveSupport::TestCase assert_tag_match([post1], "?") end + should "return posts for the empty search" do + post1 = create(:post) + + assert_tag_match([post1], "") + assert_tag_match([post1], " ") + assert_tag_match([post1], nil) + end + should "return posts for 1 tag" do post1 = create(:post, tag_string: "aaa") post2 = create(:post, tag_string: "aaa bbb") post3 = create(:post, tag_string: "bbb ccc") assert_tag_match([post2, post1], "aaa") + assert_tag_match([post2, post1], " aaa ") end should "return posts for a 2 tag join" do @@ -77,6 +86,7 @@ class PostQueryBuilderTest < ActiveSupport::TestCase post3 = create(:post, tag_string: "bbb ccc") assert_tag_match([post2], "aaa bbb") + assert_tag_match([post2], " aaa bbb ") end should "return posts for a 2 tag union" do