blacklight 8.1.0 → 8.2.1

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +8 -6
  3. data/.rubocop_todo.yml +20 -5
  4. data/VERSION +1 -1
  5. data/app/assets/javascripts/blacklight/blacklight.esm.js +41 -21
  6. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  7. data/app/assets/javascripts/blacklight/blacklight.js +41 -21
  8. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
  9. data/app/assets/stylesheets/blacklight/_mixins.scss +1 -1
  10. data/app/components/blacklight/advanced_search_form_component.html.erb +3 -3
  11. data/app/components/blacklight/advanced_search_form_component.rb +1 -1
  12. data/app/components/blacklight/document/bookmark_component.html.erb +1 -6
  13. data/app/components/blacklight/facet_field_component.html.erb +2 -1
  14. data/app/components/blacklight/icons/legacy_icon_component.rb +1 -1
  15. data/app/components/blacklight/response/facet_group_component.html.erb +0 -1
  16. data/app/components/blacklight/search/sidebar_component.html.erb +8 -6
  17. data/app/components/blacklight/search_bar_component.html.erb +36 -34
  18. data/app/components/blacklight/system/flash_message_component.html.erb +1 -1
  19. data/app/controllers/concerns/blacklight/token_based_user.rb +5 -19
  20. data/app/helpers/blacklight/url_helper_behavior.rb +3 -2
  21. data/app/javascript/blacklight/checkbox_submit.js +15 -10
  22. data/app/javascript/blacklight/modal.js +26 -12
  23. data/app/javascript/blacklight/search_context.js +1 -0
  24. data/app/values/blacklight/types.rb +14 -0
  25. data/app/views/catalog/_advanced_search_form.html.erb +1 -1
  26. data/app/views/catalog/_citation.html.erb +1 -1
  27. data/app/views/catalog/email.html.erb +2 -2
  28. data/app/views/catalog/sms.html.erb +2 -2
  29. data/app/views/kaminari/blacklight/_page.html.erb +1 -1
  30. data/blacklight.gemspec +1 -1
  31. data/config/locales/blacklight.ar.yml +0 -1
  32. data/config/locales/blacklight.ca.yml +0 -2
  33. data/config/locales/blacklight.de.yml +0 -1
  34. data/config/locales/blacklight.en.yml +0 -1
  35. data/config/locales/blacklight.es.yml +0 -1
  36. data/config/locales/blacklight.fr.yml +0 -1
  37. data/config/locales/blacklight.hu.yml +0 -1
  38. data/config/locales/blacklight.it.yml +0 -1
  39. data/config/locales/blacklight.nl.yml +0 -1
  40. data/config/locales/blacklight.pt-BR.yml +0 -1
  41. data/config/locales/blacklight.sq.yml +0 -1
  42. data/config/locales/blacklight.zh.yml +0 -1
  43. data/docker-compose.yml +0 -2
  44. data/lib/blacklight/solr/repository.rb +3 -1
  45. data/lib/blacklight/solr/response/params.rb +1 -1
  46. data/lib/blacklight/solr/search_builder_behavior.rb +2 -0
  47. data/lib/generators/blacklight/assets/importmap_generator.rb +2 -2
  48. data/lib/generators/blacklight/assets/sprockets_generator.rb +1 -1
  49. data/lib/generators/blacklight/assets_generator.rb +1 -1
  50. data/package.json +1 -1
  51. data/spec/components/blacklight/document_component_spec.rb +3 -3
  52. data/spec/components/blacklight/facet_component_spec.rb +1 -1
  53. data/spec/components/blacklight/response/view_type_component_spec.rb +1 -1
  54. data/spec/controllers/catalog_controller_spec.rb +2 -2
  55. data/spec/features/advanced_search_spec.rb +6 -0
  56. data/spec/features/citation_spec.rb +10 -0
  57. data/spec/features/sms_spec.rb +12 -0
  58. data/spec/models/blacklight/solr/response_spec.rb +1 -1
  59. data/spec/models/blacklight/solr/search_builder_spec.rb +13 -0
  60. data/spec/models/solr_document_spec.rb +6 -2
  61. data/spec/spec_helper.rb +0 -28
  62. data/spec/test_app_templates/Gemfile.extra +0 -1
  63. data/spec/views/catalog/_document.html.erb_spec.rb +1 -1
  64. data/spec/views/catalog/index.atom.builder_spec.rb +1 -1
  65. data/template.demo.rb +7 -7
  66. metadata +9 -5
@@ -154,7 +154,7 @@ RSpec.describe Blacklight::DocumentComponent, type: :component do
154
154
  def initialize(**); end
155
155
 
156
156
  def call
157
- 'embed'
157
+ 'embed'.html_safe
158
158
  end
159
159
  end)
160
160
 
@@ -167,7 +167,7 @@ RSpec.describe Blacklight::DocumentComponent, type: :component do
167
167
  Class.new(Blacklight::DocumentMetadataComponent) do
168
168
  # Override component rendering with our own value
169
169
  def call
170
- 'blah'
170
+ 'blah'.html_safe
171
171
  end
172
172
  end
173
173
  end
@@ -187,7 +187,7 @@ RSpec.describe Blacklight::DocumentComponent, type: :component do
187
187
  Class.new(Blacklight::DocumentTitleComponent) do
188
188
  # Override component rendering with our own value
189
189
  def call
190
- 'Titleriffic'
190
+ 'Titleriffic'.html_safe
191
191
  end
192
192
  end
193
193
  end
@@ -30,7 +30,7 @@ RSpec.describe Blacklight::FacetComponent, type: :component do
30
30
  end
31
31
 
32
32
  def call
33
- 'Custom facet rendering'
33
+ 'Custom facet rendering'.html_safe
34
34
  end
35
35
  end
36
36
  end
@@ -15,7 +15,7 @@ RSpec.describe Blacklight::Response::ViewTypeComponent, type: :component do
15
15
  Class.new(Blacklight::Icons::IconComponent) do
16
16
  # Override component rendering with our own value
17
17
  def call
18
- 'blah'
18
+ 'blah'.html_safe
19
19
  end
20
20
  end
21
21
  end
@@ -54,7 +54,7 @@ RSpec.describe CatalogController, api: true do
54
54
  it "has no docs or facet values for query without results", integration: true do
55
55
  get :index, params: { q: 'sadfdsafasdfsadfsadfsadf' } # query for no results
56
56
  expect(assigns(:response).docs).to be_empty
57
- assigns(:response).aggregations.each do |_key, facet|
57
+ assigns(:response).aggregations.each_value do |facet|
58
58
  expect(facet.items).to be_empty
59
59
  end
60
60
  end
@@ -815,7 +815,7 @@ end
815
815
  def assert_facets_have_values(aggregations)
816
816
  expect(aggregations).not_to be_empty
817
817
  # should have at least one value for each facet
818
- aggregations.each do |_key, facet|
818
+ aggregations.each_value do |facet|
819
819
  expect(facet.items).to have_at_least(1).item
820
820
  end
821
821
  end
@@ -118,5 +118,11 @@ RSpec.describe "Blacklight Advanced Search Form" do
118
118
  expect(page.current_url).to match(/bread/)
119
119
  expect(page.current_url).not_to match(/medicine/)
120
120
  end
121
+
122
+ it "clears the prepopulated fields when the Start Over button is pressed" do
123
+ expect(page).to have_field 'Title', with: 'medicine'
124
+ click_on 'Start over'
125
+ expect(page).not_to have_field 'Title', with: 'medicine'
126
+ end
121
127
  end
122
128
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe 'Citation functionality' do
4
+ before { visit solr_document_path('2007020969') }
5
+
6
+ it 'displays the Cite modal with expected header' do
7
+ click_link 'Cite'
8
+ expect(find('div.modal-header')).to have_text 'Cite'
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe 'SMS functionality' do
4
+ before { visit solr_document_path('2007020969') }
5
+
6
+ it 'displays SMS modal with form' do
7
+ click_link 'SMS'
8
+ expect(find('div.modal-header')).to have_text 'SMS This'
9
+ fill_in 'Phone Number:', with: '555-555-5555'
10
+ select 'Verizon', from: 'Carrier'
11
+ end
12
+ end
@@ -48,7 +48,7 @@ RSpec.describe Blacklight::Solr::Response, api: true do
48
48
 
49
49
  expect(received).to eq expected
50
50
 
51
- r.aggregations.each do |_key, facet|
51
+ r.aggregations.each_value do |facet|
52
52
  expect(facet).to respond_to :name
53
53
  expect(facet).to respond_to :sort
54
54
  expect(facet).to respond_to :offset
@@ -335,6 +335,7 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
335
335
  qf: '$subject_qf',
336
336
  pf: '$subject_pf'
337
337
  }
338
+ blacklight_config.search_fields['subject'].clause_params = nil
338
339
  end
339
340
 
340
341
  it "looks up qt from field definition" do
@@ -374,6 +375,18 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
374
375
  expect(key_value_pairs).to include("pf=$subject_pf")
375
376
  expect(key_value_pairs).to include("qf=$subject_qf")
376
377
  end
378
+
379
+ context 'when subject field uses JSON query DSL' do
380
+ before do
381
+ blacklight_config.search_fields['subject'].clause_params = {
382
+ edismax: {}
383
+ }
384
+ end
385
+
386
+ it "includes spellcheck.q, without LocalParams" do
387
+ expect(subject["spellcheck.q"]).to eq "wome"
388
+ end
389
+ end
377
390
  end
378
391
 
379
392
  describe "solr json query parameters from the fielded search" do
@@ -49,6 +49,7 @@ RSpec.describe SolrDocument, api: true do
49
49
  attribute :author, :array, 'author_tesim', of: :string
50
50
  attribute :first_author, :select, 'author_tesim', by: :min
51
51
  attribute :date, :date, field: 'date_dtsi'
52
+ attribute :time, :time, field: 'date_dtsi'
52
53
  attribute :whatever, :string, default: ->(*) { 'default_value' }
53
54
  end
54
55
  end
@@ -56,14 +57,17 @@ RSpec.describe SolrDocument, api: true do
56
57
  doc_class.new(id: '123',
57
58
  title_tesim: ['Good Omens'],
58
59
  author_tesim: ['Neil Gaiman', 'Terry Pratchett'],
59
- date_dtsi: '1990-01-01T00:00:00Z')
60
+ date_dtsi: '1990-01-01T17:23:13Z')
60
61
  end
61
62
 
62
63
  it "casts the attributes" do
63
64
  expect(document.title).to eq 'Good Omens'
64
65
  expect(document.author).to eq ['Neil Gaiman', 'Terry Pratchett']
65
66
  expect(document.first_author).to eq 'Neil Gaiman'
66
- expect(document.date).to eq Date.new(1990)
67
+ expect(document.date).to be_a Date
68
+ expect(document.date.to_s).to eq '1990-01-01'
69
+ expect(document.time).to be_a Time
70
+ expect(document.time.to_s).to eq '1990-01-01 17:23:13 UTC'
67
71
  expect(document.whatever).to eq 'default_value'
68
72
  end
69
73
 
data/spec/spec_helper.rb CHANGED
@@ -118,31 +118,3 @@ RSpec.configure do |config|
118
118
  # as the one that triggered the failure.
119
119
  Kernel.srand config.seed
120
120
  end
121
-
122
- # RSpec's stub_template method needs a differnet implementation for Rails 7.1, that
123
- # isn't yet in an rspec-rails release.
124
- #
125
- # First rspec-rails tried this:
126
- # https://github.com/rspec/rspec-rails/commit/4d65bea0619955acb15023b9c3f57a3a53183da8
127
- #
128
- # But it was subject to this problem:
129
- # https://github.com/rspec/rspec-rails/issues/2696
130
- #
131
- # Below implementation appears to work for our purposes here, so we will patch it in
132
- # if we are on Rails 7.1+, and not yet rspec-rails 6.1 which we expect to have it.
133
-
134
- if ::Rails.version.to_f >= 7.1 && Gem.loaded_specs["rspec-rails"].version.release < Gem::Version.new('6.1')
135
-
136
- module RSpec
137
- module Rails
138
- module ViewExampleGroup
139
- module ExampleMethods
140
- def stub_template(hash)
141
- controller.prepend_view_path(StubResolverCache.resolver_for(hash))
142
- end
143
- end
144
- end
145
- end
146
- end
147
-
148
- end
@@ -1,5 +1,4 @@
1
1
  gem 'rails-controller-testing'
2
- gem 'thor', '~> 0.20' if /^5.[12]/.match?(ENV['RAILS_VERSION'])
3
2
 
4
3
  unless ENV['VIEW_COMPONENT_VERSION'].to_s == ""
5
4
  gem 'view_component', ENV.fetch('VIEW_COMPONENT_VERSION')
@@ -30,7 +30,7 @@ RSpec.describe "catalog/_document" do
30
30
  Class.new(Blacklight::DocumentComponent) do
31
31
  # Override component rendering with our own value
32
32
  def call
33
- 'blah'
33
+ 'blah'.html_safe
34
34
  end
35
35
  end
36
36
  end
@@ -95,7 +95,7 @@ RSpec.describe "catalog/index" do
95
95
  before do
96
96
  my_template = Class.new(ViewComponent::Base) do
97
97
  def call
98
- 'whatever content'
98
+ 'whatever content'.html_safe
99
99
  end
100
100
 
101
101
  def self.name
data/template.demo.rb CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  gem 'blacklight', '>= 7.0'
4
4
 
5
- run "bundle install"
5
+ after_bundle do
6
+ # run the blacklight install generator
7
+ options = ENV.fetch("BLACKLIGHT_INSTALL_OPTIONS", '--devise --marc')
6
8
 
7
- # run the blacklight install generator
8
- options = ENV.fetch("BLACKLIGHT_INSTALL_OPTIONS", '--devise --marc')
9
+ generate 'blacklight:install', options
9
10
 
10
- generate 'blacklight:install', options
11
-
12
- # run the database migrations
13
- rake "db:migrate"
11
+ # run the database migrations
12
+ rake "db:migrate"
13
+ 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: 8.1.0
4
+ version: 8.2.1
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-11-09 00:00:00.000000000 Z
20
+ date: 2024-06-04 00:00:00.000000000 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: rails
@@ -155,14 +155,14 @@ dependencies:
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: '6.0'
158
+ version: '6.1'
159
159
  type: :development
160
160
  prerelease: false
161
161
  version_requirements: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: '6.0'
165
+ version: '6.1'
166
166
  - !ruby/object:Gem::Dependency
167
167
  name: rspec-collection_matchers
168
168
  requirement: !ruby/object:Gem::Requirement
@@ -788,6 +788,7 @@ files:
788
788
  - spec/features/autocomplete_spec.rb
789
789
  - spec/features/axe_spec.rb
790
790
  - spec/features/bookmarks_spec.rb
791
+ - spec/features/citation_spec.rb
791
792
  - spec/features/component_template_override_spec.rb
792
793
  - spec/features/did_you_mean_spec.rb
793
794
  - spec/features/facet_missing_spec.rb
@@ -804,6 +805,7 @@ files:
804
805
  - spec/features/search_sort_spec.rb
805
806
  - spec/features/search_spec.rb
806
807
  - spec/features/sitelinks_search_box_spec.rb
808
+ - spec/features/sms_spec.rb
807
809
  - spec/fixtures/sample_solr_documents.yml
808
810
  - spec/helpers/blacklight/configuration_helper_behavior_spec.rb
809
811
  - spec/helpers/blacklight/facets_helper_behavior_spec.rb
@@ -923,7 +925,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
923
925
  - !ruby/object:Gem::Version
924
926
  version: '0'
925
927
  requirements: []
926
- rubygems_version: 3.4.21
928
+ rubygems_version: 3.5.10
927
929
  signing_key:
928
930
  specification_version: 4
929
931
  summary: Blacklight provides a discovery interface for any Solr (http://lucene.apache.org/solr)
@@ -965,6 +967,7 @@ test_files:
965
967
  - spec/features/autocomplete_spec.rb
966
968
  - spec/features/axe_spec.rb
967
969
  - spec/features/bookmarks_spec.rb
970
+ - spec/features/citation_spec.rb
968
971
  - spec/features/component_template_override_spec.rb
969
972
  - spec/features/did_you_mean_spec.rb
970
973
  - spec/features/facet_missing_spec.rb
@@ -981,6 +984,7 @@ test_files:
981
984
  - spec/features/search_sort_spec.rb
982
985
  - spec/features/search_spec.rb
983
986
  - spec/features/sitelinks_search_box_spec.rb
987
+ - spec/features/sms_spec.rb
984
988
  - spec/fixtures/sample_solr_documents.yml
985
989
  - spec/helpers/blacklight/configuration_helper_behavior_spec.rb
986
990
  - spec/helpers/blacklight/facets_helper_behavior_spec.rb