blacklight 7.7.0 → 7.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.docker/app/Dockerfile +26 -0
  3. data/.docker/app/entrypoint.sh +6 -0
  4. data/.env +5 -0
  5. data/.rubocop_todo.yml +13 -13
  6. data/.travis.yml +15 -23
  7. data/Gemfile +4 -1
  8. data/README.md +4 -0
  9. data/VERSION +1 -1
  10. data/app/assets/stylesheets/blacklight/_pagination.scss +4 -0
  11. data/app/components/blacklight/constraint_layout_component.html.erb +21 -0
  12. data/app/components/blacklight/constraint_layout_component.rb +16 -0
  13. data/app/components/blacklight/facet_field_component.html.erb +25 -0
  14. data/app/components/blacklight/facet_field_component.rb +11 -0
  15. data/app/components/blacklight/facet_field_list_component.html.erb +18 -0
  16. data/app/components/blacklight/facet_field_list_component.rb +22 -0
  17. data/app/components/blacklight/facet_field_no_layout_component.rb +13 -0
  18. data/app/components/blacklight/facet_item_component.rb +120 -0
  19. data/app/helpers/blacklight/catalog_helper_behavior.rb +2 -2
  20. data/app/helpers/blacklight/facets_helper_behavior.rb +84 -48
  21. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +64 -33
  22. data/app/javascript/blacklight/modal.js +1 -1
  23. data/app/models/concerns/blacklight/document/extensions.rb +3 -0
  24. data/app/models/concerns/blacklight/document/semantic_fields.rb +0 -4
  25. data/app/presenters/blacklight/facet_field_presenter.rb +57 -0
  26. data/app/presenters/blacklight/facet_item_presenter.rb +81 -0
  27. data/app/views/catalog/_citation.html.erb +1 -1
  28. data/app/views/catalog/_constraints.html.erb +1 -1
  29. data/app/views/catalog/_constraints_element.html.erb +5 -24
  30. data/app/views/catalog/_email_form.html.erb +1 -1
  31. data/app/views/catalog/_facet_layout.html.erb +8 -17
  32. data/app/views/catalog/_facet_limit.html.erb +3 -12
  33. data/app/views/catalog/_facet_pagination.html.erb +2 -2
  34. data/app/views/catalog/_facet_pivot.html.erb +4 -4
  35. data/app/views/catalog/_sms_form.html.erb +1 -1
  36. data/blacklight.gemspec +1 -0
  37. data/config/locales/blacklight.ar.yml +29 -25
  38. data/docker-compose.yml +35 -0
  39. data/lib/blacklight/engine.rb +2 -6
  40. data/lib/blacklight/search_state.rb +32 -0
  41. data/lib/blacklight/solr/response/facets.rb +2 -0
  42. data/lib/generators/blacklight/assets_generator.rb +10 -0
  43. data/spec/{views/catalog/_constraints_element.html.erb_spec.rb → components/blacklight/constraint_layout_component_spec.rb} +21 -11
  44. data/spec/components/blacklight/facet_field_list_component_spec.rb +108 -0
  45. data/spec/components/blacklight/facet_item_component_spec.rb +50 -0
  46. data/spec/features/facets_spec.rb +1 -1
  47. data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +24 -12
  48. data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +4 -23
  49. data/spec/lib/blacklight/search_state_spec.rb +38 -0
  50. data/spec/models/blacklight/solr/response/facets_spec.rb +30 -1
  51. data/spec/presenters/blacklight/facet_field_presenter_spec.rb +109 -0
  52. data/spec/presenters/blacklight/facet_item_presenter_spec.rb +92 -0
  53. data/spec/spec_helper.rb +2 -0
  54. data/spec/support/presenter_test_helpers.rb +11 -0
  55. data/spec/views/catalog/_facet_group.html.erb_spec.rb +1 -0
  56. data/tasks/blacklight.rake +30 -23
  57. metadata +43 -5
@@ -48,6 +48,44 @@ RSpec.describe Blacklight::SearchState do
48
48
  end
49
49
  end
50
50
 
51
+ describe '#query_param' do
52
+ let(:params) { parameter_class.new q: 'xyz' }
53
+
54
+ it 'returns the query param' do
55
+ expect(search_state.query_param).to eq 'xyz'
56
+ end
57
+ end
58
+
59
+ describe '#filter_params' do
60
+ let(:params) { parameter_class.new f: { ff: ['xyz'] } }
61
+
62
+ it 'returns the query param' do
63
+ expect(search_state.filter_params.deep_symbolize_keys).to eq(ff: ['xyz'])
64
+ end
65
+ end
66
+
67
+ describe '#has_constraints?' do
68
+ it 'is false' do
69
+ expect(search_state.has_constraints?).to eq false
70
+ end
71
+
72
+ context 'with a query param' do
73
+ let(:params) { parameter_class.new q: 'xyz' }
74
+
75
+ it 'is true' do
76
+ expect(search_state.has_constraints?).to eq true
77
+ end
78
+ end
79
+
80
+ context 'with a facet param' do
81
+ let(:params) { parameter_class.new f: { ff: ['xyz'] } }
82
+
83
+ it 'is true' do
84
+ expect(search_state.has_constraints?).to eq true
85
+ end
86
+ end
87
+ end
88
+
51
89
  describe "params_for_search" do
52
90
  let(:params) { parameter_class.new 'default' => 'params' }
53
91
 
@@ -168,9 +168,11 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
168
168
  let(:facet_config) do
169
169
  double(
170
170
  key: 'my_query_facet_field',
171
+ sort: nil,
171
172
  query: {
172
173
  'a_simple_query' => { fq: 'field:search', label: 'A Human Readable label' },
173
174
  'another_query' => { fq: 'field:different_search', label: 'Label' },
175
+ 'query_with_many_results' => { fq: 'field:many_result_search', label: 'Yet another label' },
174
176
  'without_results' => { fq: 'field:without_results', label: 'No results for this facet' }
175
177
  }
176
178
  )
@@ -184,6 +186,7 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
184
186
  facet_queries: {
185
187
  'field:search' => 10,
186
188
  'field:different_search' => 2,
189
+ 'field:many_result_search' => 100,
187
190
  'field:not_appearing_in_the_config' => 50,
188
191
  'field:without_results' => 0
189
192
  }
@@ -197,7 +200,7 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
197
200
  expect(field).to be_a_kind_of Blacklight::Solr::Response::Facets::FacetField
198
201
 
199
202
  expect(field.name).to eq 'my_query_facet_field'
200
- expect(field.items.size).to eq 2
203
+ expect(field.items.size).to eq 3
201
204
  expect(field.items.map(&:value)).not_to include 'field:not_appearing_in_the_config'
202
205
 
203
206
  facet_item = field.items.find { |x| x.value == 'a_simple_query' }
@@ -206,6 +209,32 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
206
209
  expect(facet_item.hits).to eq 10
207
210
  expect(facet_item.label).to eq 'A Human Readable label'
208
211
  end
212
+
213
+ describe 'default/index sorting' do
214
+ it 'returns the results in the order they are requested by default' do
215
+ field = subject.aggregations['my_query_facet_field']
216
+ expect(field.items.map(&:value)).to eq %w[a_simple_query another_query query_with_many_results]
217
+ expect(field.items.map(&:hits)).to eq [10, 2, 100]
218
+ end
219
+
220
+ it 'returns the results in the order they are requested by when sort is explicitly set to "index"' do
221
+ allow(facet_config).to receive(:sort).and_return(:index)
222
+
223
+ field = subject.aggregations['my_query_facet_field']
224
+ expect(field.items.map(&:value)).to eq %w[a_simple_query another_query query_with_many_results]
225
+ expect(field.items.map(&:hits)).to eq [10, 2, 100]
226
+ end
227
+ end
228
+
229
+ describe 'count sorting' do
230
+ it 'returns the results sorted by count when requested' do
231
+ allow(facet_config).to receive(:sort).and_return(:count)
232
+
233
+ field = subject.aggregations['my_query_facet_field']
234
+ expect(field.items.map(&:value)).to eq %w[query_with_many_results a_simple_query another_query]
235
+ expect(field.items.map(&:hits)).to eq [100, 10, 2]
236
+ end
237
+ end
209
238
  end
210
239
 
211
240
  describe "pivot facets" do
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Blacklight::FacetFieldPresenter, type: :presenter do
5
+ subject(:presenter) do
6
+ described_class.new(facet_field, display_facet, view_context, search_state)
7
+ end
8
+
9
+ let(:facet_field) { Blacklight::Configuration::FacetField.new(key: 'key') }
10
+ let(:display_facet) do
11
+ instance_double(Blacklight::Solr::Response::Facets::FacetField, items: items, sort: :index, offset: 0, prefix: nil)
12
+ end
13
+ let(:items) { [] }
14
+ let(:view_context) { controller.view_context }
15
+ let(:search_state) { view_context.search_state }
16
+
17
+ before do
18
+ allow(view_context).to receive(:facet_limit_for).and_return(20)
19
+ end
20
+
21
+ describe '#collapsed?' do
22
+ it "is collapsed by default" do
23
+ facet_field.collapse = true
24
+ expect(presenter.collapsed?).to be true
25
+ end
26
+
27
+ it "does not be collapse if the configuration says so" do
28
+ facet_field.collapse = false
29
+ expect(presenter).not_to be_collapsed
30
+ end
31
+
32
+ it "does not be collapsed if it is in the params" do
33
+ controller.params[:f] = ActiveSupport::HashWithIndifferentAccess.new(key: [1])
34
+ expect(presenter.collapsed?).to be false
35
+ end
36
+ end
37
+
38
+ describe '#active?' do
39
+ it "checks if any value is selected for a given facet" do
40
+ controller.params[:f] = ActiveSupport::HashWithIndifferentAccess.new(key: [1])
41
+ expect(presenter.active?).to eq true
42
+ end
43
+
44
+ it "is false if no value for facet is selected" do
45
+ expect(presenter.active?).to eq false
46
+ end
47
+ end
48
+
49
+ describe '#in_modal?' do
50
+ context 'for a modal-like action' do
51
+ before do
52
+ controller.params[:action] = 'facet'
53
+ end
54
+
55
+ it 'is true' do
56
+ expect(presenter.in_modal?).to eq true
57
+ end
58
+ end
59
+
60
+ it 'is false' do
61
+ expect(presenter.in_modal?).to eq false
62
+ end
63
+ end
64
+
65
+ describe '#modal_path' do
66
+ let(:paginator) { Blacklight::FacetPaginator.new([{}, {}], limit: 1) }
67
+
68
+ before do
69
+ allow(view_context).to receive(:facet_paginator).and_return(paginator)
70
+ end
71
+
72
+ context 'with no additional data' do
73
+ let(:paginator) { Blacklight::FacetPaginator.new([{}, {}], limit: 10) }
74
+
75
+ it 'is nil' do
76
+ expect(presenter.modal_path).to be_nil
77
+ end
78
+ end
79
+
80
+ it 'returns the path to the facet view' do
81
+ allow(view_context).to receive(:search_facet_path).with(id: 'key').and_return('/catalog/facet/key')
82
+
83
+ expect(presenter.modal_path).to eq '/catalog/facet/key'
84
+ end
85
+ end
86
+
87
+ describe '#label' do
88
+ it 'gets the label from the helper' do
89
+ allow(view_context).to receive(:facet_field_label).with('key').and_return('Label')
90
+ expect(presenter.label).to eq 'Label'
91
+ end
92
+ end
93
+
94
+ describe '#html_id' do
95
+ it 'gets the id from a helper' do
96
+ allow(view_context).to receive(:html_id).with('key').and_return('facet-key')
97
+ expect(presenter.html_id).to eq 'facet-key'
98
+ end
99
+ end
100
+
101
+ describe '#paginator' do
102
+ subject(:paginator) { presenter.paginator }
103
+
104
+ it 'return a paginator for the facet data' do
105
+ expect(paginator.current_page).to eq 1
106
+ expect(paginator.total_count).to eq 0
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Blacklight::FacetItemPresenter, type: :presenter do
5
+ subject(:presenter) do
6
+ described_class.new(facet_item, facet_config, view_context, facet_field, search_state)
7
+ end
8
+
9
+ let(:facet_item) { instance_double(Blacklight::Solr::Response::Facets::FacetItem) }
10
+ let(:facet_config) { Blacklight::Configuration::FacetField.new(key: 'key') }
11
+ let(:facet_field) { instance_double(Blacklight::Solr::Response::Facets::FacetField) }
12
+ let(:view_context) { controller.view_context }
13
+ let(:search_state) { instance_double(Blacklight::SearchState) }
14
+
15
+ describe '#selected?' do
16
+ it 'works' do
17
+ allow(search_state).to receive(:has_facet?).and_return(true)
18
+ expect(presenter.selected?).to be true
19
+ end
20
+ end
21
+
22
+ describe '#label' do
23
+ it "is the facet value for an ordinary facet" do
24
+ allow(facet_config).to receive_messages(query: nil, date: nil, helper_method: nil, url_method: nil)
25
+ expect(presenter.label).to eq facet_item
26
+ end
27
+
28
+ it "allows you to pass in a :helper_method argument to the configuration" do
29
+ allow(facet_config).to receive_messages(query: nil, date: nil, url_method: nil, helper_method: :my_facet_value_renderer)
30
+ allow(view_context).to receive(:my_facet_value_renderer).with(facet_item).and_return('abc')
31
+ expect(presenter.label).to eq 'abc'
32
+ end
33
+
34
+ context 'with a query facet' do
35
+ let(:facet_item) { :query_key }
36
+
37
+ it "extracts the configuration label for a query facet" do
38
+ allow(facet_config).to receive_messages(query: { query_key: { label: 'XYZ' } }, date: nil, helper_method: nil, url_method: nil)
39
+ expect(presenter.label).to eq 'XYZ'
40
+ end
41
+ end
42
+
43
+ context 'with a date facet' do
44
+ let(:facet_item) { '2012-01-01' }
45
+
46
+ it "localizes the label for date-type facets" do
47
+ allow(facet_config).to receive_messages('date' => true, :query => nil, :helper_method => nil, :url_method => nil)
48
+ expect(presenter.label).to eq 'Sun, 01 Jan 2012 00:00:00 +0000'
49
+ end
50
+
51
+ it "localizes the label for date-type facets with the supplied localization options" do
52
+ allow(facet_config).to receive_messages(date: { format: :short }, query: nil, helper_method: nil, url_method: nil)
53
+ expect(presenter.label).to eq '01 Jan 00:00'
54
+ end
55
+ end
56
+ end
57
+
58
+ describe '#href' do
59
+ before do
60
+ allow(search_state).to receive(:has_facet?).and_return(false)
61
+ end
62
+
63
+ it 'is the url to apply the facet' do
64
+ allow(search_state).to receive(:add_facet_params_and_redirect).with('key', facet_item).and_return(f: 'x')
65
+ allow(view_context).to receive(:search_action_path).with(f: 'x').and_return('/catalog?f=x')
66
+
67
+ expect(presenter.href).to eq '/catalog?f=x'
68
+ end
69
+
70
+ context 'with url_method configuration' do
71
+ before do
72
+ allow(facet_config).to receive_messages(url_method: :some_helper_method)
73
+ end
74
+
75
+ it 'calls out to a helper to determine the url' do
76
+ allow(view_context).to receive(:some_helper_method).and_return('/xyz').with('key', facet_item)
77
+
78
+ expect(presenter.href).to eq '/xyz'
79
+ end
80
+ end
81
+
82
+ context 'with a selected facet' do
83
+ it 'is the url to remove the facet' do
84
+ allow(search_state).to receive(:has_facet?).and_return(true)
85
+ allow(search_state).to receive(:remove_facet_params).with('key', facet_item).and_return({})
86
+ allow(view_context).to receive(:search_action_path).with({}).and_return('/catalog')
87
+
88
+ expect(presenter.href).to eq '/catalog'
89
+ end
90
+ end
91
+ end
92
+ end
@@ -54,6 +54,8 @@ RSpec.configure do |config|
54
54
  end
55
55
 
56
56
  config.infer_spec_type_from_file_location!
57
+ config.include PresenterTestHelpers, type: :presenter
58
+ config.include ViewComponent::TestHelpers, type: :component
57
59
 
58
60
  config.include(ControllerLevelHelpers, type: :helper)
59
61
  config.before(:each, type: :helper) { initialize_controller_helpers(helper) }
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PresenterTestHelpers
4
+ def controller
5
+ @controller ||= ViewComponent::Base.test_controller.constantize.new.tap { |c| c.request = request }.extend(Rails.application.routes.url_helpers)
6
+ end
7
+
8
+ def request
9
+ @request ||= ActionDispatch::TestRequest.create
10
+ end
11
+ end
@@ -6,6 +6,7 @@ RSpec.describe "catalog/_facet_group" do
6
6
  before do
7
7
  allow(view).to receive_messages(blacklight_config: blacklight_config)
8
8
  allow(view).to receive(:search_action_path).and_return('/catalog')
9
+ allow(view).to receive(:search_facet_path).and_return('/catalog')
9
10
  end
10
11
 
11
12
  context "without any facet fields" do
@@ -10,12 +10,26 @@ end
10
10
  require 'rubocop/rake_task'
11
11
  RuboCop::RakeTask.new(:rubocop)
12
12
 
13
+ def with_solr
14
+ puts "Starting Solr"
15
+ system "docker-compose up -d solr"
16
+ yield
17
+ ensure
18
+ puts "Stopping Solr"
19
+ system "docker-compose stop solr"
20
+ end
21
+
13
22
  desc "Run test suite"
14
- task ci: ['blacklight:generate'] do
15
- within_test_app do
16
- system "RAILS_ENV=test rake blacklight:index:seed"
23
+ task :ci do
24
+ with_solr do
25
+ Rake::Task['engine_cart:generate'].invoke
26
+
27
+ within_test_app do
28
+ system "RAILS_ENV=test bin/rake blacklight:index:seed"
29
+ end
30
+
31
+ Rake::Task['blacklight:coverage'].invoke
17
32
  end
18
- Rake::Task['blacklight:coverage'].invoke
19
33
  end
20
34
 
21
35
  namespace :blacklight do
@@ -25,34 +39,27 @@ namespace :blacklight do
25
39
  Rake::Task["spec"].invoke
26
40
  end
27
41
 
28
- desc "Create the test rails app"
29
- task generate: ['engine_cart:generate'] do
30
- end
31
-
32
42
  namespace :internal do
43
+ desc 'Index seed data in test app'
33
44
  task seed: ['engine_cart:generate'] do
34
45
  within_test_app do
35
- system "bundle exec rake blacklight:index:seed"
46
+ system "bin/rake blacklight:index:seed"
36
47
  end
37
48
  end
38
49
  end
39
50
 
40
51
  desc 'Run Solr and Blacklight for interactive development'
41
- task :server, [:rails_server_args] do |_t, args|
42
- if File.exist? EngineCart.destination
43
- within_test_app do
44
- system "bundle update"
45
- end
46
- else
47
- Rake::Task['engine_cart:generate'].invoke
48
- end
49
-
50
- SolrWrapper.wrap do |solr|
51
- solr.with_collection do
52
- Rake::Task['blacklight:internal:seed'].invoke
52
+ task :server, [:rails_server_args] => ['engine_cart:generate'] do |_t, args|
53
+ with_solr do
54
+ Rake::Task['blacklight:internal:seed'].invoke
53
55
 
54
- within_test_app do
55
- system "bundle exec rails s #{args[:rails_server_args]}"
56
+ within_test_app do
57
+ begin
58
+ puts "Starting Blacklight (Rails server)"
59
+ system "bin/rails s #{args[:rails_server_args]}"
60
+ rescue Interrupt
61
+ # We expect folks to Ctrl-c to stop the server so don't barf at them
62
+ puts "\nStopping Blacklight (Rails server)"
56
63
  end
57
64
  end
58
65
  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.7.0
4
+ version: 7.8.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: 2020-03-04 00:00:00.000000000 Z
20
+ date: 2020-05-21 00:00:00.000000000 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: rails
@@ -95,6 +95,20 @@ dependencies:
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: view_component
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: rsolr
100
114
  requirement: !ruby/object:Gem::Requirement
@@ -294,6 +308,9 @@ executables: []
294
308
  extensions: []
295
309
  extra_rdoc_files: []
296
310
  files:
311
+ - ".docker/app/Dockerfile"
312
+ - ".docker/app/entrypoint.sh"
313
+ - ".env"
297
314
  - ".gitignore"
298
315
  - ".hound.yml"
299
316
  - ".jshintrc"
@@ -335,6 +352,14 @@ files:
335
352
  - app/assets/stylesheets/blacklight/blacklight.scss
336
353
  - app/assets/stylesheets/blacklight/blacklight_defaults.scss
337
354
  - app/builders/blacklight/action_builder.rb
355
+ - app/components/blacklight/constraint_layout_component.html.erb
356
+ - app/components/blacklight/constraint_layout_component.rb
357
+ - app/components/blacklight/facet_field_component.html.erb
358
+ - app/components/blacklight/facet_field_component.rb
359
+ - app/components/blacklight/facet_field_list_component.html.erb
360
+ - app/components/blacklight/facet_field_list_component.rb
361
+ - app/components/blacklight/facet_field_no_layout_component.rb
362
+ - app/components/blacklight/facet_item_component.rb
338
363
  - app/controllers/bookmarks_controller.rb
339
364
  - app/controllers/catalog_controller.rb
340
365
  - app/controllers/concerns/blacklight/base.rb
@@ -393,6 +418,8 @@ files:
393
418
  - app/models/search.rb
394
419
  - app/models/solr_document.rb
395
420
  - app/presenters/blacklight/document_presenter.rb
421
+ - app/presenters/blacklight/facet_field_presenter.rb
422
+ - app/presenters/blacklight/facet_item_presenter.rb
396
423
  - app/presenters/blacklight/field_presenter.rb
397
424
  - app/presenters/blacklight/index_presenter.rb
398
425
  - app/presenters/blacklight/json_presenter.rb
@@ -518,6 +545,7 @@ files:
518
545
  - db/migrate/20140202020201_create_searches.rb
519
546
  - db/migrate/20140202020202_create_bookmarks.rb
520
547
  - db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb
548
+ - docker-compose.yml
521
549
  - lib/blacklight.rb
522
550
  - lib/blacklight/abstract_repository.rb
523
551
  - lib/blacklight/configuration.rb
@@ -593,6 +621,9 @@ files:
593
621
  - lib/railties/blacklight.rake
594
622
  - package-lock.json
595
623
  - package.json
624
+ - spec/components/blacklight/constraint_layout_component_spec.rb
625
+ - spec/components/blacklight/facet_field_list_component_spec.rb
626
+ - spec/components/blacklight/facet_item_component_spec.rb
596
627
  - spec/controllers/alternate_controller_spec.rb
597
628
  - spec/controllers/application_controller_spec.rb
598
629
  - spec/controllers/blacklight/base_spec.rb
@@ -670,6 +701,8 @@ files:
670
701
  - spec/models/search_spec.rb
671
702
  - spec/models/solr_document_spec.rb
672
703
  - spec/presenters/blacklight/document_presenter_spec.rb
704
+ - spec/presenters/blacklight/facet_field_presenter_spec.rb
705
+ - spec/presenters/blacklight/facet_item_presenter_spec.rb
673
706
  - spec/presenters/blacklight/field_presenter_spec.rb
674
707
  - spec/presenters/blacklight/index_presenter_spec.rb
675
708
  - spec/presenters/blacklight/json_presenter_spec.rb
@@ -684,10 +717,10 @@ files:
684
717
  - spec/support/controller_level_helpers.rb
685
718
  - spec/support/features.rb
686
719
  - spec/support/features/session_helpers.rb
720
+ - spec/support/presenter_test_helpers.rb
687
721
  - spec/test_app_templates/Gemfile.extra
688
722
  - spec/test_app_templates/lib/generators/test_app_generator.rb
689
723
  - spec/views/catalog/_constraints.html.erb_spec.rb
690
- - spec/views/catalog/_constraints_element.html.erb_spec.rb
691
724
  - spec/views/catalog/_document.html.erb_spec.rb
692
725
  - spec/views/catalog/_document_list.html.erb_spec.rb
693
726
  - spec/views/catalog/_facet_group.html.erb_spec.rb
@@ -738,12 +771,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
738
771
  - !ruby/object:Gem::Version
739
772
  version: '0'
740
773
  requirements: []
741
- rubygems_version: 3.1.1
774
+ rubygems_version: 3.1.2
742
775
  signing_key:
743
776
  specification_version: 4
744
777
  summary: Blacklight provides a discovery interface for any Solr (http://lucene.apache.org/solr)
745
778
  index.
746
779
  test_files:
780
+ - spec/components/blacklight/constraint_layout_component_spec.rb
781
+ - spec/components/blacklight/facet_field_list_component_spec.rb
782
+ - spec/components/blacklight/facet_item_component_spec.rb
747
783
  - spec/controllers/alternate_controller_spec.rb
748
784
  - spec/controllers/application_controller_spec.rb
749
785
  - spec/controllers/blacklight/base_spec.rb
@@ -821,6 +857,8 @@ test_files:
821
857
  - spec/models/search_spec.rb
822
858
  - spec/models/solr_document_spec.rb
823
859
  - spec/presenters/blacklight/document_presenter_spec.rb
860
+ - spec/presenters/blacklight/facet_field_presenter_spec.rb
861
+ - spec/presenters/blacklight/facet_item_presenter_spec.rb
824
862
  - spec/presenters/blacklight/field_presenter_spec.rb
825
863
  - spec/presenters/blacklight/index_presenter_spec.rb
826
864
  - spec/presenters/blacklight/json_presenter_spec.rb
@@ -835,10 +873,10 @@ test_files:
835
873
  - spec/support/controller_level_helpers.rb
836
874
  - spec/support/features.rb
837
875
  - spec/support/features/session_helpers.rb
876
+ - spec/support/presenter_test_helpers.rb
838
877
  - spec/test_app_templates/Gemfile.extra
839
878
  - spec/test_app_templates/lib/generators/test_app_generator.rb
840
879
  - spec/views/catalog/_constraints.html.erb_spec.rb
841
- - spec/views/catalog/_constraints_element.html.erb_spec.rb
842
880
  - spec/views/catalog/_document.html.erb_spec.rb
843
881
  - spec/views/catalog/_document_list.html.erb_spec.rb
844
882
  - spec/views/catalog/_facet_group.html.erb_spec.rb