Skip to content

Commit

Permalink
Parse out empty params from queries
Browse files Browse the repository at this point in the history
If an empty param,`()`, is included in a query, the boolen query parser included from advanced search gem throws an error.

It is documented as an issue upstream at projectblacklight/blacklight_advanced_search#101, but at the moment no fix upstream is proposed.

This PR works around the issue by removing empty parens from the query string. It does not impact parens containing content.
  • Loading branch information
Chad Nelson committed Sep 16, 2020
1 parent 85465cf commit d9092ea
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
2 changes: 1 addition & 1 deletion app/models/search_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def process_is(value, op)
end

def substitute_special_chars(value, _)
value.gsub(/[:?]/, " ") rescue value
value.gsub(/([:?]|\(\))/, " ") rescue value
end

def no_journals(solr_parameters)
Expand Down
8 changes: 8 additions & 0 deletions spec/models/search_builder_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,14 @@
# @see BL-1301 for ref. Basically Solr treats ? as a special character.
expect(subject.substitute_special_chars("foo bar?", nil)).to eq("foo bar ")
end

it "substitutes empty parens '()' " do
expect(subject.substitute_special_chars("foo () bar", nil)).to eq("foo bar")
end

it "does not substitutes parens containing values " do
expect(subject.substitute_special_chars("foo (bar) baz", nil)).to eq("foo (bar) baz")
end
end

describe "#blacklight_params" do
Expand Down

0 comments on commit d9092ea

Please sign in to comment.