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
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Blacklight::SolrResponse::Facets do
|
4
|
+
describe Blacklight::SolrResponse::Facets::FacetField do
|
5
|
+
|
6
|
+
describe "A field with default options" do
|
7
|
+
subject { Blacklight::SolrResponse::Facets::FacetField.new "my_field", [] }
|
8
|
+
|
9
|
+
its(:name) { should eq "my_field" }
|
10
|
+
its(:limit) { should eq nil }
|
11
|
+
its(:sort) { should eq 'index' }
|
12
|
+
its(:offset) { should eq 0 }
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "A field with additional options" do
|
16
|
+
subject { Blacklight::SolrResponse::Facets::FacetField.new "my_field", [], limit: 15, sort: 'alpha', offset: 23 }
|
17
|
+
|
18
|
+
its(:name) { should eq "my_field" }
|
19
|
+
its(:limit) { should eq 15 }
|
20
|
+
its(:sort) { should eq 'alpha' }
|
21
|
+
its(:offset) { should eq 23 }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#facet_by_field_name" do
|
26
|
+
let(:facet_field) { ['my_field', []] }
|
27
|
+
let(:response_header) { { params: request_params }}
|
28
|
+
let(:request_params) { Hash.new }
|
29
|
+
subject { Blacklight::SolrResponse.new({responseHeader: response_header, facet_counts: { facet_fields: [facet_field] }}.with_indifferent_access, request_params) }
|
30
|
+
|
31
|
+
describe "#limit" do
|
32
|
+
it "should extract a field-specific limit value" do
|
33
|
+
request_params['f.my_field.facet.limit'] = "10"
|
34
|
+
request_params['facet.limit'] = "15"
|
35
|
+
expect(subject.facet_by_field_name('my_field').limit).to eq 10
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should extract a global limit value" do
|
39
|
+
request_params['facet.limit'] = "15"
|
40
|
+
expect(subject.facet_by_field_name('my_field').limit).to eq 15
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should be nil if no value is found" do
|
44
|
+
expect(subject.facet_by_field_name('my_field').limit).to be_nil
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "#offset" do
|
49
|
+
it "should extract a field-specific offset value" do
|
50
|
+
request_params['f.my_field.facet.offset'] = "10"
|
51
|
+
request_params['facet.offset'] = "15"
|
52
|
+
expect(subject.facet_by_field_name('my_field').offset).to eq 10
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should extract a global offset value" do
|
56
|
+
request_params['facet.offset'] = "15"
|
57
|
+
expect(subject.facet_by_field_name('my_field').offset).to eq 15
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should be nil if no value is found" do
|
61
|
+
expect(subject.facet_by_field_name('my_field').offset).to eq 0
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "#sort" do
|
66
|
+
it "should extract a field-specific sort value" do
|
67
|
+
request_params['f.my_field.facet.sort'] = "alpha"
|
68
|
+
request_params['facet.sort'] = "index"
|
69
|
+
expect(subject.facet_by_field_name('my_field').sort).to eq 'alpha'
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should extract a global sort value" do
|
73
|
+
request_params['facet.sort'] = "alpha"
|
74
|
+
expect(subject.facet_by_field_name('my_field').sort).to eq 'alpha'
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should default to index if no value is found" do
|
78
|
+
expect(subject.facet_by_field_name('my_field').sort).to eq 'index'
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -48,12 +48,14 @@ describe Blacklight::SolrResponse do
|
|
48
48
|
|
49
49
|
r.facets.each do |facet|
|
50
50
|
expect(facet).to respond_to :name
|
51
|
+
expect(facet).to respond_to :sort
|
52
|
+
expect(facet).to respond_to :offset
|
53
|
+
expect(facet).to respond_to :limit
|
51
54
|
facet.items.each do |item|
|
52
55
|
expect(item).to respond_to :value
|
53
56
|
expect(item).to respond_to :hits
|
54
57
|
end
|
55
58
|
end
|
56
|
-
|
57
59
|
end
|
58
60
|
|
59
61
|
it "should provide kaminari pagination helpers" do
|
@@ -0,0 +1,216 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Blacklight::DocumentPresenter do
|
4
|
+
include Capybara::RSpecMatchers
|
5
|
+
let(:request_context) { double(:add_facet_params => '') }
|
6
|
+
let(:document) { double }
|
7
|
+
let(:config) { Blacklight::Configuration.new }
|
8
|
+
|
9
|
+
subject { Blacklight::DocumentPresenter.new(document, request_context, config) }
|
10
|
+
|
11
|
+
describe "render_index_field_value" do
|
12
|
+
let(:config) do
|
13
|
+
Blacklight::Configuration.new.configure do |config|
|
14
|
+
config.add_index_field 'qwer'
|
15
|
+
config.add_index_field 'asdf', :helper_method => :render_asdf_index_field
|
16
|
+
config.add_index_field 'link_to_search_true', :link_to_search => true
|
17
|
+
config.add_index_field 'link_to_search_named', :link_to_search => :some_field
|
18
|
+
config.add_index_field 'highlight', :highlight => true
|
19
|
+
config.add_index_field 'solr_doc_accessor', :accessor => true
|
20
|
+
config.add_index_field 'explicit_accessor', :accessor => :solr_doc_accessor
|
21
|
+
config.add_index_field 'explicit_accessor_with_arg', :accessor => :solr_doc_accessor_with_arg
|
22
|
+
end
|
23
|
+
end
|
24
|
+
it "should check for an explicit value" do
|
25
|
+
document.should_not_receive(:get).with('asdf', :sep => nil)
|
26
|
+
value = subject.render_index_field_value 'asdf', :value => 'asdf'
|
27
|
+
expect(value).to eq 'asdf'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should check for a helper method to call" do
|
31
|
+
document.should_receive(:get).with('asdf', :sep => nil)
|
32
|
+
request_context.stub(:render_asdf_index_field).and_return('custom asdf value')
|
33
|
+
value = subject.render_index_field_value 'asdf'
|
34
|
+
expect(value).to eq 'custom asdf value'
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should check for a link_to_search" do
|
38
|
+
document.should_receive(:get).with('link_to_search_true', :sep => nil).and_return('x')
|
39
|
+
request_context.should_receive(:add_facet_params).and_return(:f => { :link_to_search_true => ['x'] })
|
40
|
+
request_context.should_receive(:search_action_path).with(:f => { :link_to_search_true => ['x'] }).and_return('/foo')
|
41
|
+
request_context.should_receive(:link_to).with("x", '/foo').and_return('bar')
|
42
|
+
value = subject.render_index_field_value 'link_to_search_true'
|
43
|
+
expect(value).to eq 'bar'
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should check for a link_to_search with a field name" do
|
47
|
+
document.should_receive(:get).with('link_to_search_named', :sep => nil).and_return('x')
|
48
|
+
request_context.should_receive(:add_facet_params).and_return(:f => { :some_field => ['x'] })
|
49
|
+
request_context.should_receive(:search_action_path).with(:f => { :some_field => ['x'] }).and_return('/foo')
|
50
|
+
request_context.should_receive(:link_to).with("x", '/foo').and_return('bar')
|
51
|
+
value = subject.render_index_field_value 'link_to_search_named'
|
52
|
+
expect(value).to eq 'bar'
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should gracefully handle when no highlight field is available" do
|
56
|
+
document.should_not_receive(:get)
|
57
|
+
document.should_receive(:has_highlight_field?).and_return(false)
|
58
|
+
value = subject.render_index_field_value 'highlight'
|
59
|
+
expect(value).to be_blank
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should check for a highlighted field" do
|
63
|
+
document.should_not_receive(:get)
|
64
|
+
document.should_receive(:has_highlight_field?).and_return(true)
|
65
|
+
document.should_receive(:highlight_field).with('highlight').and_return(['<em>highlight</em>'.html_safe])
|
66
|
+
value = subject.render_index_field_value 'highlight'
|
67
|
+
expect(value).to eq '<em>highlight</em>'
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should check the document field value" do
|
71
|
+
document.should_receive(:get).with('qwer', :sep => nil).and_return('document qwer value')
|
72
|
+
value = subject.render_index_field_value 'qwer'
|
73
|
+
expect(value).to eq 'document qwer value'
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should work with index fields that aren't explicitly defined" do
|
77
|
+
document.should_receive(:get).with('mnbv', :sep => nil).and_return('document mnbv value')
|
78
|
+
value = subject.render_index_field_value 'mnbv'
|
79
|
+
expect(value).to eq 'document mnbv value'
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should call an accessor on the solr document" do
|
83
|
+
document.stub(:solr_doc_accessor => "123")
|
84
|
+
value = subject.render_index_field_value 'solr_doc_accessor'
|
85
|
+
expect(value).to eq "123"
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should call an explicit accessor on the solr document" do
|
89
|
+
document.stub(:solr_doc_accessor => "123")
|
90
|
+
value = subject.render_index_field_value 'explicit_accessor'
|
91
|
+
expect(value).to eq "123"
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should call an implicit accessor on the solr document" do
|
95
|
+
expect(document).to receive(:solr_doc_accessor_with_arg).with('explicit_accessor_with_arg').and_return("123")
|
96
|
+
value = subject.render_index_field_value 'explicit_accessor_with_arg'
|
97
|
+
expect(value).to eq "123"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe "render_document_show_field_value" do
|
102
|
+
let(:config) do
|
103
|
+
Blacklight::Configuration.new.configure do |config|
|
104
|
+
config.add_show_field 'qwer'
|
105
|
+
config.add_show_field 'asdf', :helper_method => :render_asdf_document_show_field
|
106
|
+
config.add_show_field 'link_to_search_true', :link_to_search => true
|
107
|
+
config.add_show_field 'link_to_search_named', :link_to_search => :some_field
|
108
|
+
config.add_show_field 'highlight', :highlight => true
|
109
|
+
config.add_show_field 'solr_doc_accessor', :accessor => true
|
110
|
+
config.add_show_field 'explicit_accessor', :accessor => :solr_doc_accessor
|
111
|
+
config.add_show_field 'explicit_array_accessor', :accessor => [:solr_doc_accessor, :some_method]
|
112
|
+
config.add_show_field 'explicit_accessor_with_arg', :accessor => :solr_doc_accessor_with_arg
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should check for an explicit value" do
|
117
|
+
document.should_not_receive(:get).with('asdf', :sep => nil)
|
118
|
+
request_context.should_not_receive(:render_asdf_document_show_field)
|
119
|
+
value = subject.render_document_show_field_value 'asdf', :value => 'val1'
|
120
|
+
expect(value).to eq 'val1'
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should check for a helper method to call" do
|
124
|
+
document.should_receive(:get).with('asdf', :sep => nil)
|
125
|
+
request_context.stub(:render_asdf_document_show_field).and_return('custom asdf value')
|
126
|
+
value = subject.render_document_show_field_value 'asdf'
|
127
|
+
expect(value).to eq 'custom asdf value'
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should check for a link_to_search" do
|
131
|
+
document.should_receive(:get).with('link_to_search_true', :sep => nil).and_return('x')
|
132
|
+
request_context.should_receive(:search_action_path).with('').and_return('/foo')
|
133
|
+
request_context.should_receive(:link_to).with("x", '/foo').and_return('bar')
|
134
|
+
value = subject.render_document_show_field_value 'link_to_search_true'
|
135
|
+
expect(value).to eq 'bar'
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should check for a link_to_search with a field name" do
|
139
|
+
document.should_receive(:get).with('link_to_search_named', :sep => nil).and_return('x')
|
140
|
+
request_context.should_receive(:search_action_path).with('').and_return('/foo')
|
141
|
+
request_context.should_receive(:link_to).with("x", '/foo').and_return('bar')
|
142
|
+
value = subject.render_document_show_field_value 'link_to_search_named'
|
143
|
+
expect(value).to eq 'bar'
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should gracefully handle when no highlight field is available" do
|
147
|
+
document.should_not_receive(:get)
|
148
|
+
document.should_receive(:has_highlight_field?).and_return(false)
|
149
|
+
value = subject.render_document_show_field_value 'highlight'
|
150
|
+
expect(value).to be_blank
|
151
|
+
end
|
152
|
+
|
153
|
+
it "should check for a highlighted field" do
|
154
|
+
document.should_not_receive(:get)
|
155
|
+
document.should_receive(:has_highlight_field?).and_return(true)
|
156
|
+
document.should_receive(:highlight_field).with('highlight').and_return(['<em>highlight</em>'.html_safe])
|
157
|
+
value = subject.render_document_show_field_value 'highlight'
|
158
|
+
expect(value).to eq '<em>highlight</em>'
|
159
|
+
end
|
160
|
+
|
161
|
+
|
162
|
+
it "should check the document field value" do
|
163
|
+
document.should_receive(:get).with('qwer', :sep => nil).and_return('document qwer value')
|
164
|
+
value = subject.render_document_show_field_value 'qwer'
|
165
|
+
expect(value).to eq 'document qwer value'
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should work with show fields that aren't explicitly defined" do
|
169
|
+
document.should_receive(:get).with('mnbv', :sep => nil).and_return('document mnbv value')
|
170
|
+
value = subject.render_document_show_field_value 'mnbv'
|
171
|
+
expect(value).to eq 'document mnbv value'
|
172
|
+
end
|
173
|
+
|
174
|
+
it "should call an accessor on the solr document" do
|
175
|
+
document.stub(:solr_doc_accessor => "123")
|
176
|
+
value = subject.render_document_show_field_value 'solr_doc_accessor'
|
177
|
+
expect(value).to eq "123"
|
178
|
+
end
|
179
|
+
|
180
|
+
it "should call an explicit accessor on the solr document" do
|
181
|
+
document.stub(:solr_doc_accessor => "123")
|
182
|
+
value = subject.render_document_show_field_value 'explicit_accessor'
|
183
|
+
expect(value).to eq "123"
|
184
|
+
end
|
185
|
+
|
186
|
+
it "should call an explicit array-style accessor on the solr document" do
|
187
|
+
document.stub(:solr_doc_accessor => double(:some_method => "123"))
|
188
|
+
value = subject.render_document_show_field_value 'explicit_array_accessor'
|
189
|
+
expect(value).to eq "123"
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should call an accessor on the solr document with the field as an argument" do
|
193
|
+
expect(document).to receive(:solr_doc_accessor_with_arg).with('explicit_accessor_with_arg').and_return("123")
|
194
|
+
value = subject.render_document_show_field_value 'explicit_accessor_with_arg'
|
195
|
+
expect(value).to eq "123"
|
196
|
+
end
|
197
|
+
end
|
198
|
+
describe "render_field_value" do
|
199
|
+
it "should join and html-safe values" do
|
200
|
+
expect(subject.render_field_value(['a', 'b'])).to eq "a, b"
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should join values using the field_value_separator" do
|
204
|
+
subject.stub(:field_value_separator).and_return(" -- ")
|
205
|
+
expect(subject.render_field_value(['a', 'b'])).to eq "a -- b"
|
206
|
+
end
|
207
|
+
|
208
|
+
it "should use the separator from the Blacklight field configuration by default" do
|
209
|
+
expect(subject.render_field_value(['c', 'd'], double(:separator => '; ', :itemprop => nil))).to eq "c; d"
|
210
|
+
end
|
211
|
+
|
212
|
+
it "should include schema.org itemprop attributes" do
|
213
|
+
expect(subject.render_field_value('a', double(:separator => nil, :itemprop => 'some-prop'))).to have_selector("span[@itemprop='some-prop']", :text => "a")
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
data/spec/lib/utils_spec.rb
CHANGED
@@ -84,5 +84,13 @@ describe 'Blacklight::Utils' do
|
|
84
84
|
expect(@h[:a]).to eq 'a'
|
85
85
|
end
|
86
86
|
end
|
87
|
+
|
88
|
+
describe "#to_json" do
|
89
|
+
subject { Blacklight::OpenStructWithHashAccess.new a: 1, b: 2}
|
90
|
+
|
91
|
+
it "should serialize as json" do
|
92
|
+
expect(subject.to_json).to eq ({a: 1, b:2}).to_json
|
93
|
+
end
|
94
|
+
end
|
87
95
|
end
|
88
96
|
end
|
@@ -1,30 +1,38 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "catalog/index.html.erb" do
|
4
|
-
it "should render the sidebar and content panes" do
|
5
|
-
view.stub(:blacklight_config).and_return(Blacklight::Configuration.new)
|
6
|
-
render
|
7
|
-
expect(rendered).to match /id="sidebar"/
|
8
|
-
expect(rendered).to match /id="content"/
|
9
|
-
end
|
10
4
|
|
11
|
-
|
12
|
-
|
5
|
+
describe "with no search parameters" do
|
6
|
+
before do
|
7
|
+
view.stub(:has_search_parameters?).and_return(false)
|
8
|
+
view.stub(:blacklight_config).and_return(Blacklight::Configuration.new)
|
9
|
+
end
|
10
|
+
it "should render the sidebar and content panes" do
|
11
|
+
render
|
12
|
+
expect(rendered).to match /id="sidebar"/
|
13
|
+
expect(rendered).to match /id="content"/
|
14
|
+
end
|
13
15
|
|
14
|
-
|
15
|
-
|
16
|
-
|
16
|
+
it "should render the search_sidebar partial " do
|
17
|
+
stub_template "catalog/_search_sidebar.html.erb" => "sidebar_content"
|
18
|
+
render
|
19
|
+
expect(rendered).to match /sidebar_content/
|
20
|
+
end
|
17
21
|
end
|
18
22
|
|
19
|
-
|
20
|
-
|
21
|
-
|
23
|
+
describe "with search parameters" do
|
24
|
+
before do
|
25
|
+
view.stub(:has_search_parameters?).and_return(true)
|
26
|
+
stub_template "catalog/_results_pagination.html.erb" => ""
|
27
|
+
stub_template "catalog/_search_header.html.erb" => "header_content"
|
22
28
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
render
|
28
|
-
|
29
|
+
view.stub(:blacklight_config).and_return(Blacklight::Configuration.new)
|
30
|
+
view.stub(:render_opensearch_response_metadata).and_return("")
|
31
|
+
assign(:response, double(:empty? => true))
|
32
|
+
end
|
33
|
+
it "should render the search_header partial " do
|
34
|
+
render
|
35
|
+
expect(rendered).to match /header_content/
|
36
|
+
end
|
29
37
|
end
|
30
|
-
end
|
38
|
+
end
|
@@ -13,13 +13,21 @@ describe "catalog/show.html.erb" do
|
|
13
13
|
before :each do
|
14
14
|
view.stub(:has_user_authentication_provider? => false)
|
15
15
|
view.stub(:render_document_sidebar_partial => "Sidebar")
|
16
|
+
assign :document, document
|
17
|
+
view.stub(:blacklight_config).and_return(blacklight_config)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should set the @page_title" do
|
21
|
+
view.stub(:document_show_html_title).and_return("Heading")
|
22
|
+
render
|
23
|
+
page_title = view.instance_variable_get(:@page_title)
|
24
|
+
expect(page_title).to eq "Heading - Blacklight"
|
25
|
+
expect(page_title).to be_html_safe
|
16
26
|
end
|
17
27
|
|
18
28
|
it "should include schema.org itemscope/type properties" do
|
19
29
|
view.stub(:document_show_html_title).and_return("Heading")
|
20
30
|
document.stub(:itemtype => 'some-item-type-uri')
|
21
|
-
assign :document, document
|
22
|
-
view.stub(:blacklight_config).and_return(blacklight_config)
|
23
31
|
render
|
24
32
|
|
25
33
|
expect(rendered).to have_selector('div#document[@itemscope]')
|
@@ -28,11 +36,9 @@ describe "catalog/show.html.erb" do
|
|
28
36
|
|
29
37
|
it "should render the show_header and show partials by default" do
|
30
38
|
view.stub(:render_grouped_response?).and_return(false)
|
31
|
-
view.stub(:blacklight_config).and_return(blacklight_config)
|
32
39
|
stub_template "catalog/_show_header_default.html.erb" => "document_header"
|
33
40
|
stub_template "catalog/_show_default.html.erb" => "show_default"
|
34
41
|
|
35
|
-
assign :document, document
|
36
42
|
render
|
37
43
|
|
38
44
|
expect(rendered).to match /document_header/
|
@@ -42,15 +48,13 @@ describe "catalog/show.html.erb" do
|
|
42
48
|
|
43
49
|
it "should use the show.partials parameter to determine the partials to render" do
|
44
50
|
view.stub(:render_grouped_response?).and_return(false)
|
45
|
-
view.stub(:blacklight_config).and_return(blacklight_config)
|
46
51
|
blacklight_config.show.partials = ['a', 'b', 'c']
|
47
52
|
stub_template "catalog/_a_default.html.erb" => "a_partial"
|
48
53
|
stub_template "catalog/_b_default.html.erb" => "b_partial"
|
49
54
|
stub_template "catalog/_c_default.html.erb" => "c_partial"
|
50
|
-
assign :document, document
|
51
55
|
render
|
52
56
|
expect(rendered).to match /a_partial/
|
53
57
|
expect(rendered).to match /b_partial/
|
54
58
|
expect(rendered).to match /c_partial/
|
55
59
|
end
|
56
|
-
end
|
60
|
+
end
|
data/template.demo.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
gem "blacklight"
|
2
|
+
|
3
|
+
run "bundle install"
|
4
|
+
|
5
|
+
# run the blacklight install generator
|
6
|
+
generate 'blacklight:install', '--devise --marc --jettywrapper'
|
7
|
+
|
8
|
+
# run the database migrations
|
9
|
+
rake "db:migrate"
|
10
|
+
|
11
|
+
# index some data
|
12
|
+
rake "jetty:clean"
|
13
|
+
|
14
|
+
require 'rails'
|
15
|
+
require 'jettywrapper'
|
16
|
+
|
17
|
+
jetty_params = Jettywrapper.load_config('development')
|
18
|
+
Jettywrapper.wrap(jetty_params) do
|
19
|
+
rake "blacklight:solr:seed"
|
20
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Rochkind
|
@@ -115,14 +115,14 @@ dependencies:
|
|
115
115
|
requirements:
|
116
116
|
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version: 1.
|
118
|
+
version: 1.7.0
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
123
|
- - ">="
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: 1.
|
125
|
+
version: 1.7.0
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: blacklight-marc
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -353,10 +353,12 @@ files:
|
|
353
353
|
- blacklight.gemspec
|
354
354
|
- config/jetty.yml
|
355
355
|
- config/locales/blacklight.en.yml
|
356
|
+
- config/locales/blacklight.es.yml
|
356
357
|
- config/locales/blacklight.fr.yml
|
357
358
|
- db/migrate/20140202020201_create_searches.rb
|
358
359
|
- db/migrate/20140202020202_create_bookmarks.rb
|
359
360
|
- gemfiles/rails3.gemfile
|
361
|
+
- gemfiles/rails4.1.gemfile
|
360
362
|
- gemfiles/rails4.gemfile
|
361
363
|
- lib/blacklight.rb
|
362
364
|
- lib/blacklight/base.rb
|
@@ -371,10 +373,12 @@ files:
|
|
371
373
|
- lib/blacklight/configuration/sort_field.rb
|
372
374
|
- lib/blacklight/configuration/view_config.rb
|
373
375
|
- lib/blacklight/controller.rb
|
376
|
+
- lib/blacklight/document_presenter.rb
|
374
377
|
- lib/blacklight/engine.rb
|
375
378
|
- lib/blacklight/exceptions.rb
|
376
379
|
- lib/blacklight/facet.rb
|
377
380
|
- lib/blacklight/rails/routes.rb
|
381
|
+
- lib/blacklight/request_builders.rb
|
378
382
|
- lib/blacklight/routes.rb
|
379
383
|
- lib/blacklight/search_fields.rb
|
380
384
|
- lib/blacklight/solr.rb
|
@@ -401,7 +405,6 @@ files:
|
|
401
405
|
- lib/blacklight/version.rb
|
402
406
|
- lib/generators/blacklight/assets_generator.rb
|
403
407
|
- lib/generators/blacklight/install_generator.rb
|
404
|
-
- lib/generators/blacklight/jetty_generator.rb
|
405
408
|
- lib/generators/blacklight/models_generator.rb
|
406
409
|
- lib/generators/blacklight/templates/alternate_controller.rb
|
407
410
|
- lib/generators/blacklight/templates/blacklight.css.scss
|
@@ -451,11 +454,13 @@ files:
|
|
451
454
|
- spec/lib/blacklight/solr/document_spec.rb
|
452
455
|
- spec/lib/blacklight/solr/request_spec.rb
|
453
456
|
- spec/lib/blacklight/solr_helper_spec.rb
|
457
|
+
- spec/lib/blacklight/solr_response/facets_spec.rb
|
454
458
|
- spec/lib/blacklight/solr_response/group_response_spec.rb
|
455
459
|
- spec/lib/blacklight/solr_response/group_spec.rb
|
456
460
|
- spec/lib/blacklight/solr_response_spec.rb
|
457
461
|
- spec/lib/blacklight/user_spec.rb
|
458
462
|
- spec/lib/blacklight_spec.rb
|
463
|
+
- spec/lib/document_presenter_spec.rb
|
459
464
|
- spec/lib/tasks/blacklight_task_spec.rb
|
460
465
|
- spec/lib/utils_spec.rb
|
461
466
|
- spec/models/bookmark_spec.rb
|
@@ -491,6 +496,7 @@ files:
|
|
491
496
|
- spec/views/catalog/opensearch.xml.builder_spec.rb
|
492
497
|
- spec/views/catalog/show.html.erb_spec.rb
|
493
498
|
- tasks/blacklight.rake
|
499
|
+
- template.demo.rb
|
494
500
|
homepage: http://projectblacklight.org/
|
495
501
|
licenses:
|
496
502
|
- Apache 2.0
|
@@ -555,11 +561,13 @@ test_files:
|
|
555
561
|
- spec/lib/blacklight/solr/document_spec.rb
|
556
562
|
- spec/lib/blacklight/solr/request_spec.rb
|
557
563
|
- spec/lib/blacklight/solr_helper_spec.rb
|
564
|
+
- spec/lib/blacklight/solr_response/facets_spec.rb
|
558
565
|
- spec/lib/blacklight/solr_response/group_response_spec.rb
|
559
566
|
- spec/lib/blacklight/solr_response/group_spec.rb
|
560
567
|
- spec/lib/blacklight/solr_response_spec.rb
|
561
568
|
- spec/lib/blacklight/user_spec.rb
|
562
569
|
- spec/lib/blacklight_spec.rb
|
570
|
+
- spec/lib/document_presenter_spec.rb
|
563
571
|
- spec/lib/tasks/blacklight_task_spec.rb
|
564
572
|
- spec/lib/utils_spec.rb
|
565
573
|
- spec/models/bookmark_spec.rb
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
require 'openssl'
|
3
|
-
|
4
|
-
module Blacklight
|
5
|
-
class Jetty < Rails::Generators::Base
|
6
|
-
source_root File.expand_path('../templates', __FILE__)
|
7
|
-
|
8
|
-
|
9
|
-
argument :save_location, :type=>"string", :desc => "where to install the jetty", :default => "./jetty"
|
10
|
-
class_option :environment, :aliases => "-e", :type=>"string", :desc => "environment to use jetty with. Will insert into solr.yml, and also offer to index test data in test environment.", :default => Rails.env
|
11
|
-
# change this to a different download if you want to peg to a different
|
12
|
-
# tagged version of our known-good jetty/solr.
|
13
|
-
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE # (Required by jruby)
|
14
|
-
class_option :download_url, :aliases => "-u", :type=>"string", :default =>"https://github.com/projectblacklight/blacklight-jetty/zipball/v4.0.0" , :desc=>"location of zip file including a jetty with solr setup for blacklight."
|
15
|
-
class_option :downloaded_package, :aliases => "-d", :type=>"string", :desc => "manual download of BL-jetty zip file"
|
16
|
-
|
17
|
-
|
18
|
-
desc """
|
19
|
-
Installs a jetty container with a solr installed in it. A solr setup known
|
20
|
-
good with default blacklight setup, including solr conf files for out
|
21
|
-
of the box blacklight.
|
22
|
-
|
23
|
-
Also adds jetty_path key to solr.yml for selected environment, to refer
|
24
|
-
to this install.
|
25
|
-
|
26
|
-
Requires system('unzip... ') to work, probably won't work on Windows.
|
27
|
-
|
28
|
-
"""
|
29
|
-
|
30
|
-
def download_jetty
|
31
|
-
tmp_save_dir = File.join(Rails.root, "tmp", "jetty_generator")
|
32
|
-
empty_directory(tmp_save_dir)
|
33
|
-
|
34
|
-
begin
|
35
|
-
unless options[:downloaded_package]
|
36
|
-
begin
|
37
|
-
say_status("fetching", options[:download_url])
|
38
|
-
zip_file = File.join(tmp_save_dir, "bl_jetty.zip")
|
39
|
-
get(options[:download_url], zip_file)
|
40
|
-
rescue Exception => e
|
41
|
-
say_status("error", "Could not download #{options[:download_url]} : #{e}", :red)
|
42
|
-
raise Thor::Error.new("Try downloading manually and then using '-d' option?")
|
43
|
-
end
|
44
|
-
else
|
45
|
-
zip_file = options[:downloaded_package]
|
46
|
-
end
|
47
|
-
|
48
|
-
|
49
|
-
say_status("unzipping", zip_file)
|
50
|
-
"unzip -d #{tmp_save_dir} -qo #{zip_file}".tap do |command|
|
51
|
-
system(command) or raise Thor::Error.new("Error executing: #{command}")
|
52
|
-
end
|
53
|
-
# It unzips into a top_level directory we've got to find by name
|
54
|
-
# in the tmp dir, sadly.
|
55
|
-
expanded_dir = Dir[File.join(tmp_save_dir, "projectblacklight-blacklight-jetty-*")].first
|
56
|
-
|
57
|
-
if File.exists?( save_location ) && ! options[:force]
|
58
|
-
raise Thor::Error.new("cancelled by user") unless [nil, "", "Y", "y"].include? ask("Copy over existing #{save_location}? [Yn]")
|
59
|
-
end
|
60
|
-
|
61
|
-
directory(expanded_dir, save_location, :verbose => false)
|
62
|
-
say_status("installed", save_location )
|
63
|
-
ensure
|
64
|
-
remove_dir(tmp_save_dir)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|