blacklight 9.0.0.beta1 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.docker/app/Dockerfile +2 -1
- data/.github/matrix.json +55 -0
- data/.github/workflows/build.yml +16 -0
- data/.github/workflows/lint.yml +25 -0
- data/.github/workflows/main.yml +22 -0
- data/.github/workflows/release_7_x_scheduled.yml +39 -0
- data/.github/workflows/release_8_x_scheduled.yml +39 -0
- data/.github/workflows/test.yml +53 -0
- data/.rubocop.yml +81 -3
- data/.rubocop_todo.yml +46 -71
- data/.solr_wrapper.yml +3 -1
- data/README.md +2 -2
- data/VERSION +1 -1
- data/app/assets/builds/blacklight.css +51 -38
- data/app/assets/javascripts/blacklight/blacklight.esm.js +62 -77
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
- data/app/assets/javascripts/blacklight/blacklight.js +62 -77
- data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +0 -1
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +4 -0
- data/app/assets/stylesheets/blacklight/_facets.scss +37 -29
- data/app/assets/stylesheets/blacklight/_header.scss +4 -0
- data/app/assets/stylesheets/blacklight/_modal.scss +9 -8
- data/app/assets/stylesheets/blacklight/_pagination.scss +1 -3
- data/app/assets/stylesheets/blacklight/_search_history.scss +0 -4
- data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +3 -0
- data/app/components/blacklight/advanced_search_form_component.html.erb +4 -4
- data/app/components/blacklight/advanced_search_form_component.rb +6 -5
- data/app/components/blacklight/constraint_component.html.erb +1 -5
- data/app/components/blacklight/constraint_component.rb +11 -0
- data/app/components/blacklight/constraint_layout_component.html.erb +1 -6
- data/app/components/blacklight/constraint_layout_component.rb +9 -0
- data/app/components/blacklight/constraints_component.html.erb +3 -8
- data/app/components/blacklight/constraints_component.rb +59 -14
- data/app/components/blacklight/document/action_component.rb +1 -3
- data/app/components/blacklight/document/bookmark_component.html.erb +3 -3
- data/app/components/blacklight/document/bookmark_component.rb +10 -4
- data/app/components/blacklight/document/group_component.html.erb +1 -1
- data/app/components/blacklight/document/more_like_this_component.rb +2 -2
- data/app/components/blacklight/document/page_header_component.rb +3 -3
- data/app/components/blacklight/document/thumbnail_component.html.erb +3 -7
- data/app/components/blacklight/document/thumbnail_component.rb +7 -6
- data/app/components/blacklight/document_component.html.erb +3 -3
- data/app/components/blacklight/document_component.rb +22 -26
- data/app/components/blacklight/document_title_component.rb +6 -10
- data/app/components/blacklight/facet_field_checkboxes_component.rb +4 -18
- data/app/components/blacklight/facet_field_component.rb +4 -15
- data/app/components/blacklight/facet_field_filter_component.rb +4 -19
- data/app/components/blacklight/facet_field_inclusive_constraint_component.rb +4 -23
- data/app/components/blacklight/facet_field_list_component.rb +4 -30
- data/app/components/blacklight/facet_field_no_layout_component.rb +4 -8
- data/app/components/blacklight/facet_field_pagination_component.html.erb +2 -2
- data/app/components/blacklight/facet_item_component.rb +4 -72
- data/app/components/blacklight/facet_item_pivot_component.rb +8 -4
- data/app/components/blacklight/{facet_field_checkboxes_component.html.erb → facets/checkboxes_component.html.erb} +4 -4
- data/app/components/blacklight/facets/checkboxes_component.rb +26 -0
- data/app/components/blacklight/facets/count_component.rb +23 -0
- data/app/components/blacklight/{facet_field_component.html.erb → facets/field_component.html.erb} +1 -3
- data/app/components/blacklight/facets/field_component.rb +23 -0
- data/app/components/blacklight/facets/filters_component.html.erb +4 -0
- data/app/components/blacklight/facets/filters_component.rb +39 -0
- data/app/components/blacklight/{facet_field_inclusive_constraint_component.html.erb → facets/inclusive_constraint_component.html.erb} +1 -1
- data/app/components/blacklight/facets/inclusive_constraint_component.rb +31 -0
- data/app/components/blacklight/{facet_field_filter_component.html.erb → facets/index_navigation_component.html.erb} +1 -1
- data/app/components/blacklight/facets/index_navigation_component.rb +32 -0
- data/app/components/blacklight/facets/item_component.rb +76 -0
- data/app/components/blacklight/facets/list_component.html.erb +11 -0
- data/app/components/blacklight/facets/list_component.rb +46 -0
- data/app/components/blacklight/facets/no_layout_component.rb +16 -0
- data/app/components/blacklight/facets/pivot_list_component.rb +14 -0
- data/app/components/blacklight/facets/selected_value_component.rb +29 -0
- data/app/components/blacklight/facets/suggest_component.html.erb +17 -0
- data/app/components/blacklight/facets/suggest_component.rb +21 -0
- data/app/components/blacklight/header_component.rb +2 -2
- data/app/components/blacklight/icons/remove_component.rb +2 -2
- data/app/components/blacklight/metadata_field_component.html.erb +2 -2
- data/app/components/blacklight/metadata_field_component.rb +2 -1
- data/app/components/blacklight/metadata_field_layout_component.rb +9 -4
- data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +2 -2
- data/app/components/blacklight/response/facet_group_component.html.erb +3 -3
- data/app/components/blacklight/response/facet_group_component.rb +9 -1
- data/app/components/blacklight/search_bar_component.html.erb +2 -2
- data/app/components/blacklight/system/dropdown_component.html.erb +1 -1
- data/app/components/blacklight/system/dropdown_component.rb +1 -1
- data/app/components/blacklight/system/flash_message_component.html.erb +1 -1
- data/app/components/blacklight/system/flash_message_component.rb +0 -9
- data/app/components/blacklight/system/modal_component.html.erb +1 -2
- data/app/components/blacklight/top_navbar_component.html.erb +2 -2
- data/app/controllers/concerns/blacklight/bookmarks.rb +13 -3
- data/app/controllers/concerns/blacklight/catalog.rb +27 -30
- data/app/controllers/concerns/blacklight/controller.rb +1 -1
- data/app/controllers/concerns/blacklight/search_context.rb +1 -1
- data/app/controllers/concerns/blacklight/searchable.rb +1 -1
- data/app/helpers/blacklight/catalog_helper_behavior.rb +5 -3
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -2
- data/app/helpers/blacklight/document_helper_behavior.rb +3 -1
- data/app/helpers/blacklight/facets_helper_behavior.rb +7 -12
- data/app/helpers/blacklight/icon_helper_behavior.rb +2 -2
- data/app/javascript/blacklight-frontend/bookmark_toggle.js +7 -2
- data/app/javascript/blacklight-frontend/button_focus.js +1 -1
- data/app/javascript/blacklight-frontend/checkbox_submit.js +9 -2
- data/app/javascript/blacklight-frontend/debounce.js +1 -1
- data/app/javascript/blacklight-frontend/facet_suggest.js +27 -3
- data/app/javascript/blacklight-frontend/index.js +0 -2
- data/app/javascript/blacklight-frontend/modal.js +15 -8
- data/app/javascript/blacklight-frontend/search_context.js +3 -2
- data/app/presenters/blacklight/constraint_presenter.rb +22 -0
- data/app/presenters/blacklight/document_presenter.rb +6 -5
- data/app/presenters/blacklight/facet_field_presenter.rb +18 -2
- data/app/presenters/blacklight/facet_grouped_item_presenter.rb +6 -0
- data/app/presenters/blacklight/facet_item_pivot_presenter.rb +1 -5
- data/app/presenters/blacklight/facet_item_presenter.rb +5 -18
- data/app/presenters/blacklight/field_presenter.rb +4 -2
- data/app/presenters/blacklight/json_presenter.rb +8 -4
- data/app/presenters/blacklight/rendering/abstract_step.rb +7 -1
- data/app/presenters/blacklight/rendering/helper_method.rb +4 -4
- data/app/presenters/blacklight/rendering/join.rb +11 -7
- data/app/presenters/blacklight/rendering/terminator.rb +1 -1
- data/app/services/blacklight/field_retriever.rb +1 -1
- data/app/services/blacklight/search_service.rb +10 -8
- data/app/values/blacklight/types.rb +2 -2
- data/app/views/blacklight/nav/_bookmark.html.erb +1 -1
- data/app/views/catalog/_document.atom.builder +1 -1
- data/app/views/catalog/_document.html.erb +1 -1
- data/app/views/catalog/_email_form.html.erb +4 -4
- data/app/views/catalog/_home_text.html.erb +2 -2
- data/app/views/catalog/_show_main_content.html.erb +9 -5
- data/app/views/catalog/_sms_form.html.erb +4 -4
- data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
- data/app/views/catalog/advanced_search.html.erb +1 -1
- data/app/views/catalog/facet.html.erb +8 -10
- data/app/views/catalog/index.html.erb +0 -1
- data/app/views/catalog/index.json.jbuilder +5 -3
- data/app/views/catalog/show.html.erb +2 -2
- data/app/views/layouts/blacklight/base.html.erb +1 -1
- data/blacklight.gemspec +1 -1
- data/config/locales/blacklight.ar.yml +14 -14
- data/config/locales/blacklight.ca.yml +2 -2
- data/config/locales/blacklight.de.yml +13 -13
- data/config/locales/blacklight.en.yml +3 -3
- data/config/locales/blacklight.es.yml +13 -13
- data/config/locales/blacklight.fr.yml +14 -14
- data/config/locales/blacklight.hu.yml +15 -15
- data/config/locales/blacklight.it.yml +16 -16
- data/config/locales/blacklight.nl.yml +13 -13
- data/config/locales/blacklight.pt-BR.yml +15 -15
- data/config/locales/blacklight.sq.yml +14 -14
- data/config/locales/blacklight.zh.yml +12 -12
- data/lib/blacklight/abstract_repository.rb +2 -2
- data/lib/blacklight/component.rb +7 -1
- data/lib/blacklight/configuration/context.rb +3 -3
- data/lib/blacklight/configuration/facet_field.rb +11 -6
- data/lib/blacklight/configuration/field.rb +4 -4
- data/lib/blacklight/configuration/fields.rb +0 -1
- data/lib/blacklight/configuration/search_field.rb +1 -1
- data/lib/blacklight/configuration/view_config.rb +32 -18
- data/lib/blacklight/configuration.rb +64 -10
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +1 -1
- data/lib/blacklight/open_struct_with_hash_access.rb +2 -2
- data/lib/blacklight/routes/searchable.rb +1 -1
- data/lib/blacklight/search_builder.rb +2 -1
- data/lib/blacklight/search_state/filter_field.rb +4 -4
- data/lib/blacklight/search_state/pivot_filter_field.rb +5 -5
- data/lib/blacklight/search_state.rb +2 -0
- data/lib/blacklight/solr/abstract_filter_query_builder.rb +77 -0
- data/lib/blacklight/solr/default_filter_query_builder.rb +20 -0
- data/lib/blacklight/solr/field_reflection_search_builder.rb +11 -0
- data/lib/blacklight/solr/repository.rb +17 -15
- data/lib/blacklight/solr/response/facets.rb +2 -2
- data/lib/blacklight/solr/response/params.rb +0 -4
- data/lib/blacklight/solr/response.rb +5 -1
- data/lib/blacklight/solr/search_builder_behavior.rb +48 -97
- data/lib/blacklight/solr/single_doc_search_builder.rb +25 -0
- data/lib/blacklight.rb +6 -4
- data/lib/generators/blacklight/assets/importmap_generator.rb +3 -5
- data/lib/generators/blacklight/assets_generator.rb +1 -1
- data/lib/generators/blacklight/search_builder_generator.rb +1 -1
- data/lib/generators/blacklight/templates/.solr_wrapper.yml +3 -1
- data/lib/generators/blacklight/templates/catalog_controller.rb +34 -8
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +0 -71
- data/package.json +3 -3
- data/spec/components/blacklight/advanced_search_form_component_spec.rb +18 -22
- data/spec/components/blacklight/constraint_layout_component_spec.rb +8 -8
- data/spec/components/blacklight/constraints_component_spec.rb +11 -11
- data/spec/components/blacklight/document/action_component_spec.rb +23 -15
- data/spec/components/blacklight/document/group_component_spec.rb +10 -15
- data/spec/components/blacklight/document/page_header_component_spec.rb +35 -28
- data/spec/components/blacklight/document/sidebar_component_spec.rb +5 -11
- data/spec/components/blacklight/document_component_spec.rb +105 -79
- data/spec/components/blacklight/facet_component_spec.rb +12 -8
- data/spec/components/blacklight/facet_item_pivot_component_spec.rb +12 -12
- data/spec/components/blacklight/{facet_field_checkboxes_component_spec.rb → facets/checkboxes_component_spec.rb} +13 -13
- data/spec/components/blacklight/facets/filters_component_spec.rb +36 -0
- data/spec/components/blacklight/facets/index_navigation_component_spec.rb +41 -0
- data/spec/components/blacklight/{facet_item_component_spec.rb → facets/item_component_spec.rb} +10 -10
- data/spec/components/blacklight/{facet_field_list_component_spec.rb → facets/list_component_spec.rb} +34 -23
- data/spec/components/blacklight/facets/pivot_list_component_spec.rb +53 -0
- data/spec/components/blacklight/facets/suggest_component_spec.rb +82 -0
- data/spec/components/blacklight/header_component_spec.rb +2 -4
- data/spec/components/blacklight/hidden_search_state_component_spec.rb +7 -7
- data/spec/components/blacklight/metadata_field_component_spec.rb +17 -15
- data/spec/components/blacklight/response/facet_group_component_spec.rb +37 -0
- data/spec/components/blacklight/response/pagination_component_spec.rb +1 -1
- data/spec/components/blacklight/response/spellcheck_component_spec.rb +1 -1
- data/spec/components/blacklight/search_bar_component_spec.rb +28 -5
- data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +2 -2
- data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +3 -5
- data/spec/components/blacklight/skip_link_component_spec.rb +8 -11
- data/spec/components/blacklight/start_over_button_component_spec.rb +4 -4
- data/spec/components/blacklight/system/dropdown_component_spec.rb +26 -0
- data/spec/components/blacklight/system/flash_message_component_spec.rb +7 -11
- data/spec/controllers/blacklight/catalog_spec.rb +1 -1
- data/spec/controllers/catalog_controller_spec.rb +12 -20
- data/spec/features/advanced_search_spec.rb +42 -21
- data/spec/features/facets_spec.rb +84 -12
- data/spec/features/modal_spec.rb +1 -1
- data/spec/features/search_filters_spec.rb +6 -4
- data/spec/features/search_spec.rb +3 -3
- data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +10 -0
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +2 -2
- data/spec/lib/blacklight/parameters_spec.rb +12 -1
- data/spec/lib/blacklight/search_state/filter_field_spec.rb +18 -0
- data/spec/models/blacklight/configuration_spec.rb +178 -28
- data/spec/models/blacklight/solr/default_filter_query_builder_spec.rb +72 -0
- data/spec/models/blacklight/solr/document_spec.rb +0 -4
- data/spec/models/blacklight/solr/repository_spec.rb +37 -29
- data/spec/models/blacklight/solr/response/facets_spec.rb +86 -40
- data/spec/models/blacklight/solr/response/group_response_spec.rb +8 -5
- data/spec/models/blacklight/solr/response/group_spec.rb +9 -5
- data/spec/models/blacklight/solr/response_spec.rb +96 -64
- data/spec/models/blacklight/solr/search_builder_behavior_spec.rb +38 -57
- data/spec/models/solr_document_spec.rb +5 -1
- data/spec/presenters/blacklight/constraint_presenter_spec.rb +32 -0
- data/spec/presenters/blacklight/document_presenter_spec.rb +3 -3
- data/spec/presenters/blacklight/facet_item_presenter_spec.rb +0 -7
- data/spec/presenters/blacklight/field_presenter_spec.rb +103 -22
- data/spec/presenters/blacklight/json_presenter_spec.rb +17 -0
- data/spec/presenters/blacklight/rendering/pipeline_spec.rb +130 -14
- data/spec/services/blacklight/search_service_spec.rb +6 -27
- data/spec/spec_helper.rb +0 -1
- data/spec/support/presenter_test_helpers.rb +1 -1
- data/spec/support/view_component_test_helpers.rb +0 -18
- data/spec/views/catalog/facet.html.erb_spec.rb +10 -3
- data/spec/views/catalog/index.atom.builder_spec.rb +8 -3
- data/spec/views/catalog/index.html.erb_spec.rb +3 -1
- metadata +69 -38
- data/.github/workflows/ruby.yml +0 -98
- data/app/assets/stylesheets/blacklight/_icons.scss +0 -4
- data/app/components/blacklight/facet_field_list_component.html.erb +0 -19
- data/app/components/blacklight/search/facet_suggest_input.html.erb +0 -9
- data/app/components/blacklight/search/facet_suggest_input.rb +0 -16
- data/app/javascript/blacklight-frontend/modalForm.js +0 -60
- data/app/views/catalog/_facet_index_navigation.html.erb +0 -1
- data/app/views/catalog/_facet_layout.html.erb +0 -8
- data/app/views/catalog/_facet_pagination.html.erb +0 -1
- data/app/views/catalog/_facet_pivot.html.erb +0 -3
- data/app/views/shared/_sitelinks_search_box.html.erb +0 -12
- data/spec/components/blacklight/document_metadata_component_spec.rb +0 -0
- data/spec/components/blacklight/search/facet_suggest_input_spec.rb +0 -33
- data/spec/features/sitelinks_search_box_spec.rb +0 -13
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +0 -43
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +0 -41
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
RSpec.describe Blacklight::Solr::Response::Facets, :api do
|
|
4
|
+
let(:search_builder) do
|
|
5
|
+
Blacklight::SearchBuilder.new(view_context)
|
|
6
|
+
end
|
|
7
|
+
let(:view_context) do
|
|
8
|
+
double("View context", blacklight_config: CatalogController.blacklight_config.deep_copy)
|
|
9
|
+
end
|
|
10
|
+
|
|
4
11
|
describe Blacklight::Solr::Response::Facets::FacetField do
|
|
5
12
|
describe "A field with default options" do
|
|
6
13
|
subject(:field) { described_class.new "my_field", [] }
|
|
@@ -60,22 +67,29 @@ RSpec.describe Blacklight::Solr::Response::Facets, :api do
|
|
|
60
67
|
end
|
|
61
68
|
|
|
62
69
|
describe "#aggregations" do
|
|
63
|
-
subject { Blacklight::Solr::Response.new({ responseHeader:
|
|
70
|
+
subject { Blacklight::Solr::Response.new({ responseHeader: {}, facet_counts: { facet_fields: [facet_field] } }, search_builder) }
|
|
64
71
|
|
|
65
72
|
let(:facet_field) { ['my_field', []] }
|
|
66
|
-
let(:response_header) { { params: request_params } }
|
|
67
|
-
let(:request_params) { {} }
|
|
68
73
|
|
|
69
74
|
describe "#limit" do
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
75
|
+
context 'with a field-specific limit value' do
|
|
76
|
+
before do
|
|
77
|
+
search_builder.merge('f.my_field.facet.limit' => '10', 'facet.limit' => '15')
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "extracts a field-specific limit value" do
|
|
81
|
+
expect(subject.aggregations['my_field'].limit).to eq 10
|
|
82
|
+
end
|
|
74
83
|
end
|
|
75
84
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
85
|
+
context 'with a global limit value' do
|
|
86
|
+
before do
|
|
87
|
+
search_builder.merge('facet.limit' => '15')
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "extracts a global limit value" do
|
|
91
|
+
expect(subject.aggregations['my_field'].limit).to eq 15
|
|
92
|
+
end
|
|
79
93
|
end
|
|
80
94
|
|
|
81
95
|
it "is the solr default limit if no value is found" do
|
|
@@ -84,15 +98,24 @@ RSpec.describe Blacklight::Solr::Response::Facets, :api do
|
|
|
84
98
|
end
|
|
85
99
|
|
|
86
100
|
describe "#offset" do
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
101
|
+
context 'with a field-specific offset value' do
|
|
102
|
+
before do
|
|
103
|
+
search_builder.merge('f.my_field.facet.offset' => '10', 'facet.offset' => '15')
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it "extracts a field-specific offset value" do
|
|
107
|
+
expect(subject.aggregations['my_field'].offset).to eq 10
|
|
108
|
+
end
|
|
91
109
|
end
|
|
92
110
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
111
|
+
context 'with a global offset value' do
|
|
112
|
+
before do
|
|
113
|
+
search_builder.merge('facet.offset' => '15')
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "extracts a global offset value" do
|
|
117
|
+
expect(subject.aggregations['my_field'].offset).to eq 15
|
|
118
|
+
end
|
|
96
119
|
end
|
|
97
120
|
|
|
98
121
|
it "is nil if no value is found" do
|
|
@@ -101,15 +124,24 @@ RSpec.describe Blacklight::Solr::Response::Facets, :api do
|
|
|
101
124
|
end
|
|
102
125
|
|
|
103
126
|
describe "#sort" do
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
127
|
+
context 'with a field-specific sort value' do
|
|
128
|
+
before do
|
|
129
|
+
search_builder.merge('f.my_field.facet.sort' => 'alpha', 'facet.sort' => 'index')
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it "extracts a field-specific sort value" do
|
|
133
|
+
expect(subject.aggregations['my_field'].sort).to eq 'alpha'
|
|
134
|
+
end
|
|
108
135
|
end
|
|
109
136
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
137
|
+
context 'with a global sort value' do
|
|
138
|
+
before do
|
|
139
|
+
search_builder.merge('facet.sort' => 'alpha')
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "extracts a global sort value" do
|
|
143
|
+
expect(subject.aggregations['my_field'].sort).to eq 'alpha'
|
|
144
|
+
end
|
|
113
145
|
end
|
|
114
146
|
|
|
115
147
|
it "defaults to count if no value is found and the default limit is used" do
|
|
@@ -117,23 +149,37 @@ RSpec.describe Blacklight::Solr::Response::Facets, :api do
|
|
|
117
149
|
expect(subject.aggregations['my_field'].count?).to be true
|
|
118
150
|
end
|
|
119
151
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
152
|
+
context 'when no value is found and the limit is unlimited' do
|
|
153
|
+
before do
|
|
154
|
+
search_builder.merge('facet.limit' => -1)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it "defaults to index" do
|
|
158
|
+
expect(subject.aggregations['my_field'].sort).to eq 'index'
|
|
159
|
+
expect(subject.aggregations['my_field'].index?).to be true
|
|
160
|
+
end
|
|
124
161
|
end
|
|
125
162
|
end
|
|
126
163
|
|
|
127
164
|
describe '#prefix' do
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
165
|
+
context 'with a field-specific prefix value' do
|
|
166
|
+
before do
|
|
167
|
+
search_builder.merge('f.my_field.facet.prefix' => 'a', 'facet.prefix' => 'b')
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
it "extracts a field-specific prefix value" do
|
|
171
|
+
expect(subject.aggregations['my_field'].prefix).to eq 'a'
|
|
172
|
+
end
|
|
132
173
|
end
|
|
133
174
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
175
|
+
context 'with a global prefix value' do
|
|
176
|
+
before do
|
|
177
|
+
search_builder.merge('facet.prefix' => 'abc')
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
it "extracts a global prefix value" do
|
|
181
|
+
expect(subject.aggregations['my_field'].prefix).to eq 'abc'
|
|
182
|
+
end
|
|
137
183
|
end
|
|
138
184
|
|
|
139
185
|
it "defaults to no prefix value" do
|
|
@@ -149,7 +195,7 @@ RSpec.describe Blacklight::Solr::Response::Facets, :api do
|
|
|
149
195
|
end
|
|
150
196
|
|
|
151
197
|
describe "#merge_facet" do
|
|
152
|
-
let(:response) { Blacklight::Solr::Response.new(facet_counts,
|
|
198
|
+
let(:response) { Blacklight::Solr::Response.new(facet_counts, search_builder, {}) }
|
|
153
199
|
let(:facet) { { name: "foo", value: "bar", hits: 1 } }
|
|
154
200
|
|
|
155
201
|
before do
|
|
@@ -186,7 +232,7 @@ RSpec.describe Blacklight::Solr::Response::Facets, :api do
|
|
|
186
232
|
end
|
|
187
233
|
|
|
188
234
|
context "facet.missing" do
|
|
189
|
-
subject { Blacklight::Solr::Response.new(response,
|
|
235
|
+
subject { Blacklight::Solr::Response.new(response, search_builder) }
|
|
190
236
|
|
|
191
237
|
let(:response) do
|
|
192
238
|
{
|
|
@@ -213,7 +259,7 @@ RSpec.describe Blacklight::Solr::Response::Facets, :api do
|
|
|
213
259
|
end
|
|
214
260
|
|
|
215
261
|
describe "query facets" do
|
|
216
|
-
subject { Blacklight::Solr::Response.new(response,
|
|
262
|
+
subject { Blacklight::Solr::Response.new(response, search_builder, blacklight_config: blacklight_config) }
|
|
217
263
|
|
|
218
264
|
let(:facet_config) do
|
|
219
265
|
double(
|
|
@@ -288,7 +334,7 @@ RSpec.describe Blacklight::Solr::Response::Facets, :api do
|
|
|
288
334
|
end
|
|
289
335
|
|
|
290
336
|
describe "pivot facets" do
|
|
291
|
-
subject { Blacklight::Solr::Response.new(response,
|
|
337
|
+
subject { Blacklight::Solr::Response.new(response, search_builder, blacklight_config: blacklight_config) }
|
|
292
338
|
|
|
293
339
|
let(:facet_config) do
|
|
294
340
|
double(key: 'my_pivot_facet_field', query: nil, pivot: %w[field_a field_b])
|
|
@@ -330,7 +376,7 @@ RSpec.describe Blacklight::Solr::Response::Facets, :api do
|
|
|
330
376
|
end
|
|
331
377
|
|
|
332
378
|
describe 'json facets' do
|
|
333
|
-
subject { Blacklight::Solr::Response.new(response,
|
|
379
|
+
subject { Blacklight::Solr::Response.new(response, search_builder, blacklight_config: blacklight_config) }
|
|
334
380
|
|
|
335
381
|
let(:response) do
|
|
336
382
|
{
|
|
@@ -4,7 +4,14 @@ require "spec_helper"
|
|
|
4
4
|
|
|
5
5
|
RSpec.describe Blacklight::Solr::Response::GroupResponse, :api do
|
|
6
6
|
let(:response) do
|
|
7
|
-
|
|
7
|
+
Blacklight::Solr::Response.new(sample_response, search_builder)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
let(:search_builder) do
|
|
11
|
+
Blacklight::SearchBuilder.new(view_context).tap { |b| b.rows = 3 }
|
|
12
|
+
end
|
|
13
|
+
let(:view_context) do
|
|
14
|
+
double("View context", blacklight_config: CatalogController.blacklight_config.deep_copy)
|
|
8
15
|
end
|
|
9
16
|
|
|
10
17
|
let(:group) do
|
|
@@ -82,10 +89,6 @@ RSpec.describe Blacklight::Solr::Response::GroupResponse, :api do
|
|
|
82
89
|
end
|
|
83
90
|
end
|
|
84
91
|
|
|
85
|
-
def create_response(response, params = {})
|
|
86
|
-
Blacklight::Solr::Response.new(response, params)
|
|
87
|
-
end
|
|
88
|
-
|
|
89
92
|
def sample_response
|
|
90
93
|
{ "responseHeader" => { "params" => { "rows" => 3, "group.limit" => 5 } },
|
|
91
94
|
"grouped" =>
|
|
@@ -7,8 +7,16 @@ RSpec.describe Blacklight::Solr::Response::Group, :api do
|
|
|
7
7
|
group.groups.first
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
+
let(:search_builder) do
|
|
11
|
+
Blacklight::SearchBuilder.new(view_context)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
let(:view_context) do
|
|
15
|
+
double("View context", blacklight_config: CatalogController.blacklight_config.deep_copy)
|
|
16
|
+
end
|
|
17
|
+
|
|
10
18
|
let(:response) do
|
|
11
|
-
|
|
19
|
+
Blacklight::Solr::Response.new(sample_response, search_builder)
|
|
12
20
|
end
|
|
13
21
|
|
|
14
22
|
let(:group) do
|
|
@@ -51,10 +59,6 @@ RSpec.describe Blacklight::Solr::Response::Group, :api do
|
|
|
51
59
|
end
|
|
52
60
|
end
|
|
53
61
|
|
|
54
|
-
def create_response(response, params = {})
|
|
55
|
-
Blacklight::Solr::Response.new(response, params)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
62
|
def sample_response
|
|
59
63
|
{ "responseHeader" => { "params" => { "rows" => 3, "group.limit" => 5 } },
|
|
60
64
|
"grouped" =>
|
|
@@ -3,16 +3,17 @@
|
|
|
3
3
|
require 'rspec-benchmark'
|
|
4
4
|
|
|
5
5
|
RSpec.describe Blacklight::Solr::Response, :api do
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
let(:config) { Blacklight::Configuration.new }
|
|
9
|
-
|
|
10
|
-
let(:r) do
|
|
6
|
+
subject(:r) do
|
|
11
7
|
described_class.new(raw_response,
|
|
12
|
-
|
|
8
|
+
request_params,
|
|
13
9
|
blacklight_config: config)
|
|
14
10
|
end
|
|
15
11
|
|
|
12
|
+
let(:raw_response) { eval(mock_query_response) }
|
|
13
|
+
|
|
14
|
+
let(:config) { Blacklight::Configuration.new }
|
|
15
|
+
let(:request_params) { raw_response['params'] }
|
|
16
|
+
|
|
16
17
|
it 'creates a valid response' do
|
|
17
18
|
expect(r).to respond_to(:header)
|
|
18
19
|
end
|
|
@@ -134,113 +135,144 @@ RSpec.describe Blacklight::Solr::Response, :api do
|
|
|
134
135
|
expect(facet.name).to eq 'cat'
|
|
135
136
|
end
|
|
136
137
|
|
|
137
|
-
|
|
138
|
-
raw_response
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
138
|
+
context 'with responseHeader params' do
|
|
139
|
+
let(:raw_response) do
|
|
140
|
+
eval(mock_query_response).tap do |resp|
|
|
141
|
+
resp['responseHeader']['params']['test'] = :test
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it 'provides the responseHeader params' do
|
|
146
|
+
expect(r.params['test']).to eq :test
|
|
147
|
+
end
|
|
142
148
|
end
|
|
143
149
|
|
|
144
|
-
|
|
145
|
-
raw_response
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
context 'with json params' do
|
|
151
|
+
let(:raw_response) do
|
|
152
|
+
eval(mock_response_with_spellcheck).tap do |resp|
|
|
153
|
+
resp['responseHeader']['params']['test'] = 'from query'
|
|
154
|
+
resp['responseHeader']['params'].delete('rows')
|
|
155
|
+
resp['responseHeader']['params']['json'] = { limit: 5, params: { test: 'from json params' } }.to_json
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
it 'extracts json params' do
|
|
160
|
+
expect(r.params['test']).to eq 'from query'
|
|
161
|
+
expect(r.rows).to eq 5
|
|
162
|
+
end
|
|
152
163
|
end
|
|
153
164
|
|
|
154
165
|
it 'provides the solr-returned params and "rows" should be 11' do
|
|
155
|
-
raw_response = eval(mock_query_response)
|
|
156
|
-
r = described_class.new(raw_response, {})
|
|
157
166
|
expect(r.params[:rows].to_s).to eq '11'
|
|
158
167
|
expect(r.params[:sort]).to eq 'title_si asc, pub_date_si desc'
|
|
159
168
|
end
|
|
160
169
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
170
|
+
context 'when responseHeader["params"] does not exist' do
|
|
171
|
+
before do
|
|
172
|
+
raw_response.delete 'responseHeader'
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
let(:request_params) { { rows: 999, sort: 'score desc, pub_date_si desc, title_si asc' } }
|
|
176
|
+
|
|
177
|
+
it 'provides the ruby request params' do
|
|
178
|
+
expect(r.params[:rows].to_s).to eq '999'
|
|
179
|
+
expect(r.params[:sort]).to eq 'score desc, pub_date_si desc, title_si asc'
|
|
180
|
+
end
|
|
167
181
|
end
|
|
168
182
|
|
|
169
|
-
|
|
170
|
-
raw_response
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
183
|
+
context 'with regular spellcheck results' do
|
|
184
|
+
let(:raw_response) { eval(mock_response_with_spellcheck) }
|
|
185
|
+
let(:request_params) { {} }
|
|
186
|
+
|
|
187
|
+
it 'provides spelling suggestions' do
|
|
188
|
+
expect(r.spelling.words).to include("dell")
|
|
189
|
+
expect(r.spelling.words).to include("ultrasharp")
|
|
190
|
+
end
|
|
174
191
|
end
|
|
175
192
|
|
|
176
|
-
|
|
177
|
-
raw_response
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
193
|
+
context 'with extended spellcheck results' do
|
|
194
|
+
let(:raw_response) { eval(mock_response_with_spellcheck_extended) }
|
|
195
|
+
let(:request_params) { {} }
|
|
196
|
+
|
|
197
|
+
it 'provides spelling suggestions' do
|
|
198
|
+
expect(r.spelling.words).to include("dell")
|
|
199
|
+
expect(r.spelling.words).to include("ultrasharp")
|
|
200
|
+
end
|
|
181
201
|
end
|
|
182
202
|
|
|
183
|
-
|
|
184
|
-
raw_response
|
|
185
|
-
|
|
186
|
-
|
|
203
|
+
context 'when extended results and suggestion frequency is the same as original query frequency' do
|
|
204
|
+
let(:raw_response) { eval(mock_response_with_spellcheck_same_frequency) }
|
|
205
|
+
let(:request_params) { {} }
|
|
206
|
+
|
|
207
|
+
it 'provides no spelling suggestions' do
|
|
208
|
+
expect(r.spelling.words).to eq []
|
|
209
|
+
end
|
|
187
210
|
end
|
|
188
211
|
|
|
189
|
-
context "pre solr 5 spellcheck collation syntax" do
|
|
212
|
+
context "with pre solr 5 spellcheck collation syntax" do
|
|
213
|
+
let(:raw_response) { eval(mock_response_with_spellcheck_collation) }
|
|
214
|
+
let(:request_params) { {} }
|
|
215
|
+
|
|
190
216
|
it 'provides spelling suggestions for a regular spellcheck results with a collation' do
|
|
191
|
-
raw_response = eval(mock_response_with_spellcheck_collation)
|
|
192
|
-
r = described_class.new(raw_response, {})
|
|
193
217
|
expect(r.spelling.words).to include("dell")
|
|
194
218
|
expect(r.spelling.words).to include("ultrasharp")
|
|
195
219
|
end
|
|
196
220
|
|
|
197
221
|
it 'provides spelling suggestion collation' do
|
|
198
|
-
raw_response = eval(mock_response_with_spellcheck_collation)
|
|
199
|
-
r = described_class.new(raw_response, {})
|
|
200
222
|
expect(r.spelling.collation).to eq 'dell ultrasharp'
|
|
201
223
|
end
|
|
202
224
|
end
|
|
203
225
|
|
|
204
|
-
context "solr 5 spellcheck collation syntax" do
|
|
226
|
+
context "with solr 5 spellcheck collation syntax" do
|
|
227
|
+
let(:raw_response) { eval(mock_response_with_spellcheck_collation_solr5) }
|
|
228
|
+
let(:request_params) { {} }
|
|
229
|
+
|
|
205
230
|
it 'provides spelling suggestions for a regular spellcheck results with a collation' do
|
|
206
|
-
raw_response = eval(mock_response_with_spellcheck_collation_solr5)
|
|
207
|
-
r = described_class.new(raw_response, {})
|
|
208
231
|
expect(r.spelling.words).to include("dell")
|
|
209
232
|
expect(r.spelling.words).to include("ultrasharp")
|
|
210
233
|
end
|
|
211
234
|
|
|
212
235
|
it 'provides spelling suggestion collation' do
|
|
213
|
-
raw_response = eval(mock_response_with_spellcheck_collation_solr5)
|
|
214
|
-
r = described_class.new(raw_response, {})
|
|
215
236
|
expect(r.spelling.collation).to eq 'dell ultrasharp'
|
|
216
237
|
end
|
|
217
238
|
end
|
|
218
239
|
|
|
219
|
-
context 'solr 6.5 spellcheck collation syntax' do
|
|
240
|
+
context 'with solr 6.5 spellcheck collation syntax' do
|
|
241
|
+
let(:raw_response) { eval(mock_response_with_spellcheck_collation_solr65) }
|
|
242
|
+
let(:request_params) { {} }
|
|
243
|
+
|
|
220
244
|
it 'provides spelling suggestions for a regular spellcheck results with a collation' do
|
|
221
|
-
raw_response = eval(mock_response_with_spellcheck_collation_solr65)
|
|
222
|
-
r = described_class.new(raw_response, {})
|
|
223
245
|
expect(r.spelling.words).to include("dell")
|
|
224
246
|
expect(r.spelling.words).to include("ultrasharp")
|
|
225
247
|
end
|
|
226
248
|
end
|
|
227
249
|
|
|
228
|
-
|
|
229
|
-
raw_response
|
|
230
|
-
|
|
231
|
-
|
|
250
|
+
context 'with moreLikeThis suggstions' do
|
|
251
|
+
let(:raw_response) { eval(mock_response_with_more_like_this) }
|
|
252
|
+
let(:request_params) { {} }
|
|
253
|
+
|
|
254
|
+
it "provides MoreLikeThis suggestions" do
|
|
255
|
+
expect(r.more_like(double(id: '79930185'))).to have(2).items
|
|
256
|
+
end
|
|
232
257
|
end
|
|
233
258
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
259
|
+
context 'with no results' do
|
|
260
|
+
let(:raw_response) { {} }
|
|
261
|
+
let(:request_params) { {} }
|
|
262
|
+
|
|
263
|
+
it "is empty when the response has no results" do
|
|
264
|
+
expect(r).to be_empty
|
|
265
|
+
end
|
|
238
266
|
end
|
|
239
267
|
|
|
240
268
|
describe "#export_formats" do
|
|
241
|
-
|
|
242
|
-
|
|
269
|
+
before do
|
|
270
|
+
# rubocop:disable RSpec/SubjectStub
|
|
243
271
|
allow(r).to receive_messages(documents: [double(export_formats: { a: 1, b: 2 }), double(export_formats: { b: 1, c: 2 })])
|
|
272
|
+
# rubocop:enable RSpec/SubjectStub
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
it "collects the unique export formats for the current response" do
|
|
244
276
|
expect(r.export_formats).to include :a, :b
|
|
245
277
|
end
|
|
246
278
|
end
|
|
@@ -523,68 +523,55 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, :api do
|
|
|
523
523
|
end
|
|
524
524
|
end
|
|
525
525
|
|
|
526
|
-
describe "#
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
end
|
|
531
|
-
|
|
532
|
-
it "uses the raw handler for strings" do
|
|
533
|
-
expect(subject.send(:facet_value_to_fq_string, "facet_name", "my value")).to eq "{!term f=facet_name}my value"
|
|
534
|
-
end
|
|
535
|
-
|
|
536
|
-
it "passes booleans through" do
|
|
537
|
-
expect(subject.send(:facet_value_to_fq_string, "facet_name", true)).to eq '{!term f=facet_name}true'
|
|
538
|
-
end
|
|
539
|
-
|
|
540
|
-
it "passes boolean-like strings through" do
|
|
541
|
-
expect(subject.send(:facet_value_to_fq_string, "facet_name", "true")).to eq '{!term f=facet_name}true'
|
|
542
|
-
end
|
|
526
|
+
describe "#add_facets_for_advanced_search_form" do
|
|
527
|
+
let(:solr_parameters) { Blacklight::Solr::Request.new }
|
|
528
|
+
let(:mock_controller) { instance_double(CatalogController, action_name: 'advanced_search') }
|
|
529
|
+
let(:mock_search_state) { instance_double(Blacklight::SearchState, controller: mock_controller) }
|
|
543
530
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
end
|
|
547
|
-
|
|
548
|
-
it "passes integer-like strings through" do
|
|
549
|
-
expect(subject.send(:facet_value_to_fq_string, "facet_name", "1")).to eq '{!term f=facet_name}1'
|
|
550
|
-
expect(subject.send(:facet_value_to_fq_string, "facet_name", -1)).to eq '{!term f=facet_name}-1'
|
|
551
|
-
end
|
|
552
|
-
|
|
553
|
-
it "passes floats through" do
|
|
554
|
-
expect(subject.send(:facet_value_to_fq_string, "facet_name", 1.11)).to eq '{!term f=facet_name}1.11'
|
|
531
|
+
before do
|
|
532
|
+
allow(search_builder).to receive(:search_state).and_return(mock_search_state)
|
|
555
533
|
end
|
|
556
534
|
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
535
|
+
context "when action is advanced_search and form_solr_parameters are configured" do
|
|
536
|
+
before do
|
|
537
|
+
blacklight_config.advanced_search.enabled = true
|
|
538
|
+
blacklight_config.advanced_search.form_solr_parameters = {
|
|
539
|
+
'facet.sort' => 'count',
|
|
540
|
+
'facet.field' => %w[format subject_ssim],
|
|
541
|
+
'f.format.facet.limit' => -1,
|
|
542
|
+
'f.subject_ssim.facet.limit' => -1
|
|
543
|
+
}
|
|
544
|
+
end
|
|
560
545
|
|
|
561
|
-
|
|
562
|
-
|
|
546
|
+
it "merges advanced search form parameters into solr parameters" do
|
|
547
|
+
solr_parameters['existing.param'] = 'keep_me'
|
|
548
|
+
subject.add_facets_for_advanced_search_form(solr_parameters)
|
|
563
549
|
|
|
564
|
-
|
|
565
|
-
expect(
|
|
566
|
-
expect(
|
|
550
|
+
expect(solr_parameters['facet.sort']).to eq 'count'
|
|
551
|
+
expect(solr_parameters['facet.field']).to eq %w[format subject_ssim]
|
|
552
|
+
expect(solr_parameters['f.format.facet.limit']).to eq(-1)
|
|
553
|
+
expect(solr_parameters['f.subject_ssim.facet.limit']).to eq(-1)
|
|
554
|
+
expect(solr_parameters['existing.param']).to eq 'keep_me'
|
|
567
555
|
end
|
|
556
|
+
end
|
|
568
557
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
558
|
+
context "when action is not advanced_search" do
|
|
559
|
+
before do
|
|
560
|
+
allow(mock_controller).to receive(:action_name).and_return('index')
|
|
561
|
+
blacklight_config.advanced_search.enabled = true
|
|
562
|
+
blacklight_config.advanced_search.form_solr_parameters = {
|
|
563
|
+
'facet.sort' => 'count',
|
|
564
|
+
'facet.field' => ['format']
|
|
565
|
+
}
|
|
573
566
|
end
|
|
574
|
-
end
|
|
575
567
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
expect(subject.send(:facet_value_to_fq_string, "facet_name", 1..nil)).to eq "facet_name:[1 TO *]"
|
|
579
|
-
expect(subject.send(:facet_value_to_fq_string, "facet_name", nil..5)).to eq "facet_name:[* TO 5]"
|
|
580
|
-
expect(subject.send(:facet_value_to_fq_string, "facet_name", nil..nil)).to eq "facet_name:[* TO *]"
|
|
581
|
-
end
|
|
568
|
+
it "does not merge advanced search form parameters" do
|
|
569
|
+
solr_parameters['f.format.facet.limit'] = 21
|
|
582
570
|
|
|
583
|
-
|
|
584
|
-
allow(blacklight_config.facet_fields).to receive(:[]).with('facet_name').and_return(double(query: nil, tag: 'asdf', date: nil, field: 'facet_name'))
|
|
571
|
+
subject.add_facets_for_advanced_search_form(solr_parameters)
|
|
585
572
|
|
|
586
|
-
|
|
587
|
-
|
|
573
|
+
expect(solr_parameters['f.format.facet.limit']).to eq 21
|
|
574
|
+
end
|
|
588
575
|
end
|
|
589
576
|
end
|
|
590
577
|
|
|
@@ -902,12 +889,6 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, :api do
|
|
|
902
889
|
end
|
|
903
890
|
|
|
904
891
|
context 'with advanced search clause parameters' do
|
|
905
|
-
before do
|
|
906
|
-
blacklight_config.search_fields.each_value do |v|
|
|
907
|
-
v.clause_params = { edismax: v.solr_parameters.dup }
|
|
908
|
-
end
|
|
909
|
-
end
|
|
910
|
-
|
|
911
892
|
let(:user_params) { { op: 'must', clause: { '0': { field: 'title', query: 'the book' }, '1': { field: 'author', query: 'the person' } } } }
|
|
912
893
|
|
|
913
894
|
it "has proper solr parameters" do
|
|
@@ -37,7 +37,11 @@ RSpec.describe SolrDocument, :api do
|
|
|
37
37
|
title_tesim: ['Good Omens'])
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
if RUBY_VERSION > '3.4'
|
|
41
|
+
it { is_expected.to end_with "_source: {\"id\" => \"123\", \"title_tesim\" => [\"Good Omens\"]}>" }
|
|
42
|
+
else
|
|
43
|
+
it { is_expected.to end_with "_source: {\"id\"=>\"123\", \"title_tesim\"=>[\"Good Omens\"]}>" }
|
|
44
|
+
end
|
|
41
45
|
end
|
|
42
46
|
|
|
43
47
|
describe '.attribute' do
|