blacklight 5.18.0 → 5.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop_hound.yml +0 -4
- data/.travis.yml +8 -10
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/core.js +19 -5
- data/app/helpers/blacklight/catalog_helper_behavior.rb +1 -1
- data/app/helpers/blacklight/configuration_helper_behavior.rb +1 -1
- data/app/helpers/blacklight/facets_helper_behavior.rb +1 -1
- data/app/presenters/blacklight/document_presenter.rb +2 -2
- data/lib/blacklight/configuration/fields.rb +1 -1
- data/lib/blacklight/search_builder.rb +1 -1
- data/lib/blacklight/solr/response/spelling.rb +1 -1
- data/spec/features/search_formats_spec.rb +6 -1
- data/spec/helpers/hash_as_hidden_fields_spec.rb +7 -7
- data/spec/models/blacklight/solr/response_spec.rb +11 -0
- data/spec/spec_helper.rb +43 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d95698b0c62bbcfda4b25ab964d44e561038f2a
|
4
|
+
data.tar.gz: bf198778fca1e08d985d5f25bcdb81d618d265d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 920425d9d9c2a45bde71b8fb12dc53071bfcca0e4e26579052ca8e8e7b40d9d9a0e01dae1c4a1665d7525a7302dca3cb612217fc23b6da272db702d6bff08a7b
|
7
|
+
data.tar.gz: 646bb31cea472f1211ea0d3bca51e422eec059a473b4c56cc0a2b43489039071e4c212992d30b3daf93122ec784590931f08ba15c7f03823077b9d3372e1be73
|
data/.gitignore
CHANGED
data/.rubocop_hound.yml
CHANGED
@@ -648,10 +648,6 @@ Style/Blocks:
|
|
648
648
|
ugly). Prefer {...} over do...end for single-line blocks.
|
649
649
|
StyleGuide: https://github.com/bbatsov/ruby-style-guide#single-line-blocks
|
650
650
|
Enabled: true
|
651
|
-
Style/CaseEquality:
|
652
|
-
Description: Avoid explicit use of the case equality operator(===).
|
653
|
-
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-case-equality
|
654
|
-
Enabled: false
|
655
651
|
Style/CharacterLiteral:
|
656
652
|
Description: Checks for uses of character literals.
|
657
653
|
StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-character-literals
|
data/.travis.yml
CHANGED
@@ -5,26 +5,24 @@ notifications:
|
|
5
5
|
email: false
|
6
6
|
|
7
7
|
rvm:
|
8
|
-
- 2.
|
8
|
+
- 2.3.1
|
9
9
|
|
10
10
|
matrix:
|
11
11
|
include:
|
12
|
-
- rvm: 2.2.
|
12
|
+
- rvm: 2.2.5
|
13
13
|
env: "RAILS_VERSION=4.0.13"
|
14
|
-
- rvm: 2.2.
|
14
|
+
- rvm: 2.2.5
|
15
15
|
env: "RAILS_VERSION=4.1.13"
|
16
|
-
- rvm: 2.1.
|
17
|
-
env: "RAILS_VERSION=4.2.
|
18
|
-
- rvm: jruby
|
19
|
-
env: "RAILS_VERSION=4.2.
|
20
|
-
- rvm: 1.9.3
|
21
|
-
env: "RAILS_VERSION=4.2.4"
|
16
|
+
- rvm: 2.1.5
|
17
|
+
env: "RAILS_VERSION=4.2.7.1"
|
18
|
+
- rvm: jruby-9.0.5.0
|
19
|
+
env: "RAILS_VERSION=4.2.7.1 JRUBY_OPTS=\"-J-Xms512m -J-Xmx1024m\""
|
22
20
|
|
23
21
|
before_install:
|
24
22
|
- gem install bundler
|
25
23
|
|
26
24
|
env:
|
27
|
-
- "RAILS_VERSION=4.2.
|
25
|
+
- "RAILS_VERSION=4.2.7.1"
|
28
26
|
|
29
27
|
notifications:
|
30
28
|
irc: "irc.freenode.org#blacklight"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.
|
1
|
+
5.19.0
|
@@ -9,17 +9,31 @@ Blacklight = function() {
|
|
9
9
|
for(var i = 0; i < buffer.length; i++) {
|
10
10
|
buffer[i].call();
|
11
11
|
}
|
12
|
+
},
|
13
|
+
|
14
|
+
listeners: function () {
|
15
|
+
var listeners = [];
|
16
|
+
if (Turbolinks && Turbolinks.supported) {
|
17
|
+
// Turbolinks 5
|
18
|
+
if (Turbolinks.BrowserAdapter) {
|
19
|
+
listeners.push('turbolinks:load');
|
20
|
+
} else {
|
21
|
+
// Turbolinks < 5
|
22
|
+
listeners.push('page:load', 'ready');
|
23
|
+
}
|
24
|
+
} else {
|
25
|
+
listeners.push('ready');
|
26
|
+
}
|
27
|
+
|
28
|
+
return listeners.join(' ');
|
12
29
|
}
|
13
|
-
}
|
30
|
+
};
|
14
31
|
}();
|
15
32
|
|
16
33
|
// turbolinks triggers page:load events on page transition
|
17
34
|
// If app isn't using turbolinks, this event will never be triggered, no prob.
|
18
|
-
$(document).on(
|
35
|
+
$(document).on(Blacklight.listeners(), function() {
|
19
36
|
Blacklight.activate();
|
20
37
|
});
|
21
38
|
|
22
|
-
$(document).ready(function() {
|
23
|
-
Blacklight.activate();
|
24
|
-
});
|
25
39
|
|
@@ -187,7 +187,7 @@ module Blacklight::CatalogHelperBehavior
|
|
187
187
|
end
|
188
188
|
|
189
189
|
if value
|
190
|
-
if url_options
|
190
|
+
if url_options == false || url_options[:suppress_link]
|
191
191
|
value
|
192
192
|
else
|
193
193
|
link_to_document document, value, url_options
|
@@ -196,7 +196,7 @@ module Blacklight::ConfigurationHelperBehavior
|
|
196
196
|
# @param displayable_config [#if,#unless] an object that responds to if/unless
|
197
197
|
# @return [Boolean]
|
198
198
|
def evaluate_if_unless_configuration displayable_config, *args
|
199
|
-
return displayable_config if displayable_config
|
199
|
+
return displayable_config if displayable_config == true or displayable_config == false
|
200
200
|
|
201
201
|
if_value = !displayable_config.respond_to?(:if) ||
|
202
202
|
displayable_config.if.nil? ||
|
@@ -218,7 +218,7 @@ module Blacklight::FacetsHelperBehavior
|
|
218
218
|
facet_config.query[value][:label]
|
219
219
|
when facet_config.date
|
220
220
|
localization_options = {}
|
221
|
-
localization_options = facet_config.date unless facet_config.date
|
221
|
+
localization_options = facet_config.date unless facet_config.date == true
|
222
222
|
l(value.to_datetime, localization_options)
|
223
223
|
else
|
224
224
|
value
|
@@ -167,7 +167,7 @@ module Blacklight
|
|
167
167
|
@document.highlight_field(field_config.field).map(&:html_safe) if @document.has_highlight_field? field_config.field
|
168
168
|
when (field_config and field_config.accessor)
|
169
169
|
# implicit method call
|
170
|
-
if field_config.accessor
|
170
|
+
if field_config.accessor == true
|
171
171
|
@document.send(field)
|
172
172
|
# arity-1 method call (include the field name in the call)
|
173
173
|
elsif !field_config.accessor.is_a?(Array) && @document.method(field_config.accessor).arity != 0
|
@@ -194,7 +194,7 @@ module Blacklight
|
|
194
194
|
when (field_config and field_config.helper_method)
|
195
195
|
@controller.send(field_config.helper_method, options.merge(document: @document, field: field, config: field_config, value: value))
|
196
196
|
when (field_config and field_config.link_to_search)
|
197
|
-
link_field = if field_config.link_to_search
|
197
|
+
link_field = if field_config.link_to_search == true
|
198
198
|
field_config.key
|
199
199
|
else
|
200
200
|
field_config.link_to_search
|
@@ -15,7 +15,7 @@ module Blacklight
|
|
15
15
|
# @param [List<Symbol>,TrueClass] processor_chain a list of filter methods to run or true, to use the default methods
|
16
16
|
# @param [Object] scope the scope where the filter methods reside in.
|
17
17
|
def initialize(processor_chain, scope)
|
18
|
-
@processor_chain = if processor_chain
|
18
|
+
@processor_chain = if processor_chain == true
|
19
19
|
default_processor_chain.dup
|
20
20
|
else
|
21
21
|
processor_chain
|
@@ -57,7 +57,7 @@ module Blacklight::Solr::Response::Spelling
|
|
57
57
|
# origFreq =>
|
58
58
|
# suggestion => [{ frequency =>, word => }] # for extended results
|
59
59
|
# suggestion => ['word'] # for non-extended results
|
60
|
-
if suggestions.index("correctlySpelled")
|
60
|
+
if term_info['suggestion'].first.is_a?(Hash) or suggestions.index("correctlySpelled")
|
61
61
|
word_suggestions << term_info['suggestion'].map do |suggestion|
|
62
62
|
suggestion['word'] if suggestion['freq'] > term_info['origFreq']
|
63
63
|
end
|
@@ -6,10 +6,15 @@ describe "Search Formats" do
|
|
6
6
|
before do
|
7
7
|
# Get all the fields from Solr, so the #index documents have the MARC field (to trigger appropriate
|
8
8
|
# export formats)
|
9
|
+
@current = CatalogController.blacklight_config.default_solr_params.dup
|
9
10
|
CatalogController.blacklight_config.default_solr_params[:fl] = '*'
|
10
11
|
end
|
11
12
|
|
12
|
-
|
13
|
+
after do
|
14
|
+
CatalogController.blacklight_config.default_solr_params = @current
|
15
|
+
end
|
16
|
+
|
17
|
+
it "has an RSS XML response" do
|
13
18
|
visit "/catalog.rss?q="
|
14
19
|
expect(page).to have_content "Blacklight Search Results"
|
15
20
|
doc = Nokogiri::XML(page.body)
|
@@ -10,13 +10,13 @@ describe HashAsHiddenFieldsHelper do
|
|
10
10
|
|
11
11
|
generated = render_hash_as_hidden_fields(@hash)
|
12
12
|
|
13
|
-
expect(generated).to have_selector("input[type='hidden'][name='q'][value='query']")
|
14
|
-
expect(generated).to have_selector("input[type='hidden'][name='per_page'][value='10']")
|
15
|
-
expect(generated).to have_selector("input[type='hidden'][name='page'][value='5']")
|
16
|
-
expect(generated).to have_selector("input[type='hidden'][name='extra_arbitrary_key'][value='arbitrary_value']")
|
17
|
-
expect(generated).to have_selector("input[type='hidden'][name='f[field2][]'][value='z']")
|
18
|
-
expect(generated).to have_selector("input[type='hidden'][name='f[field1][]'][value='a']")
|
19
|
-
expect(generated).to have_selector("input[type='hidden'][name='f[field1][]'][value='b']")
|
13
|
+
expect(generated).to have_selector("input[type='hidden'][name='q'][value='query']", visible: false)
|
14
|
+
expect(generated).to have_selector("input[type='hidden'][name='per_page'][value='10']", visible: false)
|
15
|
+
expect(generated).to have_selector("input[type='hidden'][name='page'][value='5']", visible: false)
|
16
|
+
expect(generated).to have_selector("input[type='hidden'][name='extra_arbitrary_key'][value='arbitrary_value']", visible: false)
|
17
|
+
expect(generated).to have_selector("input[type='hidden'][name='f[field2][]'][value='z']", visible: false)
|
18
|
+
expect(generated).to have_selector("input[type='hidden'][name='f[field1][]'][value='a']", visible: false)
|
19
|
+
expect(generated).to have_selector("input[type='hidden'][name='f[field1][]'][value='b']", visible: false)
|
20
20
|
|
21
21
|
end
|
22
22
|
|
@@ -139,6 +139,13 @@ describe Blacklight::Solr::Response do
|
|
139
139
|
expect(r.spelling.words).to include("dell")
|
140
140
|
expect(r.spelling.words).to include("ultrasharp")
|
141
141
|
end
|
142
|
+
|
143
|
+
it 'provides spelling suggestions for solr 5 spellcheck results' do
|
144
|
+
raw_response = eval(mock_response_with_solr5_spellcheck)
|
145
|
+
r = Blacklight::Solr::Response.new(raw_response, {})
|
146
|
+
expect(r.spelling.words).to include("political", "politics", "policy")
|
147
|
+
end
|
148
|
+
|
142
149
|
|
143
150
|
it 'should provide spelling suggestions for extended spellcheck results' do
|
144
151
|
raw_response = eval(mock_response_with_spellcheck_extended)
|
@@ -232,4 +239,8 @@ describe Blacklight::Solr::Response do
|
|
232
239
|
def mock_response_with_more_like_this
|
233
240
|
%({'responseHeader'=>{'status'=>0,'QTime'=>8,'params'=>{'facet'=>'false','mlt.mindf'=>'1','mlt.fl'=>'subject_t','fl'=>'id','mlt.count'=>'3','mlt.mintf'=>'0','mlt'=>'true','q.alt'=>'*:*','qt'=>'search','wt'=>'ruby'}},'response'=>{'numFound'=>30,'start'=>0,'docs'=>[{'id'=>'00282214'},{'id'=>'00282371'},{'id'=>'00313831'},{'id'=>'00314247'},{'id'=>'43037890'},{'id'=>'53029833'},{'id'=>'77826928'},{'id'=>'78908283'},{'id'=>'79930185'},{'id'=>'85910001'}]},'moreLikeThis'=>{'00282214'=>{'numFound'=>0,'start'=>0,'docs'=>[]},'00282371'=>{'numFound'=>0,'start'=>0,'docs'=>[]},'00313831'=>{'numFound'=>1,'start'=>0,'docs'=>[{'id'=>'96933325'}]},'00314247'=>{'numFound'=>3,'start'=>0,'docs'=>[{'id'=>'2008543486'},{'id'=>'96933325'},{'id'=>'2009373513'}]},'43037890'=>{'numFound'=>0,'start'=>0,'docs'=>[]},'53029833'=>{'numFound'=>0,'start'=>0,'docs'=>[]},'77826928'=>{'numFound'=>1,'start'=>0,'docs'=>[{'id'=>'94120425'}]},'78908283'=>{'numFound'=>0,'start'=>0,'docs'=>[]},'79930185'=>{'numFound'=>2,'start'=>0,'docs'=>[{'id'=>'94120425'},{'id'=>'2007020969'}]},'85910001'=>{'numFound'=>0,'start'=>0,'docs'=>[]}}})
|
234
241
|
end
|
242
|
+
|
243
|
+
def mock_response_with_solr5_spellcheck
|
244
|
+
%|{'responseHeader'=>{'status'=>0,'QTime'=>1,'params'=>{'q'=>'politica','wt'=>'ruby'}},'response'=>{'numFound'=>0,'start'=>0,'maxScore'=>0.0,'docs'=>[]},'facet_counts'=>{'facet_queries'=>{},'facet_fields'=>{'format'=>[],'lc_1letter_facet'=>[],'lc_alpha_facet'=>[],'lc_b4cutter_facet'=>[],'language_facet'=>[],'pub_date'=>[],'subject_era_facet'=>[],'subject_geo_facet'=>[],'subject_topic_facet'=>[]},'facet_ranges'=>{},'facet_intervals'=>{},'facet_heatmaps'=>{}},'spellcheck'=>{'suggestions'=>['politica',{'numFound'=>3,'startOffset'=>0,'endOffset'=>8,'origFreq'=>0,'suggestion'=>[{'word'=>'political','freq'=>3},{'word'=>'politics','freq'=>3},{'word'=>'policy','freq'=>2}]}],'correctlySpelled'=>false}}|
|
245
|
+
end
|
235
246
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -56,4 +56,47 @@ RSpec.configure do |config|
|
|
56
56
|
|
57
57
|
config.include Devise::TestHelpers, type: :controller
|
58
58
|
config.infer_spec_type_from_file_location!
|
59
|
+
|
60
|
+
config.expect_with :rspec do |expectations|
|
61
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
62
|
+
end
|
63
|
+
|
64
|
+
config.default_formatter = 'doc' if config.files_to_run.one?
|
65
|
+
|
66
|
+
config.shared_context_metadata_behavior = :apply_to_host_groups
|
67
|
+
|
68
|
+
# This allows you to limit a spec run to individual examples or groups
|
69
|
+
# you care about by tagging them with `:focus` metadata. When nothing
|
70
|
+
# is tagged with `:focus`, all examples get run. RSpec also provides
|
71
|
+
# aliases for `it`, `describe`, and `context` that include `:focus`
|
72
|
+
# metadata: `fit`, `fdescribe` and `fcontext`, respectively.
|
73
|
+
config.filter_run_when_matching :focus
|
74
|
+
|
75
|
+
config.example_status_persistence_file_path = 'spec/examples.txt'
|
76
|
+
# Many RSpec users commonly either run the entire suite or an individual
|
77
|
+
# file, and it's useful to allow more verbose output when running an
|
78
|
+
# individual spec file.
|
79
|
+
if config.files_to_run.one?
|
80
|
+
# Use the documentation formatter for detailed output,
|
81
|
+
# unless a formatter has already been configured
|
82
|
+
# (e.g. via a command-line flag).
|
83
|
+
config.default_formatter = 'doc'
|
84
|
+
end
|
85
|
+
|
86
|
+
# Print the 10 slowest examples and example groups at the
|
87
|
+
# end of the spec run, to help surface which specs are running
|
88
|
+
# particularly slow.
|
89
|
+
config.profile_examples = 10
|
90
|
+
|
91
|
+
# Run specs in random order to surface order dependencies. If you find an
|
92
|
+
# order dependency and want to debug it, you can fix the order by providing
|
93
|
+
# the seed, which is printed after each run.
|
94
|
+
# --seed 1234
|
95
|
+
config.order = :random
|
96
|
+
|
97
|
+
# Seed global randomization in this process using the `--seed` CLI option.
|
98
|
+
# Setting this allows you to use `--seed` to deterministically reproduce
|
99
|
+
# test failures related to randomization by passing the same `--seed` value
|
100
|
+
# as the one that triggered the failure.
|
101
|
+
Kernel.srand config.seed
|
59
102
|
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.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Rochkind
|
@@ -17,7 +17,7 @@ authors:
|
|
17
17
|
autorequire:
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
|
-
date: 2016-
|
20
|
+
date: 2016-08-30 00:00:00.000000000 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: rails
|
@@ -609,7 +609,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
609
609
|
version: '0'
|
610
610
|
requirements: []
|
611
611
|
rubyforge_project:
|
612
|
-
rubygems_version: 2.
|
612
|
+
rubygems_version: 2.5.1
|
613
613
|
signing_key:
|
614
614
|
specification_version: 4
|
615
615
|
summary: Blacklight provides a discovery interface for any Solr (http://lucene.apache.org/solr)
|