blacklight 5.7.2 → 5.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -3
- data/Gemfile +1 -4
- data/VERSION +1 -1
- data/app/assets/stylesheets/blacklight/_catalog.css.scss +38 -1
- data/app/assets/stylesheets/blacklight/_facets.css.scss +10 -0
- data/app/assets/stylesheets/blacklight/_layout.css.scss +6 -0
- data/app/controllers/bookmarks_controller.rb +3 -163
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +18 -186
- data/app/helpers/blacklight/catalog_helper_behavior.rb +36 -2
- data/app/helpers/blacklight/component_helper_behavior.rb +77 -0
- data/app/helpers/blacklight/configuration_helper_behavior.rb +30 -21
- data/app/helpers/blacklight/render_partials_helper.rb +185 -0
- data/app/helpers/blacklight/url_helper_behavior.rb +24 -3
- data/app/helpers/component_helper.rb +3 -0
- data/app/views/_user_util_links.html.erb +2 -15
- data/app/views/blacklight/nav/_bookmark.html.erb +4 -0
- data/app/views/blacklight/nav/_saved_searches.html.erb +1 -0
- data/app/views/blacklight/nav/_search_history.html.erb +1 -0
- data/app/views/bookmarks/_tools.html.erb +6 -9
- data/app/views/bookmarks/index.html.erb +1 -1
- data/app/views/catalog/_bookmark_control.html.erb +8 -8
- data/app/views/catalog/_constraints_element.html.erb +1 -1
- data/app/views/catalog/_document_action.html.erb +4 -0
- data/app/views/catalog/_email_form.html.erb +1 -1
- data/app/views/catalog/_facet_limit.html.erb +1 -1
- data/app/views/catalog/_index_header_default.html.erb +5 -6
- data/app/views/catalog/_per_page_widget.html.erb +3 -1
- data/app/views/catalog/_results_pagination.html.erb +1 -1
- data/app/views/catalog/_search_form.html.erb +5 -8
- data/app/views/catalog/_show_more_like_this.html.erb +2 -2
- data/app/views/catalog/_show_tools.html.erb +5 -34
- data/app/views/catalog/_sms_form.html.erb +1 -1
- data/app/views/catalog/_sort_and_per_page.html.erb +2 -6
- data/app/views/catalog/_sort_widget.html.erb +1 -1
- data/app/views/catalog/_zero_results.html.erb +2 -2
- data/app/views/catalog/citation.js.erb +1 -1
- data/app/views/catalog/email_sent.html.erb +2 -9
- data/app/views/catalog/email_success.html.erb +9 -0
- data/app/views/catalog/sms_sent.html.erb +2 -9
- data/app/views/catalog/sms_success.html.erb +9 -0
- data/app/views/kaminari/blacklight/_gap.html.erb +1 -1
- data/app/views/kaminari/blacklight/_page.html.erb +5 -1
- data/app/views/shared/_header_navbar.html.erb +1 -1
- data/config/locales/blacklight.en.yml +1 -1
- data/config/locales/blacklight.es.yml +1 -1
- data/config/locales/blacklight.fr.yml +1 -1
- data/config/locales/blacklight.pt-BR.yml +1 -1
- data/lib/blacklight.rb +3 -0
- data/lib/blacklight/base.rb +0 -1
- data/lib/blacklight/bookmarks.rb +135 -0
- data/lib/blacklight/catalog.rb +58 -77
- data/lib/blacklight/catalog/component_configuration.rb +99 -0
- data/lib/blacklight/configuration.rb +82 -4
- data/lib/blacklight/configuration/tool_config.rb +4 -0
- data/lib/blacklight/controller.rb +5 -1
- data/lib/blacklight/document_presenter.rb +17 -8
- data/lib/blacklight/request_builders.rb +136 -4
- data/lib/blacklight/routes.rb +5 -0
- data/lib/blacklight/solr_helper.rb +90 -208
- data/lib/blacklight/solr_repository.rb +69 -0
- data/lib/blacklight/token_based_user.rb +58 -0
- data/lib/blacklight/utils.rb +13 -1
- data/lib/generators/blacklight/install_generator.rb +6 -7
- data/spec/controllers/alternate_controller_spec.rb +19 -0
- data/spec/controllers/catalog_controller_spec.rb +89 -4
- data/spec/features/alternate_controller_spec.rb +0 -1
- data/spec/features/bookmarks_spec.rb +31 -6
- data/spec/features/search_results_spec.rb +11 -0
- data/spec/features/search_spec.rb +5 -0
- data/spec/helpers/blacklight_helper_spec.rb +49 -8
- data/spec/helpers/catalog_helper_spec.rb +56 -8
- data/spec/helpers/configuration_helper_spec.rb +5 -5
- data/spec/helpers/url_helper_spec.rb +15 -8
- data/spec/lib/blacklight/catalog/component_configuration_spec.rb +29 -0
- data/spec/lib/blacklight/configuration_spec.rb +15 -0
- data/spec/lib/blacklight/solr_helper_spec.rb +44 -104
- data/spec/lib/blacklight/solr_repository_spec.rb +113 -0
- data/spec/lib/utils_spec.rb +27 -0
- data/spec/views/_user_util_links.html.erb_spec.rb +6 -3
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +8 -2
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +82 -0
- data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +15 -1
- data/tasks/blacklight.rake +25 -1
- metadata +24 -2
@@ -11,7 +11,7 @@ describe CatalogHelper do
|
|
11
11
|
start = (current_page - 1) * per_page
|
12
12
|
|
13
13
|
mock_docs = (1..total).to_a.map { {}.with_indifferent_access }
|
14
|
-
|
14
|
+
|
15
15
|
mock_response = Kaminari.paginate_array(mock_docs).page(current_page).per(per_page)
|
16
16
|
|
17
17
|
allow(mock_response).to receive(:docs).and_return(mock_docs.slice(start, per_page))
|
@@ -21,8 +21,8 @@ describe CatalogHelper do
|
|
21
21
|
def render_grouped_response?
|
22
22
|
false
|
23
23
|
end
|
24
|
-
|
25
|
-
|
24
|
+
|
25
|
+
|
26
26
|
describe "page_entries_info" do
|
27
27
|
before(:all) do
|
28
28
|
end
|
@@ -43,6 +43,13 @@ describe CatalogHelper do
|
|
43
43
|
expect(html).to be_html_safe
|
44
44
|
end
|
45
45
|
|
46
|
+
it "with an empty page of results" do
|
47
|
+
@response = double(limit_value: -1)
|
48
|
+
|
49
|
+
html = page_entries_info(@response)
|
50
|
+
expect(html).to be_blank
|
51
|
+
end
|
52
|
+
|
46
53
|
describe "with a single result" do
|
47
54
|
it "should use the provided entry name" do
|
48
55
|
response = mock_response :total => 1
|
@@ -177,17 +184,17 @@ describe CatalogHelper do
|
|
177
184
|
allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_method => :xyz) ))
|
178
185
|
allow(helper).to receive_messages(:xyz => "some-thumbnail")
|
179
186
|
|
180
|
-
allow(helper).to receive(:link_to_document).with(document,
|
187
|
+
allow(helper).to receive(:link_to_document).with(document, "some-thumbnail", {})
|
181
188
|
helper.render_thumbnail_tag document
|
182
189
|
end
|
183
190
|
|
184
191
|
it "should create an image tag from the given field" do
|
185
192
|
allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_field => :xyz) ))
|
186
|
-
|
193
|
+
|
187
194
|
allow(document).to receive(:has?).with(:xyz).and_return(true)
|
188
195
|
allow(document).to receive(:first).with(:xyz).and_return("http://example.com/some.jpg")
|
189
196
|
|
190
|
-
allow(helper).to receive(:link_to_document).with(document,
|
197
|
+
allow(helper).to receive(:link_to_document).with(document, image_tag("http://example.com/some.jpg"), {})
|
191
198
|
helper.render_thumbnail_tag document
|
192
199
|
end
|
193
200
|
|
@@ -206,7 +213,7 @@ describe CatalogHelper do
|
|
206
213
|
result = helper.render_thumbnail_tag document, {}, suppress_link: true
|
207
214
|
expect(result).to eq "some-thumbnail"
|
208
215
|
end
|
209
|
-
|
216
|
+
|
210
217
|
|
211
218
|
it "should return nil if no thumbnail is available" do
|
212
219
|
allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new() ))
|
@@ -216,7 +223,7 @@ describe CatalogHelper do
|
|
216
223
|
it "should return nil if no thumbnail is returned from the thumbnail method" do
|
217
224
|
allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_method => :xyz) ))
|
218
225
|
allow(helper).to receive_messages(:xyz => nil)
|
219
|
-
|
226
|
+
|
220
227
|
expect(helper.render_thumbnail_tag document).to be_nil
|
221
228
|
end
|
222
229
|
end
|
@@ -257,4 +264,45 @@ describe CatalogHelper do
|
|
257
264
|
end
|
258
265
|
end
|
259
266
|
|
267
|
+
describe "render_document_class" do
|
268
|
+
before do
|
269
|
+
allow(helper).to receive(:blacklight_config).and_return(blacklight_config)
|
270
|
+
end
|
271
|
+
|
272
|
+
let :blacklight_config do
|
273
|
+
Blacklight::Configuration.new
|
274
|
+
end
|
275
|
+
|
276
|
+
it "should pull data out of a document's field" do
|
277
|
+
blacklight_config.index.display_type_field = :type
|
278
|
+
doc = { :type => 'book' }
|
279
|
+
expect(helper.render_document_class(doc)).to eq "blacklight-book"
|
280
|
+
end
|
281
|
+
|
282
|
+
it "should support multivalued fields" do
|
283
|
+
blacklight_config.index.display_type_field = :type
|
284
|
+
doc = { :type => ['book', 'mss'] }
|
285
|
+
expect(helper.render_document_class(doc)).to eq "blacklight-book blacklight-mss"
|
286
|
+
end
|
287
|
+
|
288
|
+
it "should support empty fields" do
|
289
|
+
blacklight_config.index.display_type_field = :type
|
290
|
+
doc = { :type => [] }
|
291
|
+
expect(helper.render_document_class(doc)).to be_blank
|
292
|
+
end
|
293
|
+
|
294
|
+
it "should support missing fields" do
|
295
|
+
blacklight_config.index.display_type_field = :type
|
296
|
+
doc = { }
|
297
|
+
expect(helper.render_document_class(doc)).to be_blank
|
298
|
+
end
|
299
|
+
|
300
|
+
it "should support view-specific field configuration" do
|
301
|
+
allow(helper).to receive(:document_index_view_type).and_return(:some_view_type)
|
302
|
+
blacklight_config.view.some_view_type.display_type_field = :other_type
|
303
|
+
doc = { other_type: "document"}
|
304
|
+
expect(helper.render_document_class(doc)).to eq "blacklight-document"
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
260
308
|
end
|
@@ -92,7 +92,7 @@ describe BlacklightConfigurationHelper do
|
|
92
92
|
let(:document) { double }
|
93
93
|
it "should look up the label to display for the given document and field" do
|
94
94
|
allow(helper).to receive(:index_fields).and_return({ "my_field" => double(label: "some label") })
|
95
|
-
allow(helper).to receive(:solr_field_label).with(
|
95
|
+
allow(helper).to receive(:solr_field_label).with(:"blacklight.search.fields.index.my_field", :"blacklight.search.fields.my_field", "some label", "My field")
|
96
96
|
helper.index_field_label document, "my_field"
|
97
97
|
end
|
98
98
|
end
|
@@ -101,7 +101,7 @@ describe BlacklightConfigurationHelper do
|
|
101
101
|
let(:document) { double }
|
102
102
|
it "should look up the label to display for the given document and field" do
|
103
103
|
allow(helper).to receive(:document_show_fields).and_return({ "my_field" => double(label: "some label") })
|
104
|
-
allow(helper).to receive(:solr_field_label).with(
|
104
|
+
allow(helper).to receive(:solr_field_label).with(:"blacklight.search.fields.show.my_field", :"blacklight.search.fields.my_field", "some label", "My field")
|
105
105
|
helper.document_show_field_label document, "my_field"
|
106
106
|
end
|
107
107
|
end
|
@@ -110,14 +110,14 @@ describe BlacklightConfigurationHelper do
|
|
110
110
|
let(:document) { double }
|
111
111
|
it "should look up the label to display for the given document and field" do
|
112
112
|
allow(blacklight_config).to receive(:facet_fields).and_return({ "my_field" => double(label: "some label") })
|
113
|
-
allow(helper).to receive(:solr_field_label).with(
|
113
|
+
allow(helper).to receive(:solr_field_label).with(:"blacklight.search.fields.facet.my_field", :"blacklight.search.fields.my_field", "some label", "My field")
|
114
114
|
helper.facet_field_label "my_field"
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
118
118
|
describe "#solr_field_label" do
|
119
119
|
it "should look up the label as an i18n string" do
|
120
|
-
allow(helper).to receive(:t).with(:some_key).and_return "my label"
|
120
|
+
allow(helper).to receive(:t).with(:some_key, default: []).and_return "my label"
|
121
121
|
label = helper.solr_field_label :some_key
|
122
122
|
|
123
123
|
expect(label).to eq "my label"
|
@@ -126,7 +126,7 @@ describe BlacklightConfigurationHelper do
|
|
126
126
|
it "should pass the provided i18n keys to I18n.t" do
|
127
127
|
allow(helper).to receive(:t).with(:key_a, default: [:key_b, "default text"])
|
128
128
|
|
129
|
-
label = helper.solr_field_label
|
129
|
+
label = helper.solr_field_label :key_a, :key_b, "default text"
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
@@ -254,37 +254,44 @@ describe BlacklightUrlHelper do
|
|
254
254
|
it "should consist of the document title wrapped in a <a>" do
|
255
255
|
data = {'id'=>'123456','title_display'=>['654321'] }
|
256
256
|
@document = SolrDocument.new(data)
|
257
|
-
expect(helper.link_to_document(@document,
|
257
|
+
expect(helper.link_to_document(@document, :title_display)).to have_selector("a", :text => '654321', :count => 1)
|
258
258
|
end
|
259
259
|
|
260
|
-
it "should
|
260
|
+
it "should have the old deprecated behavior (second argument is a hash)" do
|
261
261
|
data = {'id'=>'123456','title_display'=>['654321'] }
|
262
262
|
@document = SolrDocument.new(data)
|
263
|
+
expect(Deprecation).to receive(:warn)
|
263
264
|
expect(helper.link_to_document(@document, { :label => "title_display" })).to have_selector("a", :text => 'title_display', :count => 1)
|
264
265
|
end
|
265
266
|
|
267
|
+
it "should accept and return a string label" do
|
268
|
+
data = {'id'=>'123456','title_display'=>['654321'] }
|
269
|
+
@document = SolrDocument.new(data)
|
270
|
+
expect(helper.link_to_document(@document, "title_display")).to have_selector("a", :text => 'title_display', :count => 1)
|
271
|
+
end
|
272
|
+
|
266
273
|
it "should accept and return a Proc" do
|
267
274
|
data = {'id'=>'123456','title_display'=>['654321'] }
|
268
275
|
@document = SolrDocument.new(data)
|
269
|
-
expect(helper.link_to_document(@document,
|
276
|
+
expect(helper.link_to_document(@document, Proc.new { |doc, opts| doc.get(:id) + ": " + doc.get(:title_display) })).to have_selector("a", :text => '123456: 654321', :count => 1)
|
270
277
|
end
|
271
278
|
|
272
279
|
it "should return id when label is missing" do
|
273
280
|
data = {'id'=>'123456'}
|
274
281
|
@document = SolrDocument.new(data)
|
275
|
-
expect(helper.link_to_document(@document,
|
282
|
+
expect(helper.link_to_document(@document, :title_display)).to have_selector("a", :text => '123456', :count => 1)
|
276
283
|
end
|
277
284
|
|
278
285
|
it "should be html safe" do
|
279
286
|
data = {'id'=>'123456'}
|
280
287
|
@document = SolrDocument.new(data)
|
281
|
-
expect(helper.link_to_document(@document,
|
288
|
+
expect(helper.link_to_document(@document, :title_display)).to be_html_safe
|
282
289
|
end
|
283
290
|
|
284
291
|
it "should convert the counter parameter into a data- attribute" do
|
285
292
|
data = {'id'=>'123456','title_display'=>['654321']}
|
286
293
|
@document = SolrDocument.new(data)
|
287
|
-
expect(helper.link_to_document(@document,
|
294
|
+
expect(helper.link_to_document(@document, :title_display, counter: 5)).to match /\/catalog\/123456\/track\?counter=5/
|
288
295
|
end
|
289
296
|
|
290
297
|
it "should merge the data- attributes from the options with the counter params" do
|
@@ -297,12 +304,12 @@ describe BlacklightUrlHelper do
|
|
297
304
|
|
298
305
|
it "passes on the title attribute to the link_to_with_data method" do
|
299
306
|
@document = SolrDocument.new('id'=>'123456')
|
300
|
-
expect(helper.link_to_document(@document
|
307
|
+
expect(helper.link_to_document(@document, "Some crazy long label...", title: "Some crazy longer label")).to match(/title=\"Some crazy longer label\"/)
|
301
308
|
end
|
302
309
|
|
303
310
|
it "doesn't add an erroneous title attribute if one isn't provided" do
|
304
311
|
@document = SolrDocument.new('id'=>'123456')
|
305
|
-
expect(helper.link_to_document(@document
|
312
|
+
expect(helper.link_to_document(@document, "Some crazy long label...")).to_not match(/title=/)
|
306
313
|
end
|
307
314
|
|
308
315
|
it "should work with integer ids" do
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Blacklight::Catalog::ComponentConfiguration do
|
4
|
+
subject do
|
5
|
+
Class.new do
|
6
|
+
include Blacklight::Configurable
|
7
|
+
include Blacklight::Catalog::ComponentConfiguration
|
8
|
+
|
9
|
+
def some_existing_action
|
10
|
+
1
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe ".add_show_tools_partial" do
|
16
|
+
it "should define an action method" do
|
17
|
+
subject.add_show_tools_partial :xyz
|
18
|
+
expect(subject.new).to respond_to :xyz
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should not replace an existing method" do
|
22
|
+
subject.add_show_tools_partial :some_existing_action
|
23
|
+
expect(subject.new.some_existing_action).to eq 1
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
end
|
@@ -83,6 +83,21 @@ describe "Blacklight::Configuration" do
|
|
83
83
|
expect(@config.a).to be_nil
|
84
84
|
expect(@config.facet_fields).to_not include(@mock_facet)
|
85
85
|
end
|
86
|
+
|
87
|
+
it "should provide cloned copies of mutable data structures" do
|
88
|
+
@config.a = { value: 1 }
|
89
|
+
@config.b = [1,2,3]
|
90
|
+
|
91
|
+
config_copy = @config.inheritable_copy
|
92
|
+
|
93
|
+
config_copy.a[:value] = 2
|
94
|
+
config_copy.b << 5
|
95
|
+
|
96
|
+
expect(@config.a[:value]).to eq 1
|
97
|
+
expect(config_copy.a[:value]).to eq 2
|
98
|
+
expect(@config.b).to match_array [1,2,3]
|
99
|
+
expect(config_copy.b).to match_array [1,2,3,5]
|
100
|
+
end
|
86
101
|
end
|
87
102
|
|
88
103
|
describe "add alternative solr fields" do
|
@@ -18,20 +18,17 @@ describe Blacklight::SolrHelper do
|
|
18
18
|
include Blacklight::SolrHelper
|
19
19
|
|
20
20
|
attr_accessor :blacklight_config
|
21
|
-
attr_accessor :
|
21
|
+
attr_accessor :solr_repository
|
22
22
|
|
23
23
|
def initialize blacklight_config, blacklight_solr
|
24
24
|
self.blacklight_config = blacklight_config
|
25
|
-
self.
|
25
|
+
self.solr_repository = Blacklight::SolrRepository.new(blacklight_config)
|
26
|
+
self.solr_repository.blacklight_solr = blacklight_solr
|
26
27
|
end
|
27
28
|
|
28
29
|
def params
|
29
30
|
{}
|
30
31
|
end
|
31
|
-
|
32
|
-
def logger
|
33
|
-
Rails.logger
|
34
|
-
end
|
35
32
|
end
|
36
33
|
|
37
34
|
subject { SolrHelperTestClass.new blacklight_config, blacklight_solr }
|
@@ -52,70 +49,6 @@ describe Blacklight::SolrHelper do
|
|
52
49
|
@subject_search_params = {:commit=>"search", :search_field=>"subject", :action=>"index", :"controller"=>"catalog", :"rows"=>"10", :"q"=>"wome"}
|
53
50
|
end
|
54
51
|
|
55
|
-
describe "#find" do
|
56
|
-
it "should use the configured solr path" do
|
57
|
-
blacklight_config.solr_path = 'xyz'
|
58
|
-
allow(blacklight_solr).to receive(:send_and_receive).with('xyz', anything).and_return("{}".to_json)
|
59
|
-
expect(subject.find({})).to be_a_kind_of Blacklight::SolrResponse
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should override the configured solr path" do
|
63
|
-
blacklight_config.solr_path = 'xyz'
|
64
|
-
allow(blacklight_solr).to receive(:send_and_receive).with('abc', anything).and_return("{}".to_json)
|
65
|
-
expect(subject.find('abc', {})).to be_a_kind_of Blacklight::SolrResponse
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should use a default :qt param" do
|
69
|
-
blacklight_config.qt = 'xyz'
|
70
|
-
allow(blacklight_solr).to receive(:send_and_receive).with('select', hash_including(params: { qt: 'xyz'})).and_return("{}".to_json)
|
71
|
-
expect(subject.find({})).to be_a_kind_of Blacklight::SolrResponse
|
72
|
-
end
|
73
|
-
|
74
|
-
it "should use the provided :qt param" do
|
75
|
-
blacklight_config.qt = 'xyz'
|
76
|
-
allow(blacklight_solr).to receive(:send_and_receive).with('select', hash_including(params: { qt: 'abc'})).and_return("{}".to_json)
|
77
|
-
expect(subject.find({qt: 'abc'})).to be_a_kind_of Blacklight::SolrResponse
|
78
|
-
end
|
79
|
-
|
80
|
-
describe "http_method configuration" do
|
81
|
-
describe "using default" do
|
82
|
-
|
83
|
-
it "defaults to get" do
|
84
|
-
expect(blacklight_config.http_method).to eq :get
|
85
|
-
allow(blacklight_solr).to receive(:send_and_receive) do |path, params|
|
86
|
-
expect(path).to eq 'select'
|
87
|
-
expect(params[:method]).to eq :get
|
88
|
-
expect(params[:params]).to include(:q)
|
89
|
-
end.and_return({'response'=>{'docs'=>[]}})
|
90
|
-
subject.find(:q => @all_docs_query)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
describe "setting to post" do
|
95
|
-
let (:blacklight_config) {config = Blacklight::Configuration.new; config.http_method=:post; config}
|
96
|
-
|
97
|
-
it "keep value set to post" do
|
98
|
-
expect(blacklight_config.http_method).to eq :post
|
99
|
-
allow(blacklight_solr).to receive(:send_and_receive) do |path, params|
|
100
|
-
expect(path).to eq 'select'
|
101
|
-
expect(params[:method]).to eq :post
|
102
|
-
expect(params[:data]).to include(:q)
|
103
|
-
end.and_return({'response'=>{'docs'=>[]}})
|
104
|
-
subject.find(:q => @all_docs_query)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
describe "http_method configuration", :integration => true do
|
111
|
-
let (:blacklight_config) {config = Blacklight::Configuration.new; config.http_method=:post; config}
|
112
|
-
|
113
|
-
it "should send a post request to solr and get a response back" do
|
114
|
-
response = subject.find(:q => @all_docs_query)
|
115
|
-
expect(response.docs.length).to be >= 1
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
52
|
# SPECS for actual search parameter generation
|
120
53
|
describe "solr_search_params" do
|
121
54
|
it "allows customization of solr_search_params_logic" do
|
@@ -688,28 +621,19 @@ describe Blacklight::SolrHelper do
|
|
688
621
|
expect(solr_params[:"f.#{@facet_field}.facet.sort"]).to be_blank
|
689
622
|
end
|
690
623
|
|
691
|
-
it "uses the field-specific sort" do
|
692
|
-
solr_params = subject.solr_facet_params('format_ordered')
|
693
|
-
expect(solr_params[:"f.format_ordered.facet.sort"]).to eq :count
|
694
|
-
end
|
695
|
-
|
696
624
|
it 'uses sort provided in the parameters' do
|
697
625
|
solr_params = subject.solr_facet_params(@facet_field, @sort_key => "index")
|
698
626
|
expect(solr_params[:"f.#{@facet_field}.facet.sort"]).to eq 'index'
|
699
627
|
end
|
628
|
+
|
700
629
|
it "comes up with the same params as #solr_search_params to constrain context for facet list" do
|
701
630
|
search_params = {:q => 'tibetan history', :f=> {:format=>'Book', :language_facet=>'Tibetan'}}
|
702
|
-
solr_search_params = subject.solr_search_params( search_params )
|
703
631
|
solr_facet_params = subject.solr_facet_params('format', search_params)
|
704
632
|
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
# Everything else should match
|
710
|
-
expect(solr_facet_params[key]).to eq value
|
711
|
-
end
|
712
|
-
|
633
|
+
expect(solr_facet_params).to include :"facet.field" => "format"
|
634
|
+
expect(solr_facet_params).to include :"f.format.facet.limit" => 21
|
635
|
+
expect(solr_facet_params).to include :"f.format.facet.offset" => 0
|
636
|
+
expect(solr_facet_params).to include :"rows" => 0
|
713
637
|
end
|
714
638
|
end
|
715
639
|
describe "for facet limit parameters config ed" do
|
@@ -1079,27 +1003,35 @@ describe Blacklight::SolrHelper do
|
|
1079
1003
|
|
1080
1004
|
describe "solr_doc_params" do
|
1081
1005
|
it "should default to using the 'document' requestHandler" do
|
1082
|
-
|
1083
|
-
|
1006
|
+
Deprecation.silence(Blacklight::SolrHelper) do
|
1007
|
+
doc_params = subject.solr_doc_params('asdfg')
|
1008
|
+
expect(doc_params[:qt]).to eq 'document'
|
1009
|
+
end
|
1084
1010
|
end
|
1085
1011
|
|
1086
1012
|
it "should default to using the id parameter when sending solr queries" do
|
1087
|
-
|
1088
|
-
|
1013
|
+
Deprecation.silence(Blacklight::SolrHelper) do
|
1014
|
+
doc_params = subject.solr_doc_params('asdfg')
|
1015
|
+
expect(doc_params[:id]).to eq 'asdfg'
|
1016
|
+
end
|
1089
1017
|
end
|
1090
1018
|
|
1091
1019
|
it "should use the document_unique_id_param configuration" do
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1020
|
+
Deprecation.silence(Blacklight::SolrHelper) do
|
1021
|
+
allow(blacklight_config).to receive_messages(document_unique_id_param: :ids)
|
1022
|
+
doc_params = subject.solr_doc_params('asdfg')
|
1023
|
+
expect(doc_params[:ids]).to eq 'asdfg'
|
1024
|
+
end
|
1095
1025
|
end
|
1096
1026
|
|
1097
1027
|
describe "blacklight config's default_document_solr_parameters" do
|
1098
1028
|
it "should use parameters from the controller's default_document_solr_parameters" do
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1029
|
+
Deprecation.silence(Blacklight::SolrHelper) do
|
1030
|
+
blacklight_config.default_document_solr_params = { :qt => 'my_custom_handler', :asdf => '1234' }
|
1031
|
+
doc_params = subject.solr_doc_params('asdfg')
|
1032
|
+
expect(doc_params[:qt]).to eq 'my_custom_handler'
|
1033
|
+
expect(doc_params[:asdf]).to eq '1234'
|
1034
|
+
end
|
1103
1035
|
end
|
1104
1036
|
end
|
1105
1037
|
|
@@ -1116,8 +1048,10 @@ describe Blacklight::SolrHelper do
|
|
1116
1048
|
end
|
1117
1049
|
=end
|
1118
1050
|
it "should respect the configuration-supplied unique id" do
|
1119
|
-
|
1120
|
-
|
1051
|
+
Deprecation.silence(Blacklight::SolrHelper) do
|
1052
|
+
doc_params = subject.solr_doc_params('"Strong Medicine speaks"')
|
1053
|
+
expect(doc_params[:id]).to eq '"Strong Medicine speaks"'
|
1054
|
+
end
|
1121
1055
|
end
|
1122
1056
|
end
|
1123
1057
|
|
@@ -1277,18 +1211,24 @@ describe Blacklight::SolrHelper do
|
|
1277
1211
|
allow(@mock_response).to receive_messages(documents: [])
|
1278
1212
|
end
|
1279
1213
|
it "should contruct a solr query based on the field and value pair" do
|
1280
|
-
|
1281
|
-
|
1214
|
+
Deprecation.silence(Blacklight::SolrHelper) do
|
1215
|
+
allow(subject.solr_repository).to receive(:send_and_receive).with('select', hash_including("q" => "{!lucene}field_name:(value)")).and_return(@mock_response)
|
1216
|
+
subject.get_solr_response_for_field_values('field_name', 'value')
|
1217
|
+
end
|
1282
1218
|
end
|
1283
1219
|
|
1284
1220
|
it "should OR multiple values together" do
|
1285
|
-
|
1286
|
-
|
1221
|
+
Deprecation.silence(Blacklight::SolrHelper) do
|
1222
|
+
allow(subject.solr_repository).to receive(:send_and_receive).with('select', hash_including("q" => "{!lucene}field_name:(a OR b)")).and_return(@mock_response)
|
1223
|
+
subject.get_solr_response_for_field_values('field_name', ['a', 'b'])
|
1224
|
+
end
|
1287
1225
|
end
|
1288
1226
|
|
1289
1227
|
it "should escape crazy identifiers" do
|
1290
|
-
|
1291
|
-
|
1228
|
+
Deprecation.silence(Blacklight::SolrHelper) do
|
1229
|
+
allow(subject.solr_repository).to receive(:send_and_receive).with('select', hash_including("q" => "{!lucene}field_name:(\"h://\\\"\\\'\")")).and_return(@mock_response)
|
1230
|
+
subject.get_solr_response_for_field_values('field_name', 'h://"\'')
|
1231
|
+
end
|
1292
1232
|
end
|
1293
1233
|
end
|
1294
1234
|
|
@@ -1301,7 +1241,7 @@ describe Blacklight::SolrHelper do
|
|
1301
1241
|
# nearby on shelf
|
1302
1242
|
it "should raise a Blacklight exception if RSolr can't connect to the Solr instance" do
|
1303
1243
|
allow(blacklight_solr).to receive(:send_and_receive).and_raise(Errno::ECONNREFUSED)
|
1304
|
-
expect { subject.
|
1244
|
+
expect { subject.query_solr }.to raise_exception(/Unable to connect to Solr instance/)
|
1305
1245
|
end
|
1306
1246
|
|
1307
1247
|
describe "grouped_key_for_results" do
|