blacklight 7.34.0 → 7.35.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65ccb9085e62a93389eab98519e5cb673b61d8fc3c6e973a2810e4ac66a87cf1
4
- data.tar.gz: 56e423a036a4e82382f6bda36084b79758c966ccc8757dfe004deb26963ee400
3
+ metadata.gz: 841946108f3216c1dfc66f10787069b43fdcca041e9cc3e114524bf0a5cf6aa1
4
+ data.tar.gz: 621f2d5648013ab85fa3c3c99a001824e49b24be263cd1eda45a7f5ed9e22daa
5
5
  SHA512:
6
- metadata.gz: 49ebde9d47e594d7ddeaaf893f2a9a99c4162592065800d8c4d5b3f84b7e08d2c95a57f47f20a079b0ba8bfc36e6c83fc31e96aa4587695db913a40194999a42
7
- data.tar.gz: 94a1cfe6e885d009a1117a7bede81a4db4f8215cd8b3f37b2d38fa89da17e239478556809f2265fb9a47761644da5c0ef6487042276655151b9372b0919664f8
6
+ metadata.gz: 9ae81c46a04f928701d7e16c227bf33ae9ed0ae214e6ef94bbf96bc0b33aa22ff889e286a1235d6c6a225e11597fe3e832db2c5242cc71a533229ee75dc2b407
7
+ data.tar.gz: 2005c22b35ac7a9f4c3fb065f412a6369bcf903f918bc46770d23999a509bae45d855c83b14a0e167f3acbafd900ae63f6fe4cfe30de98f8d97bb17980a64c49
data/VERSION CHANGED
@@ -1 +1 @@
1
- 7.34.0
1
+ 7.35.0
@@ -42,7 +42,11 @@ module Blacklight::Bookmarks
42
42
  @bookmarks = token_or_current_or_guest_user.bookmarks
43
43
  bookmark_ids = @bookmarks.collect { |b| b.document_id.to_s }
44
44
  @response, deprecated_document_list = search_service.fetch(bookmark_ids)
45
- @document_list = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(deprecated_document_list, "The @document_list instance variable is now deprecated and will be removed in Blacklight 8.0")
45
+ @document_list = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(
46
+ deprecated_document_list,
47
+ "The @document_list instance variable is now deprecated",
48
+ ActiveSupport::Deprecation.new("8.0", "blacklight")
49
+ )
46
50
 
47
51
  respond_to do |format|
48
52
  format.html {}
@@ -34,7 +34,11 @@ module Blacklight::Catalog
34
34
  def index
35
35
  (@response, deprecated_document_list) = search_service.search_results
36
36
 
37
- @document_list = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(deprecated_document_list, 'The @document_list instance variable is deprecated; use @response.documents instead.')
37
+ @document_list = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(
38
+ deprecated_document_list,
39
+ 'The @document_list instance variable is deprecated; use @response.documents instead.',
40
+ ActiveSupport::Deprecation.new("8.0", "blacklight")
41
+ )
38
42
 
39
43
  respond_to do |format|
40
44
  format.html { store_preferred_view }
@@ -53,7 +57,11 @@ module Blacklight::Catalog
53
57
  # to add responses for formats other than html or json see _Blacklight::Document::Export_
54
58
  def show
55
59
  deprecated_response, @document = search_service.fetch(params[:id])
56
- @response = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(deprecated_response, 'The @response instance variable is deprecated; use @document.response instead.')
60
+ @response = ActiveSupport::Deprecation::DeprecatedObjectProxy.new(
61
+ deprecated_response,
62
+ 'The @response instance variable is deprecated; use @document.response instead.',
63
+ ActiveSupport::Deprecation.new("8.0", "blacklight")
64
+ )
57
65
 
58
66
  respond_to do |format|
59
67
  format.html { @search_context = setup_next_and_previous_documents }
@@ -28,6 +28,16 @@ module Blacklight::Document
28
28
  def find id
29
29
  repository.find(id).documents.first
30
30
  end
31
+
32
+ # In Rails 7.1+, needs this method
33
+ def composite_primary_key?
34
+ false
35
+ end
36
+
37
+ # In Rails 7.1+, needs this method
38
+ def has_query_constraints?
39
+ false
40
+ end
31
41
  end
32
42
 
33
43
  ##
data/app/models/search.rb CHANGED
@@ -4,7 +4,12 @@ class Search < ApplicationRecord
4
4
  belongs_to :user, optional: true
5
5
 
6
6
  # use a backwards-compatible serializer until the Rails API stabilizes and we can evaluate for major-revision compatibility
7
- serialize :query_params, Blacklight::SearchParamsYamlCoder
7
+ if ::Rails.version.to_f >= 7.1
8
+ # non-deprecated coder: keyword arg for Rails 7.1+
9
+ serialize :query_params, coder: Blacklight::SearchParamsYamlCoder
10
+ else
11
+ serialize :query_params, Blacklight::SearchParamsYamlCoder
12
+ end
8
13
 
9
14
  # A Search instance is considered a saved search if it has a user_id.
10
15
  def saved?
@@ -22,17 +22,19 @@ module Blacklight
22
22
 
23
23
  # @return [Array]
24
24
  def fetch
25
- Array.wrap(
26
- if field_config.highlight
27
- retrieve_highlight
28
- elsif field_config.accessor
29
- retieve_using_accessor
30
- elsif field_config.values
31
- retrieve_values
32
- else
33
- retrieve_simple
34
- end
35
- )
25
+ if field_config.highlight
26
+ value = retrieve_highlight
27
+ end
28
+ if value.blank?
29
+ value = if field_config.accessor
30
+ retieve_using_accessor
31
+ elsif field_config.values
32
+ retrieve_values
33
+ else
34
+ retrieve_simple
35
+ end
36
+ end
37
+ Array.wrap(value)
36
38
  end
37
39
 
38
40
  private
data/blacklight.gemspec CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.required_ruby_version = '>= 2.5'
27
27
 
28
- s.add_dependency "rails", '>= 5.1', '< 7.1'
28
+ s.add_dependency "rails", '>= 5.1', '< 7.2'
29
29
  s.add_dependency "globalid"
30
30
  s.add_dependency "jbuilder", '~> 2.7'
31
31
  s.add_dependency "kaminari", ">= 0.15" # the pagination (page 1,2,3, etc..) of our search results
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
36
36
  s.add_dependency 'hashdiff'
37
37
 
38
38
  s.add_development_dependency "rsolr", ">= 1.0.6", "< 3" # Library for interacting with rSolr.
39
- s.add_development_dependency "rspec-rails", "~> 5.0"
39
+ s.add_development_dependency "rspec-rails", ">= 5.0" # some versions tested need >= 6.0
40
40
  s.add_development_dependency "rspec-collection_matchers", ">= 1.0"
41
41
  s.add_development_dependency 'axe-core-rspec'
42
42
  s.add_development_dependency "capybara", '~> 3'
@@ -6,6 +6,17 @@ module Blacklight
6
6
  class Engine < Rails::Engine
7
7
  engine_name "blacklight"
8
8
 
9
+ config.before_configuration do
10
+ # see https://github.com/fxn/zeitwerk#for_gem
11
+ # Blacklight puts a generator into LOCAL APP lib/generators, so tell
12
+ # zeitwerk to ignore the whole directory? If we're using zeitwerk
13
+ #
14
+ # https://github.com/cbeer/engine_cart/issues/117
15
+ if Rails.try(:autoloaders).try(:main).respond_to?(:ignore)
16
+ Rails.autoloaders.main.ignore(Rails.root.join('lib/generators'))
17
+ end
18
+ end
19
+
9
20
  # BlacklightHelper is needed by all helpers, so we inject it
10
21
  # into action view base here.
11
22
  initializer 'blacklight.helpers' do
@@ -51,7 +51,17 @@ RSpec.describe Blacklight::FacetComponent, type: :component do
51
51
  end
52
52
 
53
53
  before do
54
- controller.view_context.view_paths.unshift(RSpec::Rails::ViewExampleGroup::StubResolverCache.resolver_for('catalog/_facet_partial.html.erb' => 'facet partial'))
54
+ # Not sure why we need to re-implement rspec's stub_template, but
55
+ # we already were, and need a Rails 7.1+ safe alternate too
56
+ # https://github.com/rspec/rspec-rails/commit/4d65bea0619955acb15023b9c3f57a3a53183da8
57
+ # https://github.com/rspec/rspec-rails/issues/2696
58
+
59
+ replace_hash = { 'catalog/_facet_partial.html.erb' => 'facet partial' }
60
+ if ::Rails.version.to_f >= 7.1
61
+ controller.prepend_view_path(RSpec::Rails::ViewExampleGroup::StubResolverCache.resolver_for(replace_hash))
62
+ else
63
+ controller.view_context.view_paths.unshift(RSpec::Rails::ViewExampleGroup::StubResolverCache.resolver_for(replace_hash))
64
+ end
55
65
  end
56
66
 
57
67
  it 'renders the partial' do
@@ -331,12 +331,17 @@ RSpec.describe BlacklightHelper do
331
331
  blacklight_config.view.gallery(template: '/my/partial')
332
332
  end
333
333
 
334
- def stub_template(hash)
335
- view.view_paths.unshift(ActionView::FixtureResolver.new(hash))
336
- end
337
-
338
334
  it 'renders that template' do
339
- stub_template 'my/_partial.html.erb' => 'some content'
335
+ # Not sure why we need to re-implement rspec's stub_template, but
336
+ # we already were, and need a Rails 7.1+ safe alternate too
337
+ # https://github.com/rspec/rspec-rails/commit/4d65bea0619955acb15023b9c3f57a3a53183da8
338
+ # https://github.com/rspec/rspec-rails/issues/2696
339
+ replace_hash = { 'my/_partial.html.erb' => 'some content' }
340
+ if ::Rails.version.to_f >= 7.1
341
+ controller.prepend_view_path(RSpec::Rails::ViewExampleGroup::StubResolverCache.resolver_for(replace_hash))
342
+ else
343
+ view.view_paths.unshift(ActionView::FixtureResolver.new(replace_hash))
344
+ end
340
345
 
341
346
  response = helper.render_document_index_with_view :gallery, [obj1, obj1]
342
347
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Blacklight::FieldRetriever, api: true do
4
+ let(:service) { described_class.new(document, blacklight_field_config) }
5
+
6
+ let(:blacklight_field_config) { Blacklight::Configuration::Field.new(field: 'author_field', highlight: true) }
7
+ let(:document) { SolrDocument.new({ 'id' => 'doc1', 'title_field' => 'doc1 title', 'author_field' => 'author_someone' }, 'highlighting' => { 'doc1' => { 'title_tsimext' => ['doc <em>1</em>'] } }) }
8
+ let(:view_context) { {} }
9
+
10
+ context "highlighting" do
11
+ describe '#fetch' do
12
+ it "retrieves an author even if it's not highlighted" do
13
+ expect(service.fetch).to eq(['author_someone'])
14
+ end
15
+ end
16
+ end
17
+ end
data/spec/spec_helper.rb CHANGED
@@ -117,3 +117,31 @@ RSpec.configure do |config|
117
117
  # as the one that triggered the failure.
118
118
  Kernel.srand config.seed
119
119
  end
120
+
121
+ # RSpec's stub_template method needs a differnet implementation for Rails 7.1, that
122
+ # isn't yet in an rspec-rails release.
123
+ #
124
+ # First rspec-rails tried this:
125
+ # https://github.com/rspec/rspec-rails/commit/4d65bea0619955acb15023b9c3f57a3a53183da8
126
+ #
127
+ # But it was subject to this problem:
128
+ # https://github.com/rspec/rspec-rails/issues/2696
129
+ #
130
+ # Below implementation appears to work for our purposes here, so we will patch it in
131
+ # if we are on Rails 7.1+, and not yet rspec-rails 6.1 which we expect to have it.
132
+
133
+ if ::Rails.version.to_f >= 7.1 && Gem.loaded_specs["rspec-rails"].version.release < Gem::Version.new('6.1')
134
+
135
+ module RSpec
136
+ module Rails
137
+ module ViewExampleGroup
138
+ module ExampleMethods
139
+ def stub_template(hash)
140
+ controller.prepend_view_path(StubResolverCache.resolver_for(hash))
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
146
+
147
+ 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: 7.34.0
4
+ version: 7.35.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Rochkind
@@ -17,7 +17,7 @@ authors:
17
17
  autorequire:
18
18
  bindir: exe
19
19
  cert_chain: []
20
- date: 2023-10-04 00:00:00.000000000 Z
20
+ date: 2023-11-09 00:00:00.000000000 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: rails
@@ -28,7 +28,7 @@ dependencies:
28
28
  version: '5.1'
29
29
  - - "<"
30
30
  - !ruby/object:Gem::Version
31
- version: '7.1'
31
+ version: '7.2'
32
32
  type: :runtime
33
33
  prerelease: false
34
34
  version_requirements: !ruby/object:Gem::Requirement
@@ -38,7 +38,7 @@ dependencies:
38
38
  version: '5.1'
39
39
  - - "<"
40
40
  - !ruby/object:Gem::Version
41
- version: '7.1'
41
+ version: '7.2'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: globalid
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -181,14 +181,14 @@ dependencies:
181
181
  name: rspec-rails
182
182
  requirement: !ruby/object:Gem::Requirement
183
183
  requirements:
184
- - - "~>"
184
+ - - ">="
185
185
  - !ruby/object:Gem::Version
186
186
  version: '5.0'
187
187
  type: :development
188
188
  prerelease: false
189
189
  version_requirements: !ruby/object:Gem::Requirement
190
190
  requirements:
191
- - - "~>"
191
+ - - ">="
192
192
  - !ruby/object:Gem::Version
193
193
  version: '5.0'
194
194
  - !ruby/object:Gem::Dependency
@@ -894,6 +894,7 @@ files:
894
894
  - spec/presenters/thumbnail_presenter_spec.rb
895
895
  - spec/routing/catalog_routing_spec.rb
896
896
  - spec/routing/search_history_spec.rb
897
+ - spec/services/blacklight/field_retriever_spec.rb
897
898
  - spec/services/blacklight/search_service_spec.rb
898
899
  - spec/spec_helper.rb
899
900
  - spec/support/controller_level_helpers.rb
@@ -954,7 +955,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
954
955
  - !ruby/object:Gem::Version
955
956
  version: '0'
956
957
  requirements: []
957
- rubygems_version: 3.4.10
958
+ rubygems_version: 3.4.21
958
959
  signing_key:
959
960
  specification_version: 4
960
961
  summary: Blacklight provides a discovery interface for any Solr (http://lucene.apache.org/solr)
@@ -1077,6 +1078,7 @@ test_files:
1077
1078
  - spec/presenters/thumbnail_presenter_spec.rb
1078
1079
  - spec/routing/catalog_routing_spec.rb
1079
1080
  - spec/routing/search_history_spec.rb
1081
+ - spec/services/blacklight/field_retriever_spec.rb
1080
1082
  - spec/services/blacklight/search_service_spec.rb
1081
1083
  - spec/spec_helper.rb
1082
1084
  - spec/support/controller_level_helpers.rb