blacklight 6.18.0 → 6.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop_todo.yml +1 -1
- data/.travis.yml +5 -0
- data/Gemfile +1 -0
- data/VERSION +1 -1
- data/app/controllers/concerns/blacklight/bookmarks.rb +17 -3
- data/app/controllers/concerns/blacklight/catalog.rb +4 -2
- data/app/controllers/concerns/blacklight/controller.rb +10 -7
- data/app/controllers/concerns/blacklight/search_context.rb +5 -3
- data/app/controllers/concerns/blacklight/token_based_user.rb +3 -1
- data/app/models/blacklight/suggest_search.rb +3 -14
- data/app/models/concerns/blacklight/document.rb +3 -1
- data/app/models/concerns/blacklight/suggest/response.rb +5 -3
- data/app/presenters/blacklight/index_presenter.rb +3 -3
- data/blacklight.gemspec +5 -4
- data/lib/blacklight.rb +4 -4
- data/lib/blacklight/abstract_repository.rb +13 -1
- data/lib/blacklight/configuration.rb +2 -1
- data/lib/blacklight/configuration/fields.rb +46 -41
- data/lib/blacklight/engine.rb +2 -1
- data/lib/blacklight/solr/repository.rb +36 -3
- data/lib/generators/blacklight/assets_generator.rb +7 -2
- data/lib/generators/blacklight/install_generator.rb +1 -1
- data/lib/generators/blacklight/templates/catalog_controller.rb +3 -0
- data/lib/railties/blacklight.rake +11 -16
- data/spec/controllers/bookmarks_controller_spec.rb +35 -0
- data/spec/models/blacklight/configuration_spec.rb +81 -79
- data/spec/models/blacklight/solr/repository_spec.rb +11 -4
- data/spec/models/blacklight/suggest/response_spec.rb +5 -4
- data/spec/models/blacklight/suggest_search_spec.rb +6 -13
- data/spec/presenters/index_presenter_spec.rb +9 -0
- data/spec/spec_helper.rb +10 -6
- data/tasks/blacklight.rake +4 -4
- metadata +36 -16
data/lib/blacklight/engine.rb
CHANGED
@@ -28,7 +28,8 @@ module Blacklight
|
|
28
28
|
end
|
29
29
|
|
30
30
|
initializer "blacklight.assets.precompile" do |app|
|
31
|
-
|
31
|
+
# When Rails has been generated in API mode, it does not have sprockets available
|
32
|
+
app.config.assets.precompile += %w(favicon.ico) if defined? Sprockets
|
32
33
|
end
|
33
34
|
|
34
35
|
Blacklight::Engine.config.sms_mappings = {
|
@@ -22,8 +22,31 @@ module Blacklight::Solr
|
|
22
22
|
send_and_receive blacklight_config.solr_path, params.reverse_merge(qt: blacklight_config.qt)
|
23
23
|
end
|
24
24
|
|
25
|
+
# @param [Hash] params
|
26
|
+
# @return [Blacklight::Suggest::Response]
|
27
|
+
def suggestions(request_params)
|
28
|
+
suggest_results = connection.send_and_receive(suggest_handler_path, params: request_params)
|
29
|
+
Blacklight::Suggest::Response.new suggest_results, request_params, suggest_handler_path, suggester_name
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# Gets a list of available fields
|
34
|
+
# @return [Hash]
|
35
|
+
def reflect_fields
|
36
|
+
send_and_receive('admin/luke', params: { fl: '*', 'json.nl' => 'map' })['fields']
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# @return [boolean] true if the repository is reachable
|
41
|
+
def ping
|
42
|
+
response = connection.send_and_receive 'admin/ping', {}
|
43
|
+
Blacklight.logger.info("Ping [#{connection.uri}] returned: '#{response['status']}'")
|
44
|
+
response['status'] == "OK"
|
45
|
+
end
|
46
|
+
|
25
47
|
##
|
26
48
|
# Execute a solr query
|
49
|
+
# TODO: Make this private after we have a way to abstract admin/luke and ping
|
27
50
|
# @see [RSolr::Client#send_and_receive]
|
28
51
|
# @overload find(solr_path, params)
|
29
52
|
# Execute a solr query at the given path with the parameters
|
@@ -51,8 +74,18 @@ module Blacklight::Solr
|
|
51
74
|
|
52
75
|
protected
|
53
76
|
|
54
|
-
|
55
|
-
|
56
|
-
|
77
|
+
##
|
78
|
+
# @return [String]
|
79
|
+
def suggest_handler_path
|
80
|
+
blacklight_config.autocomplete_path
|
81
|
+
end
|
82
|
+
|
83
|
+
def suggester_name
|
84
|
+
blacklight_config.autocomplete_suggester
|
85
|
+
end
|
86
|
+
|
87
|
+
def build_connection
|
88
|
+
RSolr.connect(connection_config.merge(adapter: connection_config[:http_adapter]))
|
89
|
+
end
|
57
90
|
end
|
58
91
|
end
|
@@ -1,8 +1,13 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
1
|
module Blacklight
|
3
2
|
class Assets < Rails::Generators::Base
|
4
3
|
source_root File.expand_path('../templates', __FILE__)
|
5
|
-
|
4
|
+
|
5
|
+
# This could be skipped if you want to use webpacker
|
6
|
+
def add_javascript_dependencies
|
7
|
+
gem 'bootstrap-sass', '~> 3.0'
|
8
|
+
gem 'twitter-typeahead-rails', '0.11.1.pre.corejavascript'
|
9
|
+
end
|
10
|
+
|
6
11
|
def assets
|
7
12
|
copy_file "blacklight.scss", "app/assets/stylesheets/blacklight.scss"
|
8
13
|
|
@@ -12,7 +12,7 @@ module Blacklight
|
|
12
12
|
class_option :devise , type: :boolean, default: false, aliases: "-d", desc: "Use Devise as authentication logic."
|
13
13
|
class_option :jettywrapper, type: :boolean, default: false, desc: "Use jettywrapper to download and control Jetty"
|
14
14
|
class_option :marc , type: :boolean, default: false, aliases: "-m", desc: "Generate MARC-based demo ."
|
15
|
-
class_option :'skip-assets', type: :boolean, default:
|
15
|
+
class_option :'skip-assets', type: :boolean, default: !defined?(Sprockets), desc: "Skip generating javascript and css assets into the application"
|
16
16
|
class_option :'skip-solr', type: :boolean, default: false, desc: "Skip generating solr configurations."
|
17
17
|
|
18
18
|
desc <<-EOS
|
@@ -190,5 +190,8 @@ class <%= controller_name.classify %>Controller < ApplicationController
|
|
190
190
|
# Configuration for autocomplete suggestor
|
191
191
|
config.autocomplete_enabled = true
|
192
192
|
config.autocomplete_path = 'suggest'
|
193
|
+
# if the name of the solr.SuggestComponent provided in your solrcongig.xml is not the
|
194
|
+
# default 'mySuggester', uncomment and provide it below
|
195
|
+
# config.autocomplete_suggester = 'mySuggester'
|
193
196
|
end
|
194
197
|
end
|
@@ -2,11 +2,11 @@
|
|
2
2
|
namespace :blacklight do
|
3
3
|
# task to clean out old, unsaved searches
|
4
4
|
# rake blacklight:delete_old_searches[days_old]
|
5
|
-
# example cron entry to delete searches older than 7 days at 2:00 AM every day:
|
5
|
+
# example cron entry to delete searches older than 7 days at 2:00 AM every day:
|
6
6
|
# 0 2 * * * cd /path/to/your/app && /path/to/rake blacklight:delete_old_searches[7] RAILS_ENV=your_env
|
7
7
|
desc "Removes entries in the searches table that are older than the number of days given."
|
8
8
|
task :delete_old_searches, [:days_old] => [:environment] do |t, args|
|
9
|
-
args.with_defaults(:days_old => 7)
|
9
|
+
args.with_defaults(:days_old => 7)
|
10
10
|
Search.delete_old_searches(args[:days_old].to_i)
|
11
11
|
end
|
12
12
|
|
@@ -24,24 +24,19 @@ namespace :blacklight do
|
|
24
24
|
|
25
25
|
namespace :check do
|
26
26
|
desc "Check the Solr connection and controller configuration"
|
27
|
-
task :solr, [:controller_name] => [:environment] do
|
28
|
-
errors = 0
|
29
|
-
verbose = ENV.fetch('VERBOSE', false).present?
|
30
|
-
|
31
|
-
conn = Blacklight.default_index.connection
|
32
|
-
puts "[#{conn.uri}]"
|
33
|
-
|
34
|
-
print " - admin/ping: "
|
27
|
+
task :solr, [:controller_name] => [:environment] do
|
35
28
|
begin
|
36
|
-
|
37
|
-
|
38
|
-
|
29
|
+
conn = Blacklight.default_index
|
30
|
+
if conn.ping
|
31
|
+
puts "OK"
|
32
|
+
else
|
33
|
+
puts "Unable to reach: #{conn.uri}"
|
34
|
+
exit 1
|
35
|
+
end
|
39
36
|
rescue => e
|
40
|
-
errors += 1
|
41
37
|
puts e.to_s
|
38
|
+
exit 1
|
42
39
|
end
|
43
|
-
|
44
|
-
exit 1 if errors > 0
|
45
40
|
end
|
46
41
|
|
47
42
|
task :controller, [:controller_name] => [:environment] do |_, args|
|
@@ -25,6 +25,25 @@ describe BookmarksController do
|
|
25
25
|
expect(response.code).to eq "500"
|
26
26
|
end
|
27
27
|
end
|
28
|
+
|
29
|
+
describe "create" do
|
30
|
+
it "can create bookmarks via params bookmarks attribute" do
|
31
|
+
@controller.send(:current_or_guest_user).save
|
32
|
+
put :create, xhr: true, params: {
|
33
|
+
id: "notused",
|
34
|
+
bookmarks: [
|
35
|
+
{ document_id: "2007020969", document_type: "SolrDocument" },
|
36
|
+
{ document_id: "2007020970", document_type: "SolrDocument" },
|
37
|
+
{ document_id: "2007020971", document_type: "SolrDocument" }
|
38
|
+
],
|
39
|
+
format: :js
|
40
|
+
}
|
41
|
+
|
42
|
+
expect(response).to be_success
|
43
|
+
expect(response.code).to eq "200"
|
44
|
+
expect(JSON.parse(response.body)["bookmarks"]["count"]).to eq 3
|
45
|
+
end
|
46
|
+
end
|
28
47
|
|
29
48
|
describe "delete" do
|
30
49
|
before do
|
@@ -39,6 +58,22 @@ describe BookmarksController do
|
|
39
58
|
expect(JSON.parse(response.body)["bookmarks"]["count"]).to eq 0
|
40
59
|
end
|
41
60
|
|
61
|
+
it "can handle bookmark deletion via :bookmarks param" do
|
62
|
+
class FooDocument < SolrDocument; end
|
63
|
+
@controller.send(:current_or_guest_user).bookmarks.create! document_id: '2007020970', document_type: "FooDocument"
|
64
|
+
delete :destroy, xhr: true, params: {
|
65
|
+
id: 'notused',
|
66
|
+
bookmarks: [
|
67
|
+
{ document_id: '2007020969', document_type: 'SolrDocument' },
|
68
|
+
{ document_id: '2007020970', document_type: 'FooDocument' }
|
69
|
+
],
|
70
|
+
format: :js
|
71
|
+
}
|
72
|
+
expect(response).to be_success
|
73
|
+
expect(response.code).to eq "200"
|
74
|
+
expect(JSON.parse(response.body)["bookmarks"]["count"]).to eq 0
|
75
|
+
end
|
76
|
+
|
42
77
|
it "has a 500 status code when delete is not success" do
|
43
78
|
bm = instance_double(Bookmark)
|
44
79
|
allow(@controller).to receive_message_chain(:current_or_guest_user, :existing_bookmark_for).and_return(bm)
|
@@ -1,11 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
describe "Blacklight::Configuration" do
|
4
|
-
|
4
|
+
|
5
5
|
before(:each) do
|
6
|
-
@config =
|
6
|
+
@config = config
|
7
7
|
end
|
8
8
|
|
9
|
+
let(:config) { Blacklight::Configuration.new }
|
10
|
+
|
9
11
|
it "supports arbitrary configuration values" do
|
10
12
|
@config.a = 1
|
11
13
|
|
@@ -78,7 +80,7 @@ describe "Blacklight::Configuration" do
|
|
78
80
|
it "defaults to 5" do
|
79
81
|
expect(Blacklight::Configuration.new.spell_max).to eq 5
|
80
82
|
end
|
81
|
-
|
83
|
+
|
82
84
|
it "accepts config'd value" do
|
83
85
|
expect(Blacklight::Configuration.new(:spell_max => 10).spell_max).to eq 10
|
84
86
|
end
|
@@ -148,7 +150,7 @@ describe "Blacklight::Configuration" do
|
|
148
150
|
config.add_my_custom_field 'qwerty', :label => "asdf"
|
149
151
|
end
|
150
152
|
|
151
|
-
|
153
|
+
|
152
154
|
|
153
155
|
expect(config.my_custom_fields.keys).to include('qwerty')
|
154
156
|
end
|
@@ -161,17 +163,17 @@ describe "Blacklight::Configuration" do
|
|
161
163
|
config.add_my_custom_facet_field 'qwerty', :label => "asdf"
|
162
164
|
end
|
163
165
|
|
164
|
-
|
166
|
+
|
165
167
|
|
166
168
|
expect(config.my_custom_facet_fields['qwerty']).to be_a_kind_of(Blacklight::Configuration::FacetField)
|
167
169
|
end
|
168
170
|
|
169
171
|
end
|
170
|
-
|
172
|
+
|
171
173
|
describe "add_facet_field" do
|
172
174
|
it "accepts field name and hash form arg" do
|
173
175
|
@config.add_facet_field('format', :label => "Format", :limit => true)
|
174
|
-
|
176
|
+
|
175
177
|
expect(@config.facet_fields["format"]).to_not be_nil
|
176
178
|
expect(@config.facet_fields["format"]["label"]).to eq "Format"
|
177
179
|
expect(@config.facet_fields["format"]["limit"]).to be true
|
@@ -179,17 +181,17 @@ describe "Blacklight::Configuration" do
|
|
179
181
|
|
180
182
|
it "accepts FacetField obj arg" do
|
181
183
|
@config.add_facet_field("format", Blacklight::Configuration::FacetField.new( :label => "Format"))
|
182
|
-
|
184
|
+
|
183
185
|
expect(@config.facet_fields["format"]).to_not be_nil
|
184
186
|
expect(@config.facet_fields["format"]["label"]).to eq "Format"
|
185
187
|
end
|
186
|
-
|
188
|
+
|
187
189
|
it "accepts field name and block form" do
|
188
|
-
@config.add_facet_field("format") do |facet|
|
190
|
+
@config.add_facet_field("format") do |facet|
|
189
191
|
facet.label = "Format"
|
190
192
|
facet.limit = true
|
191
193
|
end
|
192
|
-
|
194
|
+
|
193
195
|
expect(@config.facet_fields["format"]).to_not be_nil
|
194
196
|
expect(@config.facet_fields["format"].limit).to be true
|
195
197
|
end
|
@@ -223,38 +225,38 @@ describe "Blacklight::Configuration" do
|
|
223
225
|
|
224
226
|
it "creates default label from titleized solr field" do
|
225
227
|
@config.add_facet_field("publication_date")
|
226
|
-
|
228
|
+
|
227
229
|
expect(@config.facet_fields["publication_date"].label).to eq "Publication Date"
|
228
230
|
end
|
229
231
|
|
230
232
|
it "allows you to not show the facet in the facet bar" do
|
231
233
|
@config.add_facet_field("publication_date", :show=>false)
|
232
|
-
|
234
|
+
|
233
235
|
expect(@config.facet_fields["publication_date"]['show']).to be false
|
234
236
|
end
|
235
|
-
|
237
|
+
|
236
238
|
it "raises on nil solr field name" do
|
237
239
|
expect { @config.add_facet_field(nil) }.to raise_error ArgumentError
|
238
240
|
end
|
239
241
|
|
240
242
|
it "looks up and match field names" do
|
241
|
-
allow(
|
242
|
-
"some_field_facet" => {},
|
243
|
+
allow(config).to receive_messages(reflected_fields: {
|
244
|
+
"some_field_facet" => {},
|
243
245
|
"another_field_facet" => {},
|
244
246
|
"a_facet_field" => {},
|
245
247
|
})
|
246
|
-
expect { |b|
|
248
|
+
expect { |b| config.add_facet_field match: /_facet$/, &b }.to yield_control.twice
|
247
249
|
|
248
250
|
expect(@config.facet_fields.keys).to eq ["some_field_facet", "another_field_facet"]
|
249
251
|
end
|
250
252
|
|
251
253
|
it "takes wild-carded field names and dereference them to solr fields" do
|
252
|
-
allow(
|
254
|
+
allow(config).to receive(:reflected_fields).and_return(
|
253
255
|
"some_field_facet" => {},
|
254
256
|
"another_field_facet" => {},
|
255
|
-
"a_facet_field" => {}
|
256
|
-
|
257
|
-
expect { |b|
|
257
|
+
"a_facet_field" => {}
|
258
|
+
)
|
259
|
+
expect { |b| config.add_facet_field "*_facet", &b }.to yield_control.twice
|
258
260
|
|
259
261
|
expect(@config.facet_fields.keys).to eq ["some_field_facet", "another_field_facet"]
|
260
262
|
end
|
@@ -275,45 +277,45 @@ describe "Blacklight::Configuration" do
|
|
275
277
|
end
|
276
278
|
end
|
277
279
|
end
|
278
|
-
|
280
|
+
|
279
281
|
describe "add_index_field" do
|
280
282
|
it "takes hash form" do
|
281
283
|
@config.add_index_field("title_display", :label => "Title")
|
282
|
-
|
284
|
+
|
283
285
|
expect(@config.index_fields["title_display"]).to_not be_nil
|
284
286
|
expect(@config.index_fields["title_display"].label).to eq "Title"
|
285
287
|
end
|
286
288
|
it "takes IndexField param" do
|
287
289
|
@config.add_index_field("title_display", Blacklight::Configuration::IndexField.new(:field => "title_display", :label => "Title"))
|
288
|
-
|
290
|
+
|
289
291
|
expect(@config.index_fields["title_display"]).to_not be_nil
|
290
292
|
expect(@config.index_fields["title_display"].label).to eq "Title"
|
291
293
|
end
|
292
294
|
it "takes block form" do
|
293
|
-
@config.add_index_field("title_display") do |field|
|
295
|
+
@config.add_index_field("title_display") do |field|
|
294
296
|
field.label = "Title"
|
295
297
|
end
|
296
298
|
expect(@config.index_fields["title_display"]).to_not be_nil
|
297
299
|
expect(@config.index_fields["title_display"].label).to eq "Title"
|
298
300
|
end
|
299
|
-
|
301
|
+
|
300
302
|
it "creates default label from titleized field" do
|
301
303
|
@config.add_index_field("title_display")
|
302
|
-
|
304
|
+
|
303
305
|
expect(@config.index_fields["title_display"].label).to eq "Title Display"
|
304
306
|
end
|
305
|
-
|
307
|
+
|
306
308
|
it "raises on nil solr field name" do
|
307
309
|
expect { @config.add_index_field(nil) }.to raise_error ArgumentError
|
308
310
|
end
|
309
311
|
|
310
312
|
it "takes wild-carded field names and dereference them to solr fields" do
|
311
|
-
allow(
|
312
|
-
"some_field_display" => {},
|
313
|
+
allow(config).to receive(:reflected_fields).and_return(
|
314
|
+
"some_field_display" => {},
|
313
315
|
"another_field_display" => {},
|
314
|
-
"a_facet_field" => {}
|
315
|
-
|
316
|
-
|
316
|
+
"a_facet_field" => {}
|
317
|
+
)
|
318
|
+
config.add_index_field "*_display"
|
317
319
|
|
318
320
|
expect(@config.index_fields.keys).to eq ["some_field_display", "another_field_display"]
|
319
321
|
end
|
@@ -323,53 +325,53 @@ describe "Blacklight::Configuration" do
|
|
323
325
|
expect(@config.index_fields.keys).to include "subtitle_display", "subtitle_vern_display", "title_display", "title_vern_display"
|
324
326
|
end
|
325
327
|
end
|
326
|
-
|
328
|
+
|
327
329
|
describe "add_show_field" do
|
328
330
|
it "takes hash form" do
|
329
331
|
@config.add_show_field("title_display", :label => "Title")
|
330
|
-
|
332
|
+
|
331
333
|
expect(@config.show_fields["title_display"]).to_not be_nil
|
332
334
|
expect(@config.show_fields["title_display"].label).to eq "Title"
|
333
335
|
end
|
334
336
|
it "takes ShowField argument" do
|
335
337
|
@config.add_show_field("title_display", Blacklight::Configuration::ShowField.new(:field => "title_display", :label => "Title"))
|
336
|
-
|
338
|
+
|
337
339
|
expect(@config.show_fields["title_display"]).to_not be_nil
|
338
340
|
expect(@config.show_fields["title_display"].label).to eq "Title"
|
339
341
|
end
|
340
342
|
it "takes block form" do
|
341
|
-
@config.add_show_field("title_display") do |f|
|
343
|
+
@config.add_show_field("title_display") do |f|
|
342
344
|
f.label = "Title"
|
343
345
|
end
|
344
|
-
|
346
|
+
|
345
347
|
expect(@config.show_fields["title_display"]).to_not be_nil
|
346
348
|
expect(@config.show_fields["title_display"].label).to eq "Title"
|
347
349
|
end
|
348
|
-
|
350
|
+
|
349
351
|
it "creates default label humanized from field" do
|
350
352
|
@config.add_show_field("my_custom_field")
|
351
|
-
|
353
|
+
|
352
354
|
expect(@config.show_fields["my_custom_field"].label).to eq "My Custom Field"
|
353
355
|
end
|
354
|
-
|
356
|
+
|
355
357
|
it "raises on nil solr field name" do
|
356
358
|
expect { @config.add_show_field(nil) }.to raise_error ArgumentError
|
357
359
|
end
|
358
|
-
|
360
|
+
|
359
361
|
it "takes wild-carded field names and dereference them to solr fields" do
|
360
|
-
allow(
|
361
|
-
"some_field_display" => {},
|
362
|
+
allow(config).to receive(:reflected_fields).and_return(
|
363
|
+
"some_field_display" => {},
|
362
364
|
"another_field_display" => {},
|
363
|
-
"a_facet_field" => {}
|
364
|
-
|
365
|
-
|
365
|
+
"a_facet_field" => {}
|
366
|
+
)
|
367
|
+
config.add_show_field "*_display"
|
366
368
|
|
367
369
|
expect(@config.show_fields.keys).to eq ["some_field_display", "another_field_display"]
|
368
370
|
end
|
369
371
|
|
370
372
|
end
|
371
|
-
|
372
|
-
|
373
|
+
|
374
|
+
|
373
375
|
describe "add_search_field" do
|
374
376
|
it "accepts hash form" do
|
375
377
|
c = Blacklight::Configuration.new
|
@@ -379,55 +381,55 @@ describe "Blacklight::Configuration" do
|
|
379
381
|
|
380
382
|
it "accepts two-arg hash form" do
|
381
383
|
c = Blacklight::Configuration.new
|
382
|
-
|
384
|
+
|
383
385
|
c.add_search_field("my_search_type",
|
384
386
|
:key => "my_search_type",
|
385
|
-
:solr_parameters => { :qf => "my_field_qf^10" },
|
387
|
+
:solr_parameters => { :qf => "my_field_qf^10" },
|
386
388
|
:solr_local_parameters => { :pf=>"$my_field_pf"})
|
387
|
-
|
389
|
+
|
388
390
|
field = c.search_fields["my_search_type"]
|
389
|
-
|
391
|
+
|
390
392
|
expect(field).to_not be_nil
|
391
|
-
|
392
|
-
|
393
|
+
|
394
|
+
|
393
395
|
expect(field.solr_parameters).to_not be_nil
|
394
|
-
expect(field.solr_local_parameters).to_not be_nil
|
395
|
-
|
396
|
-
|
396
|
+
expect(field.solr_local_parameters).to_not be_nil
|
397
|
+
|
398
|
+
|
397
399
|
end
|
398
|
-
|
400
|
+
|
399
401
|
it "accepts block form" do
|
400
402
|
c = Blacklight::Configuration.new
|
401
|
-
|
402
|
-
c.add_search_field("some_field") do |field|
|
403
|
+
|
404
|
+
c.add_search_field("some_field") do |field|
|
403
405
|
field.solr_parameters = {:qf => "solr_field^10"}
|
404
406
|
field.solr_local_parameters = {:pf => "$some_field_pf"}
|
405
407
|
end
|
406
|
-
|
408
|
+
|
407
409
|
f = c.search_fields["some_field"]
|
408
|
-
|
410
|
+
|
409
411
|
expect(f).to_not be_nil
|
410
412
|
expect(f.solr_parameters).to_not be_nil
|
411
|
-
expect(f.solr_local_parameters).to_not be_nil
|
413
|
+
expect(f.solr_local_parameters).to_not be_nil
|
412
414
|
end
|
413
|
-
|
415
|
+
|
414
416
|
it "accepts SearchField object" do
|
415
417
|
c = Blacklight::Configuration.new
|
416
|
-
|
418
|
+
|
417
419
|
f = Blacklight::Configuration::SearchField.new( :foo => "bar")
|
418
|
-
|
420
|
+
|
419
421
|
c.add_search_field("foo", f)
|
420
|
-
|
422
|
+
|
421
423
|
expect(c.search_fields["foo"]).to_not be_nil
|
422
424
|
end
|
423
|
-
|
425
|
+
|
424
426
|
it "raises on nil key" do
|
425
427
|
expect {@config.add_search_field(nil, :foo => "bar")}.to raise_error ArgumentError
|
426
428
|
end
|
427
|
-
|
429
|
+
|
428
430
|
it "creates default label from titleized field key" do
|
429
431
|
@config.add_search_field("author_name")
|
430
|
-
|
432
|
+
|
431
433
|
expect(@config.search_fields["author_name"].label).to eq "Author Name"
|
432
434
|
end
|
433
435
|
|
@@ -447,7 +449,7 @@ describe "Blacklight::Configuration" do
|
|
447
449
|
end
|
448
450
|
end
|
449
451
|
end
|
450
|
-
|
452
|
+
|
451
453
|
describe "add_sort_field" do
|
452
454
|
it "takes a hash" do
|
453
455
|
c = Blacklight::Configuration.new
|
@@ -456,29 +458,29 @@ describe "Blacklight::Configuration" do
|
|
456
458
|
end
|
457
459
|
|
458
460
|
it "takes a two-arg form with a hash" do
|
459
|
-
@config.add_sort_field("score desc, pub_date_sort desc, title_sort asc", :label => "relevance")
|
461
|
+
@config.add_sort_field("score desc, pub_date_sort desc, title_sort asc", :label => "relevance")
|
462
|
+
|
460
463
|
|
461
|
-
|
462
464
|
expect(@config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
|
463
465
|
end
|
464
|
-
|
466
|
+
|
465
467
|
it "takes a SortField object" do
|
466
468
|
@config.add_sort_field(Blacklight::Configuration::SortField.new(:label => "relevance", :sort => "score desc, pub_date_sort desc, title_sort asc"
|
467
|
-
))
|
469
|
+
))
|
468
470
|
expect(@config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
|
469
471
|
end
|
470
|
-
|
472
|
+
|
471
473
|
it "takes block form" do
|
472
474
|
@config.add_sort_field do |field|
|
473
475
|
field.label = "relevance"
|
474
476
|
field.sort = "score desc, pub_date_sort desc, title_sort asc"
|
475
477
|
end
|
476
|
-
|
478
|
+
|
477
479
|
expect(@config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
|
478
480
|
|
479
481
|
end
|
480
482
|
end
|
481
|
-
|
483
|
+
|
482
484
|
describe "#default_search_field" do
|
483
485
|
it "uses the field with a :default key" do
|
484
486
|
@config.add_search_field('search_field_1')
|