blacklight 6.2.0 → 6.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/.solr_wrapper +5 -0
- data/.travis.yml +3 -5
- data/Gemfile +3 -3
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/core.js +19 -5
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +48 -20
- data/app/helpers/blacklight/configuration_helper_behavior.rb +1 -1
- data/app/helpers/blacklight/url_helper_behavior.rb +2 -1
- data/app/presenters/blacklight/document_presenter.rb +58 -150
- data/app/presenters/blacklight/field_presenter.rb +31 -0
- data/app/presenters/blacklight/index_presenter.rb +69 -0
- data/app/presenters/blacklight/link_alternate_presenter.rb +29 -0
- data/app/presenters/blacklight/rendering/abstract_step.rb +24 -0
- data/app/presenters/blacklight/rendering/helper_method.rb +23 -0
- data/app/presenters/blacklight/rendering/join.rb +16 -0
- data/app/presenters/blacklight/rendering/link_to_facet.rb +35 -0
- data/app/presenters/blacklight/rendering/microdata.rb +17 -0
- data/app/presenters/blacklight/rendering/pipeline.rb +32 -0
- data/app/presenters/blacklight/rendering/terminator.rb +9 -0
- data/app/presenters/blacklight/show_presenter.rb +93 -0
- data/app/services/blacklight/field_retriever.rb +58 -0
- data/app/views/catalog/_document_default.atom.builder +2 -3
- data/app/views/catalog/_document_default.rss.builder +2 -2
- data/app/views/kaminari/blacklight/_next_page.html.erb +9 -3
- data/app/views/kaminari/blacklight/_prev_page.html.erb +10 -3
- data/lib/blacklight/configuration.rb +15 -3
- data/lib/blacklight/configuration/null_field.rb +13 -0
- data/lib/blacklight/configuration/view_config.rb +6 -0
- data/lib/generators/blacklight/templates/catalog_controller.rb +1 -1
- data/lib/generators/blacklight/templates/config/blacklight.yml +1 -1
- data/lib/generators/blacklight/templates/config/jetty.yml +1 -1
- data/spec/controllers/alternate_controller_spec.rb +2 -2
- data/spec/controllers/application_controller_spec.rb +1 -1
- data/spec/controllers/blacklight/facet_spec.rb +3 -3
- data/spec/controllers/blacklight/search_fields_spec.rb +7 -7
- data/spec/controllers/blacklight/search_helper_spec.rb +44 -44
- data/spec/controllers/blacklight/suggest_search_spec.rb +1 -1
- data/spec/controllers/bookmarks_controller_spec.rb +6 -6
- data/spec/controllers/catalog_controller_spec.rb +125 -125
- data/spec/controllers/saved_searches_controller_spec.rb +4 -9
- data/spec/controllers/search_history_controller_spec.rb +3 -6
- data/spec/controllers/suggest_controller_spec.rb +2 -2
- data/spec/features/alternate_controller_spec.rb +3 -3
- data/spec/features/bookmarks_spec.rb +6 -6
- data/spec/features/did_you_mean_spec.rb +10 -10
- data/spec/features/facets_spec.rb +4 -4
- data/spec/features/record_view_spec.rb +4 -4
- data/spec/features/saved_searches_spec.rb +4 -4
- data/spec/features/search_context_spec.rb +4 -4
- data/spec/features/search_filters_spec.rb +10 -10
- data/spec/features/search_formats_spec.rb +2 -2
- data/spec/features/search_history_spec.rb +5 -5
- data/spec/features/search_pagination_spec.rb +4 -4
- data/spec/features/search_results_spec.rb +7 -7
- data/spec/features/search_sort_spec.rb +2 -2
- data/spec/features/search_spec.rb +6 -6
- data/spec/helpers/blacklight_helper_spec.rb +105 -65
- data/spec/helpers/catalog_helper_spec.rb +36 -36
- data/spec/helpers/configuration_helper_spec.rb +28 -28
- data/spec/helpers/facets_helper_spec.rb +39 -39
- data/spec/helpers/hash_as_hidden_fields_spec.rb +1 -1
- data/spec/helpers/render_constraints_helper_spec.rb +1 -1
- data/spec/helpers/search_history_constraints_helper_spec.rb +7 -7
- data/spec/helpers/url_helper_spec.rb +20 -17
- data/spec/lib/blacklight/search_state_spec.rb +2 -2
- data/spec/lib/blacklight/utils_spec.rb +15 -15
- data/spec/lib/blacklight_spec.rb +1 -1
- data/spec/lib/tasks/blacklight_task_spec.rb +1 -1
- data/spec/models/blacklight/configurable_spec.rb +3 -3
- data/spec/models/blacklight/configuration_spec.rb +52 -52
- data/spec/models/blacklight/document_spec.rb +10 -10
- data/spec/models/blacklight/facet_paginator_spec.rb +5 -5
- data/spec/models/blacklight/search_builder_spec.rb +34 -34
- data/spec/models/blacklight/user_spec.rb +4 -4
- data/spec/models/bookmark_spec.rb +5 -5
- data/spec/models/record_mailer_spec.rb +11 -11
- data/spec/models/search_spec.rb +1 -1
- data/spec/models/solr_document_spec.rb +4 -4
- data/spec/presenters/document_presenter_spec.rb +94 -50
- data/spec/presenters/index_presenter_spec.rb +147 -0
- data/spec/presenters/pipeline_spec.rb +28 -0
- data/spec/presenters/show_presenter_spec.rb +287 -0
- data/spec/routing/catalog_routing_spec.rb +11 -11
- data/spec/spec_helper.rb +10 -1
- data/spec/support/backport_test.rb +38 -0
- data/spec/test_app_templates/Gemfile.extra +2 -10
- data/spec/views/_user_util_links.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_constraints.html.erb_spec.rb +3 -3
- data/spec/views/catalog/_constraints_element.html.erb_spec.rb +5 -5
- data/spec/views/catalog/_document.html.erb_spec.rb +2 -2
- data/spec/views/catalog/_document_list.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +4 -4
- data/spec/views/catalog/_facets.html.erb_spec.rb +4 -4
- data/spec/views/catalog/_index_default.erb_spec.rb +5 -4
- data/spec/views/catalog/_index_header_default.html.erb_spec.rb +4 -3
- data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +3 -3
- data/spec/views/catalog/_search_header.erb_spec.rb +1 -1
- data/spec/views/catalog/_show_default.erb_spec.rb +6 -5
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +2 -1
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +8 -8
- data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +2 -2
- data/spec/views/catalog/_thumbnail_default.erb_spec.rb +3 -2
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +3 -3
- data/spec/views/catalog/facet.html.erb_spec.rb +3 -3
- data/spec/views/catalog/index.atom.builder_spec.rb +15 -14
- data/spec/views/catalog/index.html.erb_spec.rb +3 -3
- data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
- data/spec/views/catalog/show.html.erb_spec.rb +5 -4
- data/tasks/blacklight.rake +1 -1
- metadata +25 -4
- data/config/jetty.yml +0 -13
@@ -11,7 +11,7 @@ describe FacetsHelper do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
describe "has_facet_values?" do
|
14
|
-
it "
|
14
|
+
it "is true if there are any facets to display" do
|
15
15
|
|
16
16
|
a = double(:items => [1,2], :name => 'a')
|
17
17
|
b = double(:items => ['b','c'], :name => 'b')
|
@@ -21,7 +21,7 @@ describe FacetsHelper do
|
|
21
21
|
expect(helper.has_facet_values?(fields)).to be true
|
22
22
|
end
|
23
23
|
|
24
|
-
it "
|
24
|
+
it "is false if all facets are empty" do
|
25
25
|
|
26
26
|
empty = double(:items => [])
|
27
27
|
|
@@ -29,7 +29,7 @@ describe FacetsHelper do
|
|
29
29
|
expect(helper.has_facet_values?(fields)).to be false
|
30
30
|
end
|
31
31
|
|
32
|
-
it "
|
32
|
+
it "is false if no facets are displayable" do
|
33
33
|
@config = Blacklight::Configuration.new do |config|
|
34
34
|
config.add_facet_field 'basic_field', :if => false
|
35
35
|
end
|
@@ -57,34 +57,34 @@ describe FacetsHelper do
|
|
57
57
|
allow(helper).to receive_messages(:blacklight_config => @config)
|
58
58
|
end
|
59
59
|
|
60
|
-
it "
|
60
|
+
it "renders facets with items" do
|
61
61
|
a = double(:items => [1,2], :name=>'basic_field')
|
62
62
|
expect(helper.should_render_facet?(a)).to be true
|
63
63
|
end
|
64
|
-
it "
|
64
|
+
it "does not render facets without items" do
|
65
65
|
empty = double(:items => [], :name=>'basic_field')
|
66
66
|
expect(helper.should_render_facet?(empty)).to be false
|
67
67
|
end
|
68
68
|
|
69
|
-
it "
|
69
|
+
it "does not render facets where show is set to false" do
|
70
70
|
a = double(:items => [1,2], :name=>'no_show')
|
71
71
|
expect(helper.should_render_facet?(a)).to be false
|
72
72
|
end
|
73
73
|
|
74
|
-
it "
|
74
|
+
it "calls a helper to determine if it should render a field" do
|
75
75
|
allow(controller).to receive_messages(:my_custom_check => true)
|
76
76
|
a = double(:items => [1,2], :name=>'helper_show')
|
77
77
|
expect(helper.should_render_facet?(a)).to be true
|
78
78
|
end
|
79
79
|
|
80
|
-
it "
|
80
|
+
it "calls a helper to determine if it should render a field" do
|
81
81
|
a = double(:items => [1,2], :name=>'helper_with_an_arg_show')
|
82
82
|
allow(controller).to receive(:my_custom_check_with_an_arg).with(@config.facet_fields['helper_with_an_arg_show'], a).and_return(true)
|
83
83
|
expect(helper.should_render_facet?(a)).to be true
|
84
84
|
end
|
85
85
|
|
86
86
|
|
87
|
-
it "
|
87
|
+
it "evaluates a Proc to determine if it should render a field" do
|
88
88
|
a = double(:items => [1,2], :name=>'lambda_show')
|
89
89
|
expect(helper.should_render_facet?(a)).to be true
|
90
90
|
|
@@ -103,15 +103,15 @@ describe FacetsHelper do
|
|
103
103
|
allow(helper).to receive_messages(blacklight_config: @config)
|
104
104
|
end
|
105
105
|
|
106
|
-
it "
|
106
|
+
it "is collapsed by default" do
|
107
107
|
expect(helper.should_collapse_facet?(@config.facet_fields['basic_field'])).to be true
|
108
108
|
end
|
109
109
|
|
110
|
-
it "
|
110
|
+
it "does not be collapsed if the configuration says so" do
|
111
111
|
expect(helper.should_collapse_facet?(@config.facet_fields['no_collapse'])).to be false
|
112
112
|
end
|
113
113
|
|
114
|
-
it "
|
114
|
+
it "does not be collapsed if it is in the params" do
|
115
115
|
params[:f] = ActiveSupport::HashWithIndifferentAccess.new(basic_field: [1], no_collapse: [2])
|
116
116
|
expect(helper.should_collapse_facet?(@config.facet_fields['basic_field'])).to be false
|
117
117
|
expect(helper.should_collapse_facet?(@config.facet_fields['no_collapse'])).to be false
|
@@ -120,7 +120,7 @@ describe FacetsHelper do
|
|
120
120
|
end
|
121
121
|
|
122
122
|
describe "facet_by_field_name" do
|
123
|
-
it "
|
123
|
+
it "retrieves the facet from the response given a string" do
|
124
124
|
facet_config = double(:query => nil, field: 'a', key: 'a')
|
125
125
|
facet_field = double()
|
126
126
|
allow(helper).to receive(:facet_configuration_for_field).with(anything()).and_return(facet_config)
|
@@ -134,7 +134,7 @@ describe FacetsHelper do
|
|
134
134
|
|
135
135
|
|
136
136
|
describe "render_facet_partials" do
|
137
|
-
it "
|
137
|
+
it "tries to render all provided facets" do
|
138
138
|
a = double(:items => [1,2])
|
139
139
|
b = double(:items => ['b','c'])
|
140
140
|
empty = double(:items => [])
|
@@ -148,7 +148,7 @@ describe FacetsHelper do
|
|
148
148
|
helper.render_facet_partials fields
|
149
149
|
end
|
150
150
|
|
151
|
-
it "
|
151
|
+
it "defaults to the configured facets" do
|
152
152
|
a = double(:items => [1,2])
|
153
153
|
b = double(:items => ['b','c'])
|
154
154
|
allow(helper).to receive(:facet_field_names) { [a,b] }
|
@@ -175,7 +175,7 @@ describe FacetsHelper do
|
|
175
175
|
@response = double()
|
176
176
|
end
|
177
177
|
|
178
|
-
it "
|
178
|
+
it "sets basic local variables" do
|
179
179
|
@mock_facet = double(:name => 'basic_field', :items => [1,2,3])
|
180
180
|
allow(helper).to receive(:render).with(hash_including(:partial => 'facet_limit',
|
181
181
|
:locals => {
|
@@ -187,37 +187,37 @@ describe FacetsHelper do
|
|
187
187
|
helper.render_facet_limit(@mock_facet)
|
188
188
|
end
|
189
189
|
|
190
|
-
it "
|
190
|
+
it "renders a facet _not_ declared in the configuration" do
|
191
191
|
@mock_facet = double(:name => 'asdf', :items => [1,2,3])
|
192
192
|
allow(helper).to receive(:render).with(hash_including(:partial => 'facet_limit'))
|
193
193
|
helper.render_facet_limit(@mock_facet)
|
194
194
|
end
|
195
195
|
|
196
|
-
it "
|
196
|
+
it "gets the partial name from the configuration" do
|
197
197
|
@mock_facet = double(:name => 'my_facet_field_with_custom_partial', :items => [1,2,3])
|
198
198
|
allow(helper).to receive(:render).with(hash_including(:partial => 'custom_facet_partial'))
|
199
199
|
helper.render_facet_limit(@mock_facet)
|
200
200
|
end
|
201
201
|
|
202
|
-
it "
|
202
|
+
it "uses a partial layout for rendering the facet frame" do
|
203
203
|
@mock_facet = double(:name => 'my_facet_field_with_custom_partial', :items => [1,2,3])
|
204
204
|
allow(helper).to receive(:render).with(hash_including(:layout => 'facet_layout'))
|
205
205
|
helper.render_facet_limit(@mock_facet)
|
206
206
|
end
|
207
207
|
|
208
|
-
it "
|
208
|
+
it "allows the caller to opt-out of facet layouts" do
|
209
209
|
@mock_facet = double(:name => 'my_facet_field_with_custom_partial', :items => [1,2,3])
|
210
210
|
allow(helper).to receive(:render).with(hash_including(:layout => nil))
|
211
211
|
helper.render_facet_limit(@mock_facet, :layout => nil)
|
212
212
|
end
|
213
213
|
|
214
|
-
it "
|
214
|
+
it "renders the facet_pivot partial for pivot facets" do
|
215
215
|
@mock_facet = double(:name => 'pivot_facet_field', :items => [1,2,3])
|
216
216
|
allow(helper).to receive(:render).with(hash_including(:partial => 'facet_pivot'))
|
217
217
|
helper.render_facet_limit(@mock_facet)
|
218
218
|
end
|
219
219
|
|
220
|
-
it "
|
220
|
+
it "lets you override the rendered partial for pivot facets" do
|
221
221
|
@mock_facet = double(:name => 'my_pivot_facet_field_with_custom_partial', :items => [1,2,3])
|
222
222
|
allow(helper).to receive(:render).with(hash_including(:partial => 'custom_facet_partial'))
|
223
223
|
helper.render_facet_limit(@mock_facet)
|
@@ -234,7 +234,7 @@ describe FacetsHelper do
|
|
234
234
|
search_catalog_path *args
|
235
235
|
end
|
236
236
|
end
|
237
|
-
it "
|
237
|
+
it "draws a list of elements" do
|
238
238
|
expect(subject).to have_selector 'li', count: 2
|
239
239
|
expect(subject).to have_selector 'li:first-child a.facet_select', text: 'Book'
|
240
240
|
expect(subject).to have_selector 'li:nth-child(2) a.facet_select', text: 'Musical Score'
|
@@ -245,7 +245,7 @@ describe FacetsHelper do
|
|
245
245
|
|
246
246
|
before { allow(helper).to receive(:render_facet_item).and_return("<a class=\"facet_select\">Book</a>".html_safe, nil) }
|
247
247
|
|
248
|
-
it "
|
248
|
+
it "draws a list of elements" do
|
249
249
|
expect(subject).to have_selector 'li', count: 1
|
250
250
|
expect(subject).to have_selector 'li:first-child a.facet_select', text: 'Book'
|
251
251
|
end
|
@@ -254,7 +254,7 @@ describe FacetsHelper do
|
|
254
254
|
end
|
255
255
|
|
256
256
|
describe "facet_field_in_params?" do
|
257
|
-
it "
|
257
|
+
it "checks if the facet field is selected in the user params" do
|
258
258
|
allow(helper).to receive_messages(:params => { :f => { "some-field" => ["x"]}})
|
259
259
|
expect(helper.facet_field_in_params?("some-field")).to be_truthy
|
260
260
|
expect(helper.facet_field_in_params?("other-field")).to_not be true
|
@@ -262,12 +262,12 @@ describe FacetsHelper do
|
|
262
262
|
end
|
263
263
|
|
264
264
|
describe "facet_params" do
|
265
|
-
it "
|
265
|
+
it "extracts the facet parameters for a field" do
|
266
266
|
allow(helper).to receive_messages(params: { f: { "some-field" => ["x"] }})
|
267
267
|
expect(helper.facet_params("some-field")).to match_array ["x"]
|
268
268
|
end
|
269
269
|
|
270
|
-
it "
|
270
|
+
it "uses the blacklight key to extract the right fields" do
|
271
271
|
blacklight_config.add_facet_field "some-key", field: "some-field"
|
272
272
|
allow(helper).to receive_messages(params: { f: { "some-key" => ["x"] }})
|
273
273
|
expect(helper.facet_params("some-key")).to match_array ["x"]
|
@@ -276,25 +276,25 @@ describe FacetsHelper do
|
|
276
276
|
end
|
277
277
|
|
278
278
|
describe "facet_field_in_params?" do
|
279
|
-
it "
|
279
|
+
it "checks if any value is selected for a given facet" do
|
280
280
|
allow(helper).to receive_messages(facet_params: ["x"])
|
281
281
|
expect(helper.facet_field_in_params?("some-facet")).to eq true
|
282
282
|
end
|
283
283
|
|
284
|
-
it "
|
284
|
+
it "is false if no value for facet is selected" do
|
285
285
|
allow(helper).to receive_messages(facet_params: nil)
|
286
286
|
expect(helper.facet_field_in_params?("some-facet")).to eq false
|
287
287
|
end
|
288
288
|
end
|
289
289
|
|
290
290
|
describe "facet_in_params?" do
|
291
|
-
it "
|
291
|
+
it "checks if a particular value is set in the facet params" do
|
292
292
|
allow(helper).to receive_messages(facet_params: ["x"])
|
293
293
|
expect(helper.facet_in_params?("some-facet", "x")).to eq true
|
294
294
|
expect(helper.facet_in_params?("some-facet", "y")).to eq false
|
295
295
|
end
|
296
296
|
|
297
|
-
it "
|
297
|
+
it "is false if no value for facet is selected" do
|
298
298
|
allow(helper).to receive_messages(facet_params: nil)
|
299
299
|
expect(helper.facet_in_params?("some-facet", "x")).to eq false
|
300
300
|
end
|
@@ -322,7 +322,7 @@ describe FacetsHelper do
|
|
322
322
|
|
323
323
|
describe "when :url_method is set" do
|
324
324
|
let(:expected_html) { "<span class=\"facet-label\"><a class=\"facet_select\" href=\"/blabla\">Z</a></span><span class=\"facet-count\">10</span>" }
|
325
|
-
it "
|
325
|
+
it "uses that method" do
|
326
326
|
allow(helper).to receive(:facet_configuration_for_field).with('simple_field').and_return(double(:query => nil, :date => nil, :helper_method => nil, :single => false, :url_method => :test_method))
|
327
327
|
allow(helper).to receive(:test_method).with('simple_field', item).and_return('/blabla')
|
328
328
|
result = helper.render_facet_value('simple_field', item)
|
@@ -332,7 +332,7 @@ describe FacetsHelper do
|
|
332
332
|
|
333
333
|
describe "when :suppress_link is set" do
|
334
334
|
let(:expected_html) { "<span class=\"facet-label\">Z</span><span class=\"facet-count\">10</span>" }
|
335
|
-
it "
|
335
|
+
it "suppresses the link" do
|
336
336
|
result = helper.render_facet_value('simple_field', item, :suppress_link => true)
|
337
337
|
expect(result).to be_equivalent_to(expected_html).respecting_element_order
|
338
338
|
end
|
@@ -340,12 +340,12 @@ describe FacetsHelper do
|
|
340
340
|
end
|
341
341
|
|
342
342
|
describe "#facet_display_value" do
|
343
|
-
it "
|
343
|
+
it "justs be the facet value for an ordinary facet" do
|
344
344
|
allow(helper).to receive(:facet_configuration_for_field).with('simple_field').and_return(double(:query => nil, :date => nil, :helper_method => nil, :url_method => nil))
|
345
345
|
expect(helper.facet_display_value('simple_field', 'asdf')).to eq 'asdf'
|
346
346
|
end
|
347
347
|
|
348
|
-
it "
|
348
|
+
it "allows you to pass in a :helper_method argument to the configuration" do
|
349
349
|
allow(helper).to receive(:facet_configuration_for_field).with('helper_field').and_return(double(:query => nil, :date => nil, :url_method => nil, :helper_method => :my_facet_value_renderer))
|
350
350
|
|
351
351
|
allow(helper).to receive(:my_facet_value_renderer).with('qwerty').and_return('abc')
|
@@ -353,24 +353,24 @@ describe FacetsHelper do
|
|
353
353
|
expect(helper.facet_display_value('helper_field', 'qwerty')).to eq 'abc'
|
354
354
|
end
|
355
355
|
|
356
|
-
it "
|
356
|
+
it "extracts the configuration label for a query facet" do
|
357
357
|
allow(helper).to receive(:facet_configuration_for_field).with('query_facet').and_return(double(:query => { 'query_key' => { :label => 'XYZ'}}, :date => nil, :helper_method => nil, :url_method => nil))
|
358
358
|
expect(helper.facet_display_value('query_facet', 'query_key')).to eq 'XYZ'
|
359
359
|
end
|
360
360
|
|
361
|
-
it "
|
361
|
+
it "localizes the label for date-type facets" do
|
362
362
|
allow(helper).to receive(:facet_configuration_for_field).with('date_facet').and_return(double('date' => true, :query => nil, :helper_method => nil, :url_method => nil))
|
363
363
|
expect(helper.facet_display_value('date_facet', '2012-01-01')).to eq 'Sun, 01 Jan 2012 00:00:00 +0000'
|
364
364
|
end
|
365
365
|
|
366
|
-
it "
|
366
|
+
it "localizes the label for date-type facets with the supplied localization options" do
|
367
367
|
allow(helper).to receive(:facet_configuration_for_field).with('date_facet').and_return(double('date' => { :format => :short }, :query => nil, :helper_method => nil, :url_method => nil))
|
368
368
|
expect(helper.facet_display_value('date_facet', '2012-01-01')).to eq '01 Jan 00:00'
|
369
369
|
end
|
370
370
|
end
|
371
371
|
|
372
372
|
describe "#facet_field_id" do
|
373
|
-
it "
|
373
|
+
it "is the parameterized version of the facet field" do
|
374
374
|
expect(helper.facet_field_id double(key: 'some field')).to eq "facet-some-field"
|
375
375
|
end
|
376
376
|
end
|
@@ -7,7 +7,7 @@ describe HashAsHiddenFieldsHelper do
|
|
7
7
|
@hash = {:q => "query", :search_field => "search_field", :per_page=>10, :page=>5, :extra_arbitrary_key=>"arbitrary_value", :f=> {:field1 => ["a", "b"], :field2=> ["z"]}}
|
8
8
|
end
|
9
9
|
|
10
|
-
it "
|
10
|
+
it "converts a hash with nested complex data to Rails-style hidden form fields" do
|
11
11
|
|
12
12
|
generated = render_hash_as_hidden_fields(@hash)
|
13
13
|
|
@@ -58,7 +58,7 @@ describe RenderConstraintsHelper do
|
|
58
58
|
end
|
59
59
|
subject { helper.render_constraints_filters(params) }
|
60
60
|
|
61
|
-
it "
|
61
|
+
it "renders nothing for empty facet limit param" do
|
62
62
|
expect(subject).to be_blank
|
63
63
|
end
|
64
64
|
end
|
@@ -22,7 +22,7 @@ describe SearchHistoryConstraintsHelper do
|
|
22
22
|
|
23
23
|
describe "render_search_to_s_*" do
|
24
24
|
describe "render_search_to_s_element" do
|
25
|
-
it "
|
25
|
+
it "renders basic element" do
|
26
26
|
response = helper.render_search_to_s_element("key", "value")
|
27
27
|
expect(response).to have_selector("span.constraint") do |span|
|
28
28
|
expect(span).to have_selector("span.filterName", :content => "key:")
|
@@ -30,7 +30,7 @@ describe SearchHistoryConstraintsHelper do
|
|
30
30
|
end
|
31
31
|
expect(response).to be_html_safe
|
32
32
|
end
|
33
|
-
it "
|
33
|
+
it "escapes them that need escaping" do
|
34
34
|
response = helper.render_search_to_s_element("key>", "value>")
|
35
35
|
expect(response).to have_selector("span.constraint") do |span|
|
36
36
|
expect(span).to have_selector("span.filterName") do |s2|
|
@@ -45,7 +45,7 @@ describe SearchHistoryConstraintsHelper do
|
|
45
45
|
end
|
46
46
|
expect(response).to be_html_safe
|
47
47
|
end
|
48
|
-
it "
|
48
|
+
it "does not escape with options set thus" do
|
49
49
|
response = helper.render_search_to_s_element("key>", "value>", :escape_key => false, :escape_value => false)
|
50
50
|
expect(response).to have_selector("span.constraint") do |span|
|
51
51
|
expect(span).to have_selector("span.filterName", :content => "key>:")
|
@@ -59,7 +59,7 @@ describe SearchHistoryConstraintsHelper do
|
|
59
59
|
before do
|
60
60
|
@params = {:q => "history", :f => {"some_facet" => ["value1", "value1"], "other_facet" => ["other1"]}}
|
61
61
|
end
|
62
|
-
it "
|
62
|
+
it "calls lesser methods" do
|
63
63
|
allow(helper).to receive(:blacklight_config).and_return(@config)
|
64
64
|
allow(helper).to receive(:default_search_field).and_return(Blacklight::Configuration::SearchField.new(:key => 'default_search_field', :display_label => 'Default'))
|
65
65
|
allow(helper).to receive(:label_for_search_field).with(nil).and_return('')
|
@@ -73,12 +73,12 @@ describe SearchHistoryConstraintsHelper do
|
|
73
73
|
end
|
74
74
|
|
75
75
|
describe "render_search_to_s_filters" do
|
76
|
-
it "
|
76
|
+
it "renders a constraint for a selected facet in the config" do
|
77
77
|
response = helper.render_search_to_s_filters(:f => {"some_facet" => ["value1", "value2"]})
|
78
78
|
expect(response).to eq("<span class=\"constraint\"><span class=\"filterName\">Some:</span><span class=\"filterValues\"><span class=\"filterValue\">value1</span><span class=\"filterSeparator\"> and </span><span class=\"filterValue\">value2</span></span></span>")
|
79
79
|
end
|
80
80
|
|
81
|
-
it "
|
81
|
+
it "renders a constraint for a selected facet not in the config" do
|
82
82
|
response = helper.render_search_to_s_filters(:f => {"undefined_facet" => ["value1", "value2"]})
|
83
83
|
expect(response).to eq("<span class=\"constraint\"><span class=\"filterName\">#{'undefined_facet'.humanize}:</span><span class=\"filterValues\"><span class=\"filterValue\">value1</span><span class=\"filterSeparator\"> and </span><span class=\"filterValue\">value2</span></span></span>")
|
84
84
|
end
|
@@ -92,7 +92,7 @@ describe SearchHistoryConstraintsHelper do
|
|
92
92
|
I18n.locale = @orig_locale
|
93
93
|
end
|
94
94
|
|
95
|
-
it '
|
95
|
+
it 'renders the correct I18n label for a selected facet with I18n translations' do
|
96
96
|
{en: 'English facet label', de: 'German facet label'}.each do |locale, label|
|
97
97
|
I18n.locale = locale
|
98
98
|
response = helper.render_search_to_s_filters(f: {'i18n_facet' => ['value1', 'value2']})
|
@@ -32,11 +32,11 @@ describe BlacklightUrlHelper do
|
|
32
32
|
allow(helper).to receive_messages(params: parameter_class.new)
|
33
33
|
end
|
34
34
|
|
35
|
-
it "
|
35
|
+
it "is a polymorphic routing-ready object" do
|
36
36
|
expect(helper.url_for_document(doc)).to eq doc
|
37
37
|
end
|
38
38
|
|
39
|
-
it "
|
39
|
+
it "allows for custom show routes" do
|
40
40
|
helper.blacklight_config.show.route = { controller: 'catalog' }
|
41
41
|
expect(helper.url_for_document(doc)).to eq({controller: 'catalog', action: :show, id: doc})
|
42
42
|
end
|
@@ -44,7 +44,7 @@ describe BlacklightUrlHelper do
|
|
44
44
|
context "within bookmarks" do
|
45
45
|
let(:controller_class) { ::BookmarksController.new }
|
46
46
|
|
47
|
-
it "
|
47
|
+
it "uses polymorphic routing" do
|
48
48
|
expect(helper.url_for_document(doc)).to eq doc
|
49
49
|
end
|
50
50
|
end
|
@@ -57,12 +57,12 @@ describe BlacklightUrlHelper do
|
|
57
57
|
allow(helper).to receive(:params).and_return(parameter_class.new controller: 'alternate')
|
58
58
|
end
|
59
59
|
|
60
|
-
it "
|
60
|
+
it "supports the :current controller configuration" do
|
61
61
|
expect(helper.url_for_document(doc)).to eq(controller: 'alternate', action: :show, id: doc)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
it "
|
65
|
+
it "is a polymorphic route if the solr document responds to #to_model with a non-SolrDocument" do
|
66
66
|
some_model = double
|
67
67
|
doc = SolrDocument.new
|
68
68
|
allow(doc).to receive_messages(to_model: some_model)
|
@@ -74,7 +74,7 @@ describe BlacklightUrlHelper do
|
|
74
74
|
let(:query_params) {{:q => "query", :f => "facets", :controller=>'catalog'}}
|
75
75
|
let(:bookmarks_query_params) {{ :controller=>'bookmarks'}}
|
76
76
|
|
77
|
-
it "
|
77
|
+
it "builds a link tag to catalog using session[:search] for query params" do
|
78
78
|
allow(helper).to receive(:current_search_session).and_return double(:query_params => query_params)
|
79
79
|
tag = helper.link_back_to_catalog
|
80
80
|
expect(tag).to match /q=query/
|
@@ -83,7 +83,7 @@ describe BlacklightUrlHelper do
|
|
83
83
|
expect(tag).to_not match /per_page=/
|
84
84
|
end
|
85
85
|
|
86
|
-
it "
|
86
|
+
it "builds a link tag to bookmarks using session[:search] for query params" do
|
87
87
|
allow(helper).to receive(:current_search_session).and_return double(:query_params => bookmarks_query_params)
|
88
88
|
tag = helper.link_back_to_catalog
|
89
89
|
expect(tag).to match /Back to Bookmarks/
|
@@ -92,7 +92,7 @@ describe BlacklightUrlHelper do
|
|
92
92
|
|
93
93
|
context "with a search context" do
|
94
94
|
|
95
|
-
it "
|
95
|
+
it "uses the current search session counter and per page information to construct the appropriate pagination context" do
|
96
96
|
allow(helper).to receive_messages(current_search_session: double(query_params: query_params))
|
97
97
|
allow(helper).to receive_messages(search_session: { 'per_page' => 15, 'counter' => 31 })
|
98
98
|
tag = helper.link_back_to_catalog
|
@@ -100,7 +100,7 @@ describe BlacklightUrlHelper do
|
|
100
100
|
expect(tag).to match /per_page=15/
|
101
101
|
end
|
102
102
|
|
103
|
-
it "
|
103
|
+
it "omits per_page if the value is the same as the default" do
|
104
104
|
allow(helper).to receive_messages(current_search_session: double(query_params: query_params))
|
105
105
|
allow(helper).to receive_messages(search_session: { 'per_page' => 10, 'counter' => 31 })
|
106
106
|
tag = helper.link_back_to_catalog
|
@@ -121,7 +121,7 @@ describe BlacklightUrlHelper do
|
|
121
121
|
|
122
122
|
subject { helper.link_back_to_catalog }
|
123
123
|
|
124
|
-
it "
|
124
|
+
it "links to the catalog" do
|
125
125
|
expect(subject).to eq '<a href="/catalog">Back to Search</a>'
|
126
126
|
end
|
127
127
|
end
|
@@ -129,7 +129,7 @@ describe BlacklightUrlHelper do
|
|
129
129
|
context "when an alternate scope is passed in" do
|
130
130
|
let(:my_engine) { double("Engine") }
|
131
131
|
|
132
|
-
it "
|
132
|
+
it "calls url_for on the engine scope" do
|
133
133
|
allow(helper).to receive(:current_search_session).and_return double(:query_params => query_params)
|
134
134
|
expect(my_engine).to receive(:url_for).and_return(url_for(query_params))
|
135
135
|
tag = helper.link_back_to_catalog(route_set: my_engine)
|
@@ -181,13 +181,13 @@ describe BlacklightUrlHelper do
|
|
181
181
|
end
|
182
182
|
|
183
183
|
describe "start_over_path" do
|
184
|
-
it '
|
184
|
+
it 'is the catalog path with the current view type' do
|
185
185
|
allow(blacklight_config).to receive(:view) { { list: nil, abc: nil} }
|
186
186
|
allow(helper).to receive_messages(:blacklight_config => blacklight_config)
|
187
187
|
expect(helper.start_over_path(:view => 'abc')).to eq search_catalog_url(:view => 'abc')
|
188
188
|
end
|
189
189
|
|
190
|
-
it '
|
190
|
+
it 'does not include the current view type if it is the default' do
|
191
191
|
allow(blacklight_config).to receive(:view) { { list: nil, asdf: nil} }
|
192
192
|
allow(helper).to receive_messages(:blacklight_config => blacklight_config)
|
193
193
|
expect(helper.start_over_path(:view => 'list')).to eq search_catalog_url
|
@@ -199,6 +199,9 @@ describe BlacklightUrlHelper do
|
|
199
199
|
let(:id) { '123456' }
|
200
200
|
let(:data) { { 'id' => id, 'title_display' => [title_display] } }
|
201
201
|
let(:document) { SolrDocument.new(data) }
|
202
|
+
before do
|
203
|
+
allow(controller).to receive(:action_name).and_return('index')
|
204
|
+
end
|
202
205
|
|
203
206
|
it "consists of the document title wrapped in a <a>" do
|
204
207
|
expect(helper.link_to_document(document, :title_display)).to have_selector("a", :text => '654321', :count => 1)
|
@@ -264,14 +267,14 @@ describe BlacklightUrlHelper do
|
|
264
267
|
|
265
268
|
describe "link_to_previous_search" do
|
266
269
|
let(:params) { {} }
|
267
|
-
it "
|
270
|
+
it "links to the given search parameters" do
|
268
271
|
allow(helper).to receive(:render_search_to_s).with(params).and_return "link text"
|
269
272
|
expect(helper.link_to_previous_search({})).to eq helper.link_to("link text", helper.search_action_path)
|
270
273
|
end
|
271
274
|
end
|
272
275
|
|
273
276
|
describe "#bookmarks_export_url" do
|
274
|
-
it "
|
277
|
+
it "is the bookmark url with an encrypted user token" do
|
275
278
|
allow(helper).to receive_messages(encrypt_user_id: 'xyz', current_or_guest_user: double(id: 123))
|
276
279
|
url = helper.bookmarks_export_url(:html)
|
277
280
|
expect(url).to eq helper.bookmarks_url(format: :html, encrypted_user_id: 'xyz')
|
@@ -280,12 +283,12 @@ describe BlacklightUrlHelper do
|
|
280
283
|
|
281
284
|
describe "#session_tracking_path" do
|
282
285
|
let(:document) { SolrDocument.new(id: 1) }
|
283
|
-
it "
|
286
|
+
it "determines the correct route for the document class" do
|
284
287
|
allow(helper).to receive(:track_test_path).with(id: 1).and_return('x')
|
285
288
|
expect(helper.session_tracking_path(document)).to eq 'x'
|
286
289
|
end
|
287
290
|
|
288
|
-
it "
|
291
|
+
it "passes through tracking parameters" do
|
289
292
|
allow(helper).to receive(:track_test_path).with(id: 1, x: 1).and_return('x')
|
290
293
|
expect(helper.session_tracking_path(document, x: 1)).to eq 'x'
|
291
294
|
end
|