blacklight 5.1.1 → 5.2.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 +2 -0
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/search_context.js +38 -24
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +49 -70
- data/app/helpers/blacklight/catalog_helper_behavior.rb +1 -8
- data/app/helpers/blacklight/configuration_helper_behavior.rb +10 -2
- data/app/helpers/blacklight/facets_helper_behavior.rb +4 -1
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +2 -2
- data/app/helpers/blacklight/url_helper_behavior.rb +41 -7
- data/app/views/catalog/_facet_layout.html.erb +2 -2
- data/app/views/catalog/_per_page_widget.html.erb +4 -4
- data/app/views/catalog/_previous_next_doc.html.erb +1 -1
- data/app/views/catalog/_show_tools.html.erb +1 -1
- data/app/views/catalog/show.html.erb +1 -1
- data/app/views/layouts/blacklight.html.erb +1 -1
- data/blacklight.gemspec +1 -1
- data/config/jetty.yml +3 -0
- data/config/locales/blacklight.es.yml +220 -0
- data/gemfiles/rails4.1.gemfile +10 -0
- data/lib/blacklight/base.rb +1 -1
- data/lib/blacklight/catalog/search_context.rb +15 -15
- data/lib/blacklight/catalog.rb +19 -6
- data/lib/blacklight/configuration.rb +126 -31
- data/lib/blacklight/document_presenter.rb +168 -0
- data/lib/blacklight/request_builders.rb +288 -0
- data/lib/blacklight/routes.rb +6 -2
- data/lib/blacklight/solr/request.rb +1 -1
- data/lib/blacklight/solr_helper.rb +50 -323
- data/lib/blacklight/solr_response/facets.rb +7 -3
- data/lib/blacklight/utils.rb +39 -7
- data/lib/blacklight.rb +5 -3
- data/lib/generators/blacklight/install_generator.rb +17 -5
- data/lib/generators/blacklight/models_generator.rb +0 -1
- data/lib/generators/blacklight/templates/catalog_controller.rb +6 -0
- data/lib/generators/blacklight/templates/config/jetty.yml +8 -4
- data/lib/generators/blacklight/templates/config/solr.yml +2 -0
- data/spec/controllers/catalog_controller_spec.rb +41 -22
- data/spec/features/alternate_controller_spec.rb +1 -1
- data/spec/features/search_filters_spec.rb +24 -24
- data/spec/features/search_results_spec.rb +9 -4
- data/spec/features/search_sort_spec.rb +1 -1
- data/spec/helpers/blacklight_helper_spec.rb +87 -0
- data/spec/helpers/catalog_helper_spec.rb +5 -10
- data/spec/helpers/configuration_helper_spec.rb +22 -1
- data/spec/helpers/facets_helper_spec.rb +6 -0
- data/spec/helpers/render_constraints_helper_spec.rb +1 -2
- data/spec/helpers/url_helper_spec.rb +45 -2
- data/spec/lib/blacklight/routes_spec.rb +4 -4
- data/spec/lib/blacklight/solr_helper_spec.rb +364 -253
- data/spec/lib/blacklight/solr_response/facets_spec.rb +82 -0
- data/spec/lib/blacklight/solr_response_spec.rb +3 -1
- data/spec/lib/document_presenter_spec.rb +216 -0
- data/spec/lib/utils_spec.rb +8 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
- data/spec/views/catalog/index.html.erb_spec.rb +29 -21
- data/spec/views/catalog/show.html.erb_spec.rb +11 -7
- data/template.demo.rb +20 -0
- metadata +12 -4
- data/lib/generators/blacklight/jetty_generator.rb +0 -70
@@ -1,6 +1,10 @@
|
|
1
|
-
|
1
|
+
development:
|
2
|
+
startup_wait: 15
|
2
3
|
jetty_port: 8983
|
3
4
|
test:
|
4
|
-
|
5
|
-
|
6
|
-
|
5
|
+
startup_wait: 60
|
6
|
+
jetty_port: <%= ENV['TEST_JETTY_PORT'] || 8888 %>
|
7
|
+
<%= ENV['TEST_JETTY_PATH'] ? "jetty_home: " + ENV['TEST_JETTY_PATH'] : '' %>
|
8
|
+
production:
|
9
|
+
startup_wait: 15
|
10
|
+
jetty_port: 8983
|
@@ -70,18 +70,13 @@ describe CatalogController do
|
|
70
70
|
before do
|
71
71
|
controller.stub(:get_search_results)
|
72
72
|
end
|
73
|
-
it "should include :search key with hash" do
|
74
|
-
get :index
|
75
|
-
expect(session[:search]).to_not be_nil
|
76
|
-
expect(session[:search]).to be_kind_of(Hash)
|
77
|
-
end
|
78
73
|
it "should include search hash with key :q" do
|
79
74
|
get :index, :q => @user_query
|
80
75
|
expect(session[:search]).to_not be_nil
|
81
|
-
expect(session[:search].keys).to include
|
76
|
+
expect(session[:search].keys).to include 'id'
|
82
77
|
|
83
|
-
search = Search.find(session[:search][
|
84
|
-
expect(search.query_params[
|
78
|
+
search = Search.find(session[:search]['id'])
|
79
|
+
expect(search.query_params['q']).to eq @user_query
|
85
80
|
end
|
86
81
|
end
|
87
82
|
|
@@ -200,23 +195,33 @@ describe CatalogController do
|
|
200
195
|
|
201
196
|
end # describe index action
|
202
197
|
|
203
|
-
describe "
|
198
|
+
describe "track action" do
|
204
199
|
doc_id = '2007020969'
|
205
200
|
|
206
201
|
it "should set counter value into session[:search]" do
|
207
|
-
put :
|
208
|
-
expect(session[:search][
|
202
|
+
put :track, :id => doc_id, :counter => 3
|
203
|
+
expect(session[:search]['counter']).to eq "3"
|
209
204
|
end
|
210
205
|
|
211
206
|
it "should redirect to show action for doc id" do
|
212
|
-
put :
|
207
|
+
put :track, :id => doc_id, :counter => 3
|
213
208
|
assert_redirected_to(catalog_path(doc_id))
|
214
209
|
end
|
215
210
|
|
216
211
|
it "HTTP status code for redirect should be 303" do
|
217
|
-
put :
|
212
|
+
put :track, :id => doc_id, :counter => 3
|
218
213
|
expect(response.status).to eq 303
|
219
214
|
end
|
215
|
+
|
216
|
+
it "should redirect to the path given in the redirect param" do
|
217
|
+
put :track, :id => doc_id, :counter => 3, redirect: '/xyz'
|
218
|
+
assert_redirected_to("/xyz")
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should redirect to the path of the uri given in the redirect param" do
|
222
|
+
put :track, :id => doc_id, :counter => 3, redirect: 'http://localhost:3000/xyz'
|
223
|
+
assert_redirected_to("/xyz")
|
224
|
+
end
|
220
225
|
end
|
221
226
|
|
222
227
|
# SHOW ACTION
|
@@ -254,7 +259,7 @@ describe CatalogController do
|
|
254
259
|
@search_session = { :id => current_search.id }
|
255
260
|
end
|
256
261
|
it "should set previous document if counter present in session" do
|
257
|
-
session[:search] = @search_session.merge(
|
262
|
+
session[:search] = @search_session.merge('counter' => 2)
|
258
263
|
get :show, :id => doc_id
|
259
264
|
expect(assigns[:previous_document]).to_not be_nil
|
260
265
|
end
|
@@ -263,14 +268,14 @@ describe CatalogController do
|
|
263
268
|
expect(assigns[:previous_document]).to be_nil
|
264
269
|
expect(assigns[:next_document]).to be_nil
|
265
270
|
end
|
266
|
-
it "should not set previous or next document if session[:search][
|
271
|
+
it "should not set previous or next document if session[:search]['counter'] is nil" do
|
267
272
|
session[:search] = {}
|
268
273
|
get :show, :id => doc_id
|
269
274
|
expect(assigns[:previous_document]).to be_nil
|
270
275
|
expect(assigns[:next_document]).to be_nil
|
271
276
|
end
|
272
277
|
it "should set next document if counter present in session" do
|
273
|
-
session[:search] = @search_session.merge(
|
278
|
+
session[:search] = @search_session.merge('counter' => 2)
|
274
279
|
get :show, :id => doc_id
|
275
280
|
expect(assigns[:next_document]).to_not be_nil
|
276
281
|
end
|
@@ -483,6 +488,7 @@ describe CatalogController do
|
|
483
488
|
req = {}
|
484
489
|
res = {}
|
485
490
|
fake_error = RSolr::Error::Http.new(req, res)
|
491
|
+
Rails.env.stub(:test? => false)
|
486
492
|
controller.stub(:get_search_results) { |*args| raise fake_error }
|
487
493
|
controller.logger.should_receive(:error).with(fake_error)
|
488
494
|
get :index, :q=>"+"
|
@@ -514,10 +520,7 @@ describe CatalogController do
|
|
514
520
|
controller.stub(:has_user_authentication_provider?) { false }
|
515
521
|
@mock_response = double()
|
516
522
|
@mock_document = double()
|
517
|
-
|
518
|
-
@mock_document = double()
|
519
|
-
controller.stub(:find => @mock_response,
|
520
|
-
:get_single_doc_via_search => @mock_document)
|
523
|
+
controller.stub(:get_single_doc_via_search => @mock_document)
|
521
524
|
end
|
522
525
|
|
523
526
|
it "should not show user util links" do
|
@@ -634,7 +637,7 @@ describe CatalogController do
|
|
634
637
|
it "should use an existing search session if the search is in the uri" do
|
635
638
|
s = Search.create(:query_params => { :q => "x" })
|
636
639
|
session[:search] ||= {}
|
637
|
-
session[:search][
|
640
|
+
session[:search]['id'] = s.id
|
638
641
|
session[:history] ||= []
|
639
642
|
session[:history] << s.id
|
640
643
|
session = controller.send(:current_search_session)
|
@@ -642,6 +645,23 @@ describe CatalogController do
|
|
642
645
|
expect(session).to eq(s)
|
643
646
|
end
|
644
647
|
end
|
648
|
+
|
649
|
+
describe "#has_search_parameters?" do
|
650
|
+
subject { controller.has_search_parameters? }
|
651
|
+
describe "none" do
|
652
|
+
before { controller.stub(params: { }) }
|
653
|
+
it { should be_false }
|
654
|
+
end
|
655
|
+
describe "with a query" do
|
656
|
+
before { controller.stub(params: { q: 'hello' }) }
|
657
|
+
it { should be_true }
|
658
|
+
end
|
659
|
+
describe "with a facet" do
|
660
|
+
before { controller.stub(params: { f: { "field" => ["value"]} }) }
|
661
|
+
it { should be_true }
|
662
|
+
end
|
663
|
+
end
|
664
|
+
|
645
665
|
end
|
646
666
|
|
647
667
|
|
@@ -653,4 +673,3 @@ def assert_facets_have_values(facets)
|
|
653
673
|
expect(facet.items).to have_at_least(1).item
|
654
674
|
end
|
655
675
|
end
|
656
|
-
|
@@ -29,7 +29,7 @@ describe "Alternate Controller Behaviors" do
|
|
29
29
|
fill_in "q", :with=>"history"
|
30
30
|
click_button 'search'
|
31
31
|
expect(page).to have_selector ".document-thumbnail"
|
32
|
-
expect(page).to have_selector ".document-thumbnail a[data-
|
32
|
+
expect(page).to have_selector ".document-thumbnail a[data-context-href]"
|
33
33
|
expect(page).to have_selector ".document-thumbnail a img"
|
34
34
|
|
35
35
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe "Facets" do
|
4
4
|
it "should work without a search term" do
|
5
5
|
visit root_path
|
6
|
-
within
|
6
|
+
within "#facet-language_facet" do
|
7
7
|
click_link "Tibetan"
|
8
8
|
end
|
9
9
|
within "#sortAndPerPage" do
|
@@ -13,7 +13,7 @@ describe "Facets" do
|
|
13
13
|
expect(page).to have_selector(".blacklight-language_facet")
|
14
14
|
expect(page).to have_selector(".blacklight-language_facet.facet_limit-active")
|
15
15
|
|
16
|
-
within "#facet-
|
16
|
+
within "#facet-language_facet" do
|
17
17
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
18
18
|
expect(page).to have_selector("span.facet-count.selected", :text => "6")
|
19
19
|
end
|
@@ -22,11 +22,11 @@ describe "Facets" do
|
|
22
22
|
within ("#sortAndPerPage") do
|
23
23
|
expect(page).to have_content "1 - 2 of 2"
|
24
24
|
end
|
25
|
-
within "#facet-
|
25
|
+
within "#facet-language_facet" do
|
26
26
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
27
27
|
expect(page).to have_selector("span.facet-count.selected", :text => "2")
|
28
28
|
end
|
29
|
-
within "#facet-
|
29
|
+
within "#facet-subject_geo_facet" do
|
30
30
|
expect(page).to have_selector("span.selected", :text => "India")
|
31
31
|
expect(page).to have_selector("span.facet-count.selected", :text => "2")
|
32
32
|
end
|
@@ -40,13 +40,13 @@ describe "Facets" do
|
|
40
40
|
expect(page).to have_content "1 - 9 of 9"
|
41
41
|
end
|
42
42
|
|
43
|
-
within "#facet-
|
43
|
+
within "#facet-language_facet" do
|
44
44
|
click_link "Tibetan"
|
45
45
|
end
|
46
46
|
within ("#sortAndPerPage") do
|
47
47
|
expect(page).to have_content "1 - 2 of 2"
|
48
48
|
end
|
49
|
-
within "#facet-
|
49
|
+
within "#facet-language_facet" do
|
50
50
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
51
51
|
expect(page).to have_selector("span.facet-count.selected", :text => "2")
|
52
52
|
end
|
@@ -60,7 +60,7 @@ describe "Facets" do
|
|
60
60
|
within ("#sortAndPerPage") do
|
61
61
|
expect(page).to have_content "1 entry found"
|
62
62
|
end
|
63
|
-
within "#facet-
|
63
|
+
within "#facet-language_facet" do
|
64
64
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
65
65
|
expect(page).to have_selector("span.facet-count.selected", :text => "1")
|
66
66
|
end
|
@@ -72,14 +72,14 @@ describe "Facets" do
|
|
72
72
|
|
73
73
|
it "should allow removing filters" do
|
74
74
|
visit root_path
|
75
|
-
within "#facet-
|
75
|
+
within "#facet-language_facet" do
|
76
76
|
click_link "Tibetan"
|
77
77
|
end
|
78
|
-
within "#facet-
|
78
|
+
within "#facet-language_facet" do
|
79
79
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
80
80
|
expect(page).to have_selector("span.facet-count.selected", :text => "6")
|
81
81
|
end
|
82
|
-
within "#facet-
|
82
|
+
within "#facet-language_facet" do
|
83
83
|
click_link 'remove'
|
84
84
|
end
|
85
85
|
expect(page).to_not have_link 'remove'
|
@@ -90,17 +90,17 @@ describe "Facets" do
|
|
90
90
|
visit root_path
|
91
91
|
fill_in "q", with: 'history'
|
92
92
|
click_button 'search'
|
93
|
-
within "#facet-
|
93
|
+
within "#facet-language_facet" do
|
94
94
|
click_link 'Tibetan'
|
95
95
|
end
|
96
|
-
within "#facet-
|
96
|
+
within "#facet-language_facet" do
|
97
97
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
98
98
|
expect(page).to have_selector("span.facet-count.selected", :text => "2")
|
99
99
|
end
|
100
100
|
|
101
101
|
click_link '2004'
|
102
102
|
|
103
|
-
within "#facet-
|
103
|
+
within "#facet-language_facet" do
|
104
104
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
105
105
|
expect(page).to have_selector("span.facet-count.selected", :text => "1")
|
106
106
|
end
|
@@ -111,7 +111,7 @@ describe "Facets" do
|
|
111
111
|
fill_in "q", with: 'china'
|
112
112
|
click_button 'search'
|
113
113
|
|
114
|
-
within "#facet-
|
114
|
+
within "#facet-language_facet" do
|
115
115
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
116
116
|
expect(page).to have_selector("span.facet-count.selected", :text => "1")
|
117
117
|
end
|
@@ -125,15 +125,15 @@ describe "Facets" do
|
|
125
125
|
visit root_path
|
126
126
|
fill_in "q", with: 'history'
|
127
127
|
click_button 'search'
|
128
|
-
within "#facet-
|
128
|
+
within "#facet-language_facet" do
|
129
129
|
click_link 'Tibetan'
|
130
130
|
end
|
131
|
-
within "#facet-
|
131
|
+
within "#facet-language_facet" do
|
132
132
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
133
133
|
expect(page).to have_selector("span.facet-count.selected", :text => "2")
|
134
134
|
end
|
135
135
|
click_link 'title'
|
136
|
-
within "#facet-
|
136
|
+
within "#facet-language_facet" do
|
137
137
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
138
138
|
expect(page).to have_selector("span.facet-count.selected", :text => "2")
|
139
139
|
end
|
@@ -147,17 +147,17 @@ describe "Facets" do
|
|
147
147
|
visit root_path
|
148
148
|
fill_in "q", with: 'history'
|
149
149
|
click_button 'search'
|
150
|
-
within "#facet-
|
150
|
+
within "#facet-language_facet" do
|
151
151
|
click_link 'Tibetan'
|
152
152
|
end
|
153
|
-
within "#facet-
|
153
|
+
within "#facet-language_facet" do
|
154
154
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
155
155
|
expect(page).to have_selector("span.facet-count.selected", :text => "2")
|
156
156
|
end
|
157
157
|
within '#per_page-dropdown' do
|
158
158
|
click_link '20'
|
159
159
|
end
|
160
|
-
within "#facet-
|
160
|
+
within "#facet-language_facet" do
|
161
161
|
expect(page).to have_selector("span.selected", :text => "Tibetan")
|
162
162
|
expect(page).to have_selector("span.facet-count.selected", :text => "2")
|
163
163
|
end
|
@@ -167,14 +167,14 @@ describe "Facets" do
|
|
167
167
|
end
|
168
168
|
end
|
169
169
|
it "should be collapsed when not selected", :js => true do
|
170
|
-
pending("Test passes locally but not on Travis.")
|
170
|
+
pending("Test passes locally but not on Travis.") if ENV['TRAVIS']
|
171
171
|
visit root_path
|
172
172
|
within(".blacklight-subject_topic_facet") do
|
173
173
|
expect(page).not_to have_selector(".panel-collapse", :visible => true)
|
174
174
|
end
|
175
175
|
end
|
176
176
|
it "should expand when the heading is clicked", :js => true do
|
177
|
-
pending("Test passes locally but not on Travis.")
|
177
|
+
pending("Test passes locally but not on Travis.") if ENV['TRAVIS']
|
178
178
|
visit root_path
|
179
179
|
within(".blacklight-subject_topic_facet") do
|
180
180
|
expect(page).not_to have_selector(".panel-collapse", :visible => true)
|
@@ -183,7 +183,7 @@ describe "Facets" do
|
|
183
183
|
end
|
184
184
|
end
|
185
185
|
it "should expand when the anchor is clicked", :js => true do
|
186
|
-
pending("Test passes locally but not on Travis.")
|
186
|
+
pending("Test passes locally but not on Travis.") if ENV['TRAVIS']
|
187
187
|
visit root_path
|
188
188
|
within(".blacklight-subject_topic_facet") do
|
189
189
|
expect(page).not_to have_selector(".panel-collapse", :visible => true)
|
@@ -192,7 +192,7 @@ describe "Facets" do
|
|
192
192
|
end
|
193
193
|
end
|
194
194
|
it "should keep selected facets expanded on page load", :js => true do
|
195
|
-
pending("Test passes locally but not on Travis.")
|
195
|
+
pending("Test passes locally but not on Travis.") if ENV['TRAVIS']
|
196
196
|
visit root_path
|
197
197
|
within(".blacklight-subject_topic_facet") do
|
198
198
|
click_link "Topic"
|
@@ -55,14 +55,19 @@ describe "Search Results" do
|
|
55
55
|
click_on 'Pluvial nectar of blessings'
|
56
56
|
expect(page).to have_content "« Previous | 10 of 30 | Next »"
|
57
57
|
prev = page.find("#previousNextDocument .previous")
|
58
|
-
expect(prev['data-
|
59
|
-
expect(prev['data-search_id']).to eq search_id
|
58
|
+
expect(prev['data-context-href']).to eq "/catalog/2003546302/track?counter=9&search_id=#{search_id}"
|
60
59
|
|
61
60
|
click_on "« Previous"
|
62
61
|
|
63
62
|
prev = page.find("#previousNextDocument .previous")
|
64
|
-
expect(prev['data-
|
65
|
-
|
63
|
+
expect(prev['data-context-href']).to eq "/catalog/2004310986/track?counter=8&search_id=#{search_id}"
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should redirect context urls to the original url", :js => true do
|
67
|
+
search_for ''
|
68
|
+
first('.index_title a').click
|
69
|
+
expect(page).to have_content "« Previous | 1 of 30 | Next »"
|
70
|
+
expect(page.current_url).to_not have_content "/track"
|
66
71
|
end
|
67
72
|
|
68
73
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe "Search Sort" do
|
4
4
|
it "should sort on facet results with no search terms" do
|
5
5
|
visit root_path
|
6
|
-
within "#facet-
|
6
|
+
within "#facet-language_facet" do
|
7
7
|
click_link 'English'
|
8
8
|
end
|
9
9
|
expect(page).to have_content 'Sort by relevance'
|
@@ -32,6 +32,22 @@ describe BlacklightHelper do
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
describe "#render_page_title" do
|
36
|
+
it "should look in content_for(:page_title)" do
|
37
|
+
helper.content_for(:page_title) { "xyz" }
|
38
|
+
expect(helper.render_page_title).to eq "xyz"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should look in the @page_title ivar" do
|
42
|
+
assign(:page_title, "xyz")
|
43
|
+
expect(helper.render_page_title).to eq "xyz"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should default to the application name" do
|
47
|
+
expect(helper.render_page_title).to eq helper.application_name
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
35
51
|
describe "render_link_rel_alternates" do
|
36
52
|
class MockDocumentAppHelper
|
37
53
|
include Blacklight::Solr::Document
|
@@ -389,6 +405,9 @@ describe BlacklightHelper do
|
|
389
405
|
end
|
390
406
|
|
391
407
|
describe "render_field_value" do
|
408
|
+
before do
|
409
|
+
Deprecation.stub(:warn)
|
410
|
+
end
|
392
411
|
it "should join and html-safe values" do
|
393
412
|
expect(helper.render_field_value(['a', 'b'])).to eq "a, b"
|
394
413
|
end
|
@@ -426,4 +445,72 @@ describe BlacklightHelper do
|
|
426
445
|
expect(helper.should_show_spellcheck_suggestions? response).to be_false
|
427
446
|
end
|
428
447
|
end
|
448
|
+
|
449
|
+
describe "#render_document_partials" do
|
450
|
+
let(:doc) { double }
|
451
|
+
before do
|
452
|
+
helper.stub(document_partial_path_templates: [])
|
453
|
+
end
|
454
|
+
|
455
|
+
it "should get the document format from document_partial_name" do
|
456
|
+
helper.should_receive(:document_partial_name).with(doc, :xyz)
|
457
|
+
helper.render_document_partial(doc, :xyz)
|
458
|
+
end
|
459
|
+
|
460
|
+
context "with a 1-arg form of document_partial_name" do
|
461
|
+
it "should only call the 1-arg form of the document_partial_name" do
|
462
|
+
helper.should_receive(:method).with(:document_partial_name).and_return(double(arity: 1))
|
463
|
+
helper.should_receive(:document_partial_name).with(doc)
|
464
|
+
Deprecation.should_receive(:warn)
|
465
|
+
helper.render_document_partial(doc, nil)
|
466
|
+
end
|
467
|
+
end
|
468
|
+
end
|
469
|
+
|
470
|
+
describe "#document_partial_name" do
|
471
|
+
let(:blacklight_config) { Blacklight::Configuration.new }
|
472
|
+
|
473
|
+
before do
|
474
|
+
helper.stub(blacklight_config: blacklight_config)
|
475
|
+
end
|
476
|
+
|
477
|
+
context "with a solr document with empty fields" do
|
478
|
+
let(:document) { SolrDocument.new }
|
479
|
+
it "should be the default value" do
|
480
|
+
expect(helper.document_partial_name(document)).to eq 'default'
|
481
|
+
end
|
482
|
+
end
|
483
|
+
|
484
|
+
context "with a solr document with the display type field set" do
|
485
|
+
let(:document) { SolrDocument.new 'my_field' => 'xyz'}
|
486
|
+
|
487
|
+
before do
|
488
|
+
blacklight_config.show.display_type_field = 'my_field'
|
489
|
+
end
|
490
|
+
|
491
|
+
it "should use the value in the configured display type field" do
|
492
|
+
expect(helper.document_partial_name(document)).to eq 'xyz'
|
493
|
+
end
|
494
|
+
|
495
|
+
it "should use the value in the configured display type field if the action-specific field is empty" do
|
496
|
+
expect(helper.document_partial_name(document, :some_action)).to eq 'xyz'
|
497
|
+
end
|
498
|
+
end
|
499
|
+
|
500
|
+
context "with a solr doucment with an action-specific field set" do
|
501
|
+
|
502
|
+
let(:document) { SolrDocument.new 'my_field' => 'xyz', 'other_field' => 'abc' }
|
503
|
+
|
504
|
+
before do
|
505
|
+
blacklight_config.show.media_display_type_field = 'my_field'
|
506
|
+
blacklight_config.show.metadata_display_type_field = 'other_field'
|
507
|
+
end
|
508
|
+
|
509
|
+
it "should use the value in the action-specific fields" do
|
510
|
+
expect(helper.document_partial_name(document, :media)).to eq 'xyz'
|
511
|
+
expect(helper.document_partial_name(document, :metadata)).to eq 'abc'
|
512
|
+
end
|
513
|
+
|
514
|
+
end
|
515
|
+
end
|
429
516
|
end
|
@@ -126,27 +126,22 @@ describe CatalogHelper do
|
|
126
126
|
|
127
127
|
describe "should_autofocus_on_search_box?" do
|
128
128
|
it "should be focused if we're on a catalog-like index page without query or facet parameters" do
|
129
|
-
helper.stub(:
|
129
|
+
helper.stub(controller: CatalogController.new, action_name: "index", has_search_parameters?: false)
|
130
130
|
expect(helper.should_autofocus_on_search_box?).to be_true
|
131
131
|
end
|
132
132
|
|
133
133
|
it "should not be focused if we're not on a catalog controller" do
|
134
|
-
helper.stub(:
|
134
|
+
helper.stub(controller: ApplicationController.new)
|
135
135
|
expect(helper.should_autofocus_on_search_box?).to be_false
|
136
136
|
end
|
137
137
|
|
138
138
|
it "should not be focused if we're not on a catalog controller index" do
|
139
|
-
helper.stub(:
|
139
|
+
helper.stub(controller: CatalogController.new, action_name: "show")
|
140
140
|
expect(helper.should_autofocus_on_search_box?).to be_false
|
141
141
|
end
|
142
142
|
|
143
|
-
it "should not be focused if a search
|
144
|
-
helper.stub(:
|
145
|
-
expect(helper.should_autofocus_on_search_box?).to be_false
|
146
|
-
end
|
147
|
-
|
148
|
-
it "should not be focused if a facet is selected" do
|
149
|
-
helper.stub(:controller => CatalogController.new, :action_name => "index", :params => { :f => { "field" => ["value"]}})
|
143
|
+
it "should not be focused if a search parameters are provided" do
|
144
|
+
helper.stub(controller: CatalogController.new, action_name: "index", has_search_parameters?: true)
|
150
145
|
expect(helper.should_autofocus_on_search_box?).to be_false
|
151
146
|
end
|
152
147
|
end
|
@@ -100,4 +100,25 @@ describe BlacklightConfigurationHelper do
|
|
100
100
|
label = helper.solr_field_label "default text", :key_a, :key_b
|
101
101
|
end
|
102
102
|
end
|
103
|
-
|
103
|
+
|
104
|
+
describe "#default_per_page" do
|
105
|
+
it "should be the configured default per page" do
|
106
|
+
helper.stub(blacklight_config: double(default_per_page: 42))
|
107
|
+
expect(helper.default_per_page).to eq 42
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should be the first per-page value if a default isn't set" do
|
111
|
+
helper.stub(blacklight_config: double(default_per_page: nil, per_page: [11, 22]))
|
112
|
+
expect(helper.default_per_page).to eq 11
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "#per_page_options_for_select" do
|
117
|
+
it "should be the per-page values formatted as options_for_select" do
|
118
|
+
helper.stub(blacklight_config: double(per_page: [11, 22, 33]))
|
119
|
+
expect(helper.per_page_options_for_select).to include ["11<span class=\"sr-only\"> per page</span>", 11]
|
120
|
+
expect(helper.per_page_options_for_select).to include ["22<span class=\"sr-only\"> per page</span>", 22]
|
121
|
+
expect(helper.per_page_options_for_select).to include ["33<span class=\"sr-only\"> per page</span>", 33]
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -350,4 +350,10 @@ describe FacetsHelper do
|
|
350
350
|
expect(helper.facet_display_value('date_facet', '2012-01-01')).to eq '01 Jan 00:00'
|
351
351
|
end
|
352
352
|
end
|
353
|
+
|
354
|
+
describe "#facet_field_id" do
|
355
|
+
it "should be the parameterized version of the facet field" do
|
356
|
+
expect(helper.facet_field_id double(field: 'some field')).to eq "facet-some-field"
|
357
|
+
end
|
358
|
+
end
|
353
359
|
end
|
@@ -25,8 +25,7 @@ describe RenderConstraintsHelper do
|
|
25
25
|
end
|
26
26
|
it "should have a link relative to the current url" do
|
27
27
|
result = helper.render_filter_element('type', ['journal'], {:q=>'biz'})
|
28
|
-
|
29
|
-
expect(result).to have_link "Remove constraint Type: journal", href: "/catalog?&q=biz"
|
28
|
+
expect(result).to have_link "Remove constraint Type: journal", href: "/catalog?q=biz"
|
30
29
|
end
|
31
30
|
end
|
32
31
|
|
@@ -18,6 +18,41 @@ describe BlacklightUrlHelper do
|
|
18
18
|
helper.stub(current_search_session: nil)
|
19
19
|
end
|
20
20
|
|
21
|
+
describe "url_for_document" do
|
22
|
+
let(:controller_class) { ::CatalogController.new }
|
23
|
+
|
24
|
+
before do
|
25
|
+
helper.stub(controller: controller_class)
|
26
|
+
helper.stub(controller_name: controller_class.controller_name)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should be a polymorphic routing-ready object" do
|
30
|
+
doc = double
|
31
|
+
expect(helper.url_for_document(doc)).to eq doc
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should be a catalog controller-specific route" do
|
35
|
+
doc = SolrDocument.new
|
36
|
+
expect(helper.url_for_document(doc)).to eq({controller: 'catalog', action: :show, id: doc})
|
37
|
+
end
|
38
|
+
|
39
|
+
context "within an alternative catalog controller" do
|
40
|
+
let(:controller_class) { ::AlternateController.new }
|
41
|
+
|
42
|
+
it "should be a catalog controller-specific route" do
|
43
|
+
doc = SolrDocument.new
|
44
|
+
expect(helper.url_for_document(doc)).to eq({controller: 'alternate', action: :show, id: doc})
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should be a polymorphic route if the solr document responds to #to_model with a non-SolrDocument" do
|
49
|
+
some_model = double
|
50
|
+
doc = SolrDocument.new
|
51
|
+
doc.stub(to_model: some_model)
|
52
|
+
expect(helper.url_for_document(doc)).to eq doc
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
21
56
|
describe "link_back_to_catalog" do
|
22
57
|
let(:query_params) {{:q => "query", :f => "facets", :per_page => "10", :page => "2", :controller=>'catalog'}}
|
23
58
|
let(:bookmarks_query_params) {{ :page => "2", :controller=>'bookmarks'}}
|
@@ -210,7 +245,15 @@ describe BlacklightUrlHelper do
|
|
210
245
|
it "should convert the counter parameter into a data- attribute" do
|
211
246
|
data = {'id'=>'123456','title_display'=>['654321']}
|
212
247
|
@document = SolrDocument.new(data)
|
213
|
-
expect(helper.link_to_document(@document, { :label => :title_display, :counter => 5 })).to match
|
248
|
+
expect(helper.link_to_document(@document, { :label => :title_display, :counter => 5 })).to match /\/catalog\/123456\/track\?counter=5/
|
249
|
+
end
|
250
|
+
|
251
|
+
it "should merge the data- attributes from the options with the counter params" do
|
252
|
+
data = {'id'=>'123456','title_display'=>['654321']}
|
253
|
+
@document = SolrDocument.new(data)
|
254
|
+
link = helper.link_to_document @document, { data: { x: 1 } }
|
255
|
+
expect(link).to have_selector '[data-x]'
|
256
|
+
expect(link).to have_selector '[data-context-href]'
|
214
257
|
end
|
215
258
|
|
216
259
|
it "passes on the title attribute to the link_to_with_data method" do
|
@@ -352,4 +395,4 @@ describe BlacklightUrlHelper do
|
|
352
395
|
expect(added_facet_params_from_facet_action).to eq added_facet_params.except(Blacklight::Solr::FacetPaginator.request_keys[:page], Blacklight::Solr::FacetPaginator.request_keys[:sort])
|
353
396
|
end
|
354
397
|
end
|
355
|
-
end
|
398
|
+
end
|
@@ -7,8 +7,8 @@ describe Blacklight::Routes do
|
|
7
7
|
describe "without constraints" do
|
8
8
|
let(:options) { Hash.new }
|
9
9
|
it "should define the resources" do
|
10
|
-
router.should_receive(:resources).with(:solr_document, {:path=>:records, :controller=>:records, :only=>[:show
|
11
|
-
router.should_receive(:resources).with(:records, :only=>[:show
|
10
|
+
router.should_receive(:resources).with(:solr_document, {:path=>:records, :controller=>:records, :only=>[:show]})
|
11
|
+
router.should_receive(:resources).with(:records, :only=>[:show])
|
12
12
|
subject.solr_document(:records)
|
13
13
|
end
|
14
14
|
end
|
@@ -16,8 +16,8 @@ describe Blacklight::Routes do
|
|
16
16
|
describe "with constraints" do
|
17
17
|
let(:options) { { :constraints => {id: /[a-z]+/, format: false } } }
|
18
18
|
it "should define the resources" do
|
19
|
-
router.should_receive(:resources).with(:solr_document, {:path=>:records, :controller=>:records, :only=>[:show
|
20
|
-
router.should_receive(:resources).with(:records, :only=>[:show
|
19
|
+
router.should_receive(:resources).with(:solr_document, {:path=>:records, :controller=>:records, :only=>[:show], :constraints=>{:id=>/[a-z]+/, :format=>false} })
|
20
|
+
router.should_receive(:resources).with(:records, :only=>[:show], :constraints=>{:id=>/[a-z]+/, :format=>false})
|
21
21
|
subject.solr_document(:records)
|
22
22
|
end
|
23
23
|
end
|