From 34d4344eaf5cd9cfbde051d0bc9178135a4bf301 Mon Sep 17 00:00:00 2001 From: evazion Date: Mon, 20 Apr 2020 21:00:59 -0500 Subject: [PATCH] search: fix exception on nil searches. https://github.com/danbooru/danbooru/commit/6ca42947bd2cf63828ba68e96c41d987d5ee6b94#commitcomment-38622036 --- app/logical/post_query_builder.rb | 2 +- test/unit/post_query_builder_test.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) 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