diff --git a/app/helpers/blacklight/render_constraints_helper_behavior.rb b/app/helpers/blacklight/render_constraints_helper_behavior.rb index 453d9b7355..38efe1ef24 100644 --- a/app/helpers/blacklight/render_constraints_helper_behavior.rb +++ b/app/helpers/blacklight/render_constraints_helper_behavior.rb @@ -107,9 +107,13 @@ def render_filter_element(facet, values, search_state) safe_join(Array(values).map do |val| next if val.blank? # skip empty string - presenter = facet_item_presenter(facet_config, val, facet) - Deprecation.silence(Blacklight::RenderConstraintsHelperBehavior) do + presenter = if val.is_a? Array + inclusive_facet_item_presenter(facet_config, val, facet) + else + facet_item_presenter(facet_config, val, facet) + end + render_constraint_element(presenter.field_label, presenter.label, remove: presenter.remove_href(search_state), @@ -118,6 +122,10 @@ def render_filter_element(facet, values, search_state) end, "\n") end + def inclusive_facet_item_presenter(facet_config, facet_item, facet_field) + Blacklight::InclusiveFacetItemPresenter.new(facet_item, facet_config, self, facet_field) + end + # Render a label/value constraint on the screen. Can be called # by plugins and such to get application-defined rendering. # diff --git a/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb b/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb index 891ea65273..f3dd03f318 100644 --- a/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +++ b/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb @@ -54,6 +54,14 @@ expect(subject).to have_link "Remove constraint Item Type: journal", href: "/catalog?q=biz" end end + + context 'with multivalued facets' do + subject { helper.render_filter_element('type', [%w[journal book]], path) } + + it "handles such values gracefully" do + expect(subject).to have_link "Remove constraint Item Type: journal OR book", href: "/catalog?q=biz" + end + end end describe "#render_constraints_filters" do