blacklight 7.22.2 → 7.23.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.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +29 -8
  3. data/VERSION +1 -1
  4. data/app/assets/stylesheets/blacklight/_facets.scss +6 -0
  5. data/app/components/blacklight/advanced_search_form_component.rb +5 -5
  6. data/app/components/blacklight/constraints_component.html.erb +8 -4
  7. data/app/components/blacklight/constraints_component.rb +43 -18
  8. data/app/components/blacklight/document/action_component.html.erb +1 -1
  9. data/app/components/blacklight/document/action_component.rb +10 -3
  10. data/app/components/blacklight/document/bookmark_component.rb +2 -2
  11. data/app/components/blacklight/document/citation_component.rb +1 -1
  12. data/app/components/blacklight/document/group_component.html.erb +1 -1
  13. data/app/components/blacklight/document/group_component.rb +2 -2
  14. data/app/components/blacklight/document/more_like_this_component.html.erb +1 -1
  15. data/app/components/blacklight/document/more_like_this_component.rb +1 -1
  16. data/app/components/blacklight/document/thumbnail_component.rb +1 -1
  17. data/app/components/blacklight/document_component.rb +2 -2
  18. data/app/components/blacklight/document_title_component.rb +3 -3
  19. data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
  20. data/app/components/blacklight/facet_field_inclusive_constraint_component.html.erb +1 -1
  21. data/app/components/blacklight/facet_field_inclusive_constraint_component.rb +1 -1
  22. data/app/components/blacklight/facet_field_list_component.html.erb +1 -1
  23. data/app/components/blacklight/facet_field_list_component.rb +1 -1
  24. data/app/components/blacklight/facet_field_pagination_component.html.erb +4 -4
  25. data/app/components/blacklight/facet_item_component.rb +2 -2
  26. data/app/components/blacklight/facet_item_pivot_component.rb +2 -2
  27. data/app/components/blacklight/metadata_field_component.rb +2 -2
  28. data/app/components/blacklight/response/facet_group_component.html.erb +1 -1
  29. data/app/components/blacklight/response/facet_group_component.rb +1 -1
  30. data/app/components/blacklight/response/pagination_component.rb +1 -1
  31. data/app/components/blacklight/response/sort_component.html.erb +1 -1
  32. data/app/components/blacklight/response/spellcheck_component.rb +14 -3
  33. data/app/components/blacklight/response/view_type_button_component.rb +3 -3
  34. data/app/components/blacklight/response/view_type_component.rb +1 -1
  35. data/app/components/blacklight/search_bar_component.rb +2 -2
  36. data/app/components/blacklight/search_context_component.rb +3 -3
  37. data/app/components/blacklight/search_history_constraint_layout_component.rb +14 -0
  38. data/app/components/blacklight/start_over_button_component.rb +20 -0
  39. data/app/components/blacklight/system/dropdown_component.rb +1 -1
  40. data/app/controllers/concerns/blacklight/bookmarks.rb +1 -1
  41. data/app/controllers/concerns/blacklight/catalog.rb +2 -2
  42. data/app/controllers/concerns/blacklight/search_context.rb +1 -1
  43. data/app/helpers/blacklight/blacklight_helper_behavior.rb +12 -4
  44. data/app/helpers/blacklight/catalog_helper_behavior.rb +18 -7
  45. data/app/helpers/blacklight/render_partials_helper_behavior.rb +12 -1
  46. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +30 -2
  47. data/app/helpers/blacklight/url_helper_behavior.rb +3 -1
  48. data/app/javascript/blacklight/modal.js +2 -2
  49. data/app/models/concerns/blacklight/configurable.rb +1 -1
  50. data/app/models/concerns/blacklight/document/active_model_shim.rb +1 -1
  51. data/app/models/concerns/blacklight/document/extensions.rb +1 -1
  52. data/app/models/concerns/blacklight/document/semantic_fields.rb +1 -1
  53. data/app/models/concerns/blacklight/document.rb +1 -1
  54. data/app/views/catalog/_email_form.html.erb +1 -1
  55. data/app/views/catalog/_search_results.html.erb +1 -1
  56. data/app/views/catalog/_sms_form.html.erb +3 -3
  57. data/app/views/catalog/_start_over.html.erb +1 -1
  58. data/app/views/layouts/blacklight/base.html.erb +1 -0
  59. data/blacklight.gemspec +3 -4
  60. data/lib/blacklight/configuration/fields.rb +1 -1
  61. data/lib/blacklight/configuration.rb +2 -1
  62. data/lib/blacklight/deprecations/engine_configuration.rb +66 -0
  63. data/lib/blacklight/engine.rb +21 -10
  64. data/lib/blacklight/exceptions.rb +3 -0
  65. data/lib/blacklight/search_state/filter_field.rb +4 -4
  66. data/lib/blacklight/solr/repository.rb +36 -12
  67. data/lib/blacklight/solr/search_builder_behavior.rb +1 -4
  68. data/lib/generators/blacklight/assets_generator.rb +14 -10
  69. data/spec/components/blacklight/constraints_component_spec.rb +68 -0
  70. data/spec/components/blacklight/document/action_component_spec.rb +2 -1
  71. data/spec/components/blacklight/document_component_spec.rb +1 -1
  72. data/spec/components/blacklight/response/spellcheck_component_spec.rb +73 -0
  73. data/spec/components/blacklight/start_over_button_component_spec.rb +38 -0
  74. data/spec/controllers/catalog_controller_spec.rb +1 -1
  75. data/spec/features/did_you_mean_spec.rb +21 -0
  76. data/spec/features/search_context_spec.rb +3 -1
  77. data/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb +2 -0
  78. data/spec/helpers/blacklight/url_helper_behavior_spec.rb +3 -3
  79. data/spec/helpers/blacklight_helper_spec.rb +8 -3
  80. data/spec/helpers/catalog_helper_spec.rb +6 -2
  81. data/spec/lib/blacklight/engine_spec.rb +41 -0
  82. data/spec/models/blacklight/facet_paginator_spec.rb +60 -15
  83. data/spec/models/blacklight/solr/repository_spec.rb +29 -21
  84. data/spec/models/blacklight/solr/response/facets_spec.rb +48 -10
  85. data/spec/presenters/blacklight/facet_item_presenter_spec.rb +1 -1
  86. data/spec/presenters/blacklight/field_presenter_spec.rb +2 -2
  87. data/spec/routing/search_history_spec.rb +9 -0
  88. data/spec/services/blacklight/search_service_spec.rb +8 -0
  89. data/spec/spec_helper.rb +2 -3
  90. data/spec/support/controller_level_helpers.rb +8 -0
  91. data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -1
  92. data/spec/views/catalog/_index.html.erb_spec.rb +1 -1
  93. data/spec/views/catalog/_show.html.erb_spec.rb +1 -1
  94. data/spec/views/catalog/_show_sidebar.erb_spec.rb +1 -1
  95. data/spec/views/catalog/facet.json.jbuilder_spec.rb +1 -1
  96. data/spec/views/catalog/index.atom.builder_spec.rb +1 -0
  97. data/spec/views/catalog/index.html.erb_spec.rb +1 -0
  98. data/spec/views/catalog/index.json.jbuilder_spec.rb +1 -1
  99. data/spec/views/catalog/show.json.jbuilder_spec.rb +1 -1
  100. metadata +21 -22
@@ -13,44 +13,89 @@ RSpec.describe Blacklight::FacetPaginator, api: true do
13
13
  let(:limit) { 6 }
14
14
 
15
15
  context 'on the first page of two pages' do
16
- subject { described_class.new(seven_facet_values, limit: limit) }
16
+ subject(:paginator) { described_class.new(seven_facet_values, limit: limit) }
17
17
 
18
18
  it { is_expected.to be_first_page }
19
19
  it { is_expected.not_to be_last_page }
20
- its(:current_page) { is_expected.to eq 1 }
21
- its(:prev_page) { is_expected.to be_nil }
22
- its(:next_page) { is_expected.to eq 2 }
20
+
21
+ describe '#current_page' do
22
+ subject { paginator.current_page }
23
+
24
+ it { is_expected.to eq 1 }
25
+ end
26
+
27
+ describe '#prev_page' do
28
+ subject { paginator.prev_page }
29
+
30
+ it { is_expected.to be_nil }
31
+ end
32
+
33
+ describe '#next_page' do
34
+ subject { paginator.next_page }
35
+
36
+ it { is_expected.to eq 2 }
37
+ end
23
38
 
24
39
  it 'limits items to limit, if limit is smaller than items.length' do
25
- expect(subject.items.size).to eq 6
40
+ expect(paginator.items.size).to eq 6
26
41
  end
27
42
  end
28
43
 
29
44
  context 'on the last page of two pages' do
30
- subject { described_class.new([f7], offset: 6, limit: limit) }
45
+ subject(:paginator) { described_class.new([f7], offset: 6, limit: limit) }
31
46
 
32
47
  it { is_expected.not_to be_first_page }
33
48
  it { is_expected.to be_last_page }
34
- its(:current_page) { is_expected.to eq 2 }
35
- its(:prev_page) { is_expected.to eq 1 }
36
- its(:next_page) { is_expected.to be_nil }
49
+
50
+ describe '#current_page' do
51
+ subject { paginator.current_page }
52
+
53
+ it { is_expected.to eq 2 }
54
+ end
55
+
56
+ describe '#prev_page' do
57
+ subject { paginator.prev_page }
58
+
59
+ it { is_expected.to eq 1 }
60
+ end
61
+
62
+ describe '#next_page' do
63
+ subject { paginator.next_page }
64
+
65
+ it { is_expected.to be_nil }
66
+ end
37
67
 
38
68
  it 'returns all items when limit is greater than items.length' do
39
- expect(subject.items.size).to eq 1
69
+ expect(paginator.items.size).to eq 1
40
70
  end
41
71
  end
42
72
 
43
73
  context 'on the second page of three pages' do
44
- subject { described_class.new(seven_facet_values, offset: 6, limit: limit) }
74
+ subject(:paginator) { described_class.new(seven_facet_values, offset: 6, limit: limit) }
45
75
 
46
76
  it { is_expected.not_to be_first_page }
47
77
  it { is_expected.not_to be_last_page }
48
- its(:current_page) { is_expected.to eq 2 }
49
- its(:prev_page) { is_expected.to eq 1 }
50
- its(:next_page) { is_expected.to eq 3 }
78
+
79
+ describe '#current_page' do
80
+ subject { paginator.current_page }
81
+
82
+ it { is_expected.to eq 2 }
83
+ end
84
+
85
+ describe '#prev_page' do
86
+ subject { paginator.prev_page }
87
+
88
+ it { is_expected.to eq 1 }
89
+ end
90
+
91
+ describe '#next_page' do
92
+ subject { paginator.next_page }
93
+
94
+ it { is_expected.to eq 3 }
95
+ end
51
96
 
52
97
  it 'limits items to limit, if limit is smaller than items.length' do
53
- expect(subject.items.size).to eq 6
98
+ expect(paginator.items.size).to eq 6
54
99
  end
55
100
  end
56
101
 
@@ -9,6 +9,8 @@ RSpec.describe Blacklight::Solr::Repository, api: true do
9
9
  CatalogController.blacklight_config.deep_copy
10
10
  end
11
11
 
12
+ let(:all_docs_query) { '' }
13
+
12
14
  let :mock_response do
13
15
  { response: { docs: [document] } }
14
16
  end
@@ -104,19 +106,30 @@ RSpec.describe Blacklight::Solr::Repository, api: true do
104
106
  expect(response).to be_a_kind_of Blacklight::Solr::Response
105
107
  expect(response.params).to be_a_kind_of ActiveSupport::HashWithIndifferentAccess
106
108
  end
109
+
110
+ it "calls send_and_receive with params returned from request factory method" do
111
+ expect(blacklight_config.http_method).to eq :get
112
+ input_params = { q: all_docs_query }
113
+ allow(subject.connection).to receive(:send_and_receive) do |path, params|
114
+ expect(path).to eq 'select'
115
+ expect(params[:method]).to eq :get
116
+ expect(params[:params]).to include input_params
117
+ end.and_return('response' => { 'docs' => [] })
118
+ subject.search(input_params)
119
+ end
107
120
  end
108
121
 
109
- describe "#send_and_receive" do
122
+ describe "#build_solr_request" do
123
+ let(:input_params) { { q: all_docs_query } }
124
+ let(:actual_params) { subject.build_solr_request(input_params) }
125
+
110
126
  describe "http_method configuration" do
111
127
  describe "using default" do
112
128
  it "defaults to get" do
113
129
  expect(blacklight_config.http_method).to eq :get
114
- allow(subject.connection).to receive(:send_and_receive) do |path, params|
115
- expect(path).to eq 'select'
116
- expect(params[:method]).to eq :get
117
- expect(params[:params]).to include(:q)
118
- end.and_return('response' => { 'docs' => [] })
119
- subject.search(q: @all_docs_query)
130
+ expect(actual_params[:method]).to eq :get
131
+ expect(actual_params[:params]).to include input_params
132
+ expect(actual_params).not_to have_key :data
120
133
  end
121
134
  end
122
135
 
@@ -125,25 +138,20 @@ RSpec.describe Blacklight::Solr::Repository, api: true do
125
138
 
126
139
  it "keep value set to post" do
127
140
  expect(blacklight_config.http_method).to eq :post
128
- allow(subject.connection).to receive(:send_and_receive) do |path, params|
129
- expect(path).to eq 'select'
130
- expect(params[:method]).to eq :post
131
- expect(params[:data]).to include(:q)
132
- end.and_return('response' => { 'docs' => [] })
133
- subject.search(q: @all_docs_query)
141
+ expect(actual_params[:method]).to eq :post
142
+ expect(actual_params[:data]).to include input_params
143
+ expect(actual_params).not_to have_key :params
134
144
  end
135
145
  end
136
146
  end
137
147
 
138
148
  context 'with json parameters' do
149
+ let(:input_params) { { json: { query: { bool: {} } } } }
150
+
139
151
  it 'sends a post request with some json' do
140
- allow(subject.connection).to receive(:send_and_receive) do |path, params|
141
- expect(path).to eq 'select'
142
- expect(params[:method]).to eq :post
143
- expect(JSON.parse(params[:data]).with_indifferent_access).to include(query: { bool: {} })
144
- expect(params[:headers]).to include({ 'Content-Type' => 'application/json' })
145
- end.and_return('response' => { 'docs' => [] })
146
- subject.search(json: { query: { bool: {} } })
152
+ expect(actual_params[:method]).to eq :post
153
+ expect(JSON.parse(actual_params[:data]).with_indifferent_access).to include(query: { bool: {} })
154
+ expect(actual_params[:headers]).to include({ 'Content-Type' => 'application/json' })
147
155
  end
148
156
  end
149
157
  end
@@ -152,7 +160,7 @@ RSpec.describe Blacklight::Solr::Repository, api: true do
152
160
  let (:blacklight_config) { config = Blacklight::Configuration.new; config.http_method = :post; config }
153
161
 
154
162
  it "sends a post request to solr and get a response back" do
155
- response = subject.search(q: @all_docs_query)
163
+ response = subject.search(q: all_docs_query)
156
164
  expect(response.docs.length).to be >= 1
157
165
  end
158
166
  end
@@ -3,21 +3,59 @@
3
3
  RSpec.describe Blacklight::Solr::Response::Facets, api: true do
4
4
  describe Blacklight::Solr::Response::Facets::FacetField do
5
5
  describe "A field with default options" do
6
- subject { described_class.new "my_field", [] }
6
+ subject(:field) { described_class.new "my_field", [] }
7
7
 
8
- its(:name) { is_expected.to eq "my_field" }
9
- its(:limit) { is_expected.to eq 100 }
10
- its(:sort) { is_expected.to eq 'count' }
11
- its(:offset) { is_expected.to eq 0 }
8
+ describe '#name' do
9
+ subject { field.name }
10
+
11
+ it { is_expected.to eq "my_field" }
12
+ end
13
+
14
+ describe '#limit' do
15
+ subject { field.limit }
16
+
17
+ it { is_expected.to eq 100 }
18
+ end
19
+
20
+ describe '#sort' do
21
+ subject { field.sort }
22
+
23
+ it { is_expected.to eq 'count' }
24
+ end
25
+
26
+ describe '#offset' do
27
+ subject { field.offset }
28
+
29
+ it { is_expected.to eq 0 }
30
+ end
12
31
  end
13
32
 
14
33
  describe "A field with additional options" do
15
- subject { described_class.new "my_field", [], limit: 15, sort: 'alpha', offset: 23 }
34
+ subject(:field) { described_class.new "my_field", [], limit: 15, sort: 'alpha', offset: 23 }
16
35
 
17
- its(:name) { is_expected.to eq "my_field" }
18
- its(:limit) { is_expected.to eq 15 }
19
- its(:sort) { is_expected.to eq 'alpha' }
20
- its(:offset) { is_expected.to eq 23 }
36
+ describe '#name' do
37
+ subject { field.name }
38
+
39
+ it { is_expected.to eq "my_field" }
40
+ end
41
+
42
+ describe '#limit' do
43
+ subject { field.limit }
44
+
45
+ it { is_expected.to eq 15 }
46
+ end
47
+
48
+ describe '#sort' do
49
+ subject { field.sort }
50
+
51
+ it { is_expected.to eq 'alpha' }
52
+ end
53
+
54
+ describe '#offset' do
55
+ subject { field.offset }
56
+
57
+ it { is_expected.to eq 23 }
58
+ end
21
59
  end
22
60
  end
23
61
 
@@ -62,7 +62,7 @@ RSpec.describe Blacklight::FacetItemPresenter, type: :presenter do
62
62
 
63
63
  it 'is the url to apply the facet' do
64
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')
65
+ allow(view_context).to receive(:search_action_path).with({ f: 'x' }).and_return('/catalog?f=x')
66
66
 
67
67
  expect(presenter.href).to eq '/catalog?f=x'
68
68
  end
@@ -81,7 +81,7 @@ RSpec.describe Blacklight::FieldPresenter, api: true do
81
81
 
82
82
  context 'when field has link_to_facet with true' do
83
83
  before do
84
- allow(request_context).to receive(:search_action_path).with('f' => { 'link_to_facet_true' => ['x'] }).and_return('/foo')
84
+ allow(request_context).to receive(:search_action_path).with({ 'f' => { 'link_to_facet_true' => ['x'] } }).and_return('/foo')
85
85
  allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
86
86
  end
87
87
 
@@ -92,7 +92,7 @@ RSpec.describe Blacklight::FieldPresenter, api: true do
92
92
 
93
93
  context 'when field has link_to_facet with a field name' do
94
94
  before do
95
- allow(request_context).to receive(:search_action_path).with('f' => { 'some_field' => ['x'] }).and_return('/foo')
95
+ allow(request_context).to receive(:search_action_path).with({ 'f' => { 'some_field' => ['x'] } }).and_return('/foo')
96
96
  allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
97
97
  end
98
98
 
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe "Search History Routes" do
4
+ routes { Blacklight::Engine.routes }
5
+ # paths generated by custom routes
6
+ it "has a path for showing the search history" do
7
+ expect(get: "/search_history").to route_to(controller: 'search_history', action: 'index')
8
+ end
9
+ end
@@ -421,6 +421,14 @@ RSpec.describe Blacklight::SearchService, api: true do
421
421
  expect { service.repository.search }.to raise_exception(/Unable to connect to Solr instance/)
422
422
  end
423
423
 
424
+ it "raises a Blacklight exception if RSolr raises a timeout error connecting to Solr instance" do
425
+ rsolr_timeout = RSolr::Error::Timeout.new(nil, nil)
426
+ allow(rsolr_timeout).to receive(:to_s).and_return("mocked RSolr timeout")
427
+
428
+ allow(blacklight_solr).to receive(:send_and_receive).and_raise(rsolr_timeout)
429
+ expect { service.repository.search }.to raise_exception(Blacklight::Exceptions::RepositoryTimeout, /Timeout connecting to Solr instance/)
430
+ end
431
+
424
432
  describe "#previous_and_next_documents_for_search" do
425
433
  let(:user_params) { { q: '', per_page: 100 } }
426
434
 
data/spec/spec_helper.rb CHANGED
@@ -14,7 +14,6 @@ require 'engine_cart'
14
14
  EngineCart.load_application!
15
15
 
16
16
  require 'rspec/rails'
17
- require 'rspec/its'
18
17
  require 'rspec/collection_matchers'
19
18
  require 'capybara/rails'
20
19
  require 'webdrivers'
@@ -29,13 +28,13 @@ Capybara.javascript_driver = :headless_chrome
29
28
 
30
29
  Capybara.register_driver :headless_chrome do |app|
31
30
  Capybara::Selenium::Driver.load_selenium
32
- browser_options = ::Selenium::WebDriver::Chrome::Options.new.tap do |opts|
31
+ capabilities = ::Selenium::WebDriver::Chrome::Options.new.tap do |opts|
33
32
  opts.args << '--headless'
34
33
  opts.args << '--disable-gpu'
35
34
  opts.args << '--no-sandbox'
36
35
  opts.args << '--window-size=1280,1696'
37
36
  end
38
- Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
37
+ Capybara::Selenium::Driver.new(app, browser: :chrome, capabilities: capabilities)
39
38
  end
40
39
 
41
40
  # Requires supporting ruby files with custom matchers and macros, etc,
@@ -15,4 +15,12 @@ module ControllerLevelHelpers
15
15
  def initialize_controller_helpers(helper)
16
16
  helper.extend ControllerViewHelpers
17
17
  end
18
+
19
+ # Monkeypatch to fix https://github.com/rspec/rspec-rails/pull/2521
20
+ def _default_render_options
21
+ val = super
22
+ return val unless val[:handlers]
23
+
24
+ val.merge(handlers: val.fetch(:handlers).map(&:to_sym))
25
+ end
18
26
  end
@@ -23,7 +23,7 @@ RSpec.describe "catalog/constraints" do
23
23
  end
24
24
 
25
25
  it "renders a start over link with the current view type" do
26
- allow(view).to receive(:search_action_path).with(view: :xyz).and_return('http://xyz?view=xyz')
26
+ allow(view).to receive(:search_action_path).with({ view: :xyz }).and_return('http://xyz?view=xyz')
27
27
  allow(view).to receive_messages(query_has_constraints?: true)
28
28
  params[:view] = 'xyz'
29
29
  allow(view).to receive(:blacklight_config).and_return(blacklight_config)
@@ -2,7 +2,7 @@
2
2
 
3
3
  # spec for default partial to display solr document fields in catalog INDEX view
4
4
 
5
- RSpec.describe "/catalog/_index" do
5
+ RSpec.describe "catalog/_index" do
6
6
  include BlacklightHelper
7
7
  include CatalogHelper
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # spec for default partial to display solr document fields in catalog show view
4
4
 
5
- RSpec.describe "/catalog/_show" do
5
+ RSpec.describe "catalog/_show" do
6
6
  include BlacklightHelper
7
7
  include CatalogHelper
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # spec for sidebar partial in catalog show view
4
4
 
5
- RSpec.describe "/catalog/_show_sidebar.html.erb" do
5
+ RSpec.describe "catalog/_show_sidebar.html.erb" do
6
6
  let(:blacklight_config) do
7
7
  Blacklight::Configuration.new do |config|
8
8
  config.index.title_field = 'title_tsim'
@@ -3,7 +3,7 @@
3
3
  RSpec.describe "catalog/facet.json", api: true do
4
4
  it "renders facet json" do
5
5
  assign :pagination, items: [{ value: 'Book' }]
6
- render template: "catalog/facet.json", format: :json
6
+ render template: "catalog/facet", formats: [:json]
7
7
  hash = JSON.parse(rendered)
8
8
  expect(hash).to eq('response' => { 'facets' => { 'items' => [{ 'value' => 'Book' }] } })
9
9
  end
@@ -16,6 +16,7 @@ RSpec.describe "catalog/index" do
16
16
 
17
17
  before do
18
18
  @response = Blacklight::Solr::Response.new({ response: { numFound: 30 } }, start: 10, rows: 10)
19
+ allow(controller).to receive(:search_state_class).and_return(Blacklight::SearchState)
19
20
  allow(@response).to receive(:documents).and_return(document_list)
20
21
  params['content_format'] = 'some_format'
21
22
  allow(view).to receive(:action_name).and_return('index')
@@ -18,6 +18,7 @@ RSpec.describe "catalog/index.html.erb" do
18
18
 
19
19
  describe "with search parameters" do
20
20
  before do
21
+ allow(controller).to receive(:search_state_class).and_return(Blacklight::SearchState)
21
22
  allow(view).to receive(:has_search_parameters?).and_return(true)
22
23
  stub_template "catalog/_results_pagination.html.erb" => ""
23
24
  stub_template "catalog/_search_header.html.erb" => "header_content"
@@ -16,7 +16,7 @@ RSpec.describe "catalog/index.json", api: true do
16
16
  let(:presenter) { Blacklight::JsonPresenter.new(response, config) }
17
17
 
18
18
  let(:hash) do
19
- render template: "catalog/index.json", format: :json
19
+ render template: "catalog/index", formats: [:json]
20
20
  JSON.parse(rendered).with_indifferent_access
21
21
  end
22
22
 
@@ -11,7 +11,7 @@ RSpec.describe "catalog/show.json" do
11
11
  end
12
12
 
13
13
  let(:hash) do
14
- render template: "catalog/show.json", format: :json
14
+ render template: "catalog/show", formats: [:json]
15
15
  JSON.parse(rendered).with_indifferent_access
16
16
  end
17
17
 
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.22.2
4
+ version: 7.23.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: 2021-12-19 00:00:00.000000000 Z
20
+ date: 2022-02-28 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'
31
+ version: '7.1'
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'
41
+ version: '7.1'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: globalid
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -129,14 +129,14 @@ dependencies:
129
129
  requirements:
130
130
  - - "~>"
131
131
  - !ruby/object:Gem::Version
132
- version: '2.42'
132
+ version: '2.43'
133
133
  type: :runtime
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: '2.42'
139
+ version: '2.43'
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: rsolr
142
142
  requirement: !ruby/object:Gem::Requirement
@@ -163,28 +163,14 @@ dependencies:
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 4.0.0.beta2
166
+ version: '5.0'
167
167
  type: :development
168
168
  prerelease: false
169
169
  version_requirements: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 4.0.0.beta2
174
- - !ruby/object:Gem::Dependency
175
- name: rspec-its
176
- requirement: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ">="
179
- - !ruby/object:Gem::Version
180
- version: '0'
181
- type: :development
182
- prerelease: false
183
- version_requirements: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
173
+ version: '5.0'
188
174
  - !ruby/object:Gem::Dependency
189
175
  name: rspec-collection_matchers
190
176
  requirement: !ruby/object:Gem::Requirement
@@ -489,6 +475,8 @@ files:
489
475
  - app/components/blacklight/search_bar_component.rb
490
476
  - app/components/blacklight/search_context_component.html.erb
491
477
  - app/components/blacklight/search_context_component.rb
478
+ - app/components/blacklight/search_history_constraint_layout_component.rb
479
+ - app/components/blacklight/start_over_button_component.rb
492
480
  - app/components/blacklight/system/dropdown_component.html.erb
493
481
  - app/components/blacklight/system/dropdown_component.rb
494
482
  - app/components/blacklight/system/flash_message_component.html.erb
@@ -703,6 +691,7 @@ files:
703
691
  - lib/blacklight/configuration/sort_field.rb
704
692
  - lib/blacklight/configuration/tool_config.rb
705
693
  - lib/blacklight/configuration/view_config.rb
694
+ - lib/blacklight/deprecations/engine_configuration.rb
706
695
  - lib/blacklight/engine.rb
707
696
  - lib/blacklight/exceptions.rb
708
697
  - lib/blacklight/nested_open_struct_with_hash_access.rb
@@ -769,6 +758,7 @@ files:
769
758
  - package.json
770
759
  - spec/components/blacklight/advanced_search_form_component_spec.rb
771
760
  - spec/components/blacklight/constraint_layout_component_spec.rb
761
+ - spec/components/blacklight/constraints_component_spec.rb
772
762
  - spec/components/blacklight/document/action_component_spec.rb
773
763
  - spec/components/blacklight/document/group_component_spec.rb
774
764
  - spec/components/blacklight/document_component_spec.rb
@@ -779,6 +769,8 @@ files:
779
769
  - spec/components/blacklight/facet_item_pivot_component_spec.rb
780
770
  - spec/components/blacklight/hidden_search_state_component_spec.rb
781
771
  - spec/components/blacklight/metadata_field_component_spec.rb
772
+ - spec/components/blacklight/response/spellcheck_component_spec.rb
773
+ - spec/components/blacklight/start_over_button_component_spec.rb
782
774
  - spec/components/blacklight/system/flash_message_component_spec.rb
783
775
  - spec/controllers/alternate_controller_spec.rb
784
776
  - spec/controllers/application_controller_spec.rb
@@ -826,6 +818,7 @@ files:
826
818
  - spec/lib/blacklight/configuration/facet_field_spec.rb
827
819
  - spec/lib/blacklight/configuration/field_spec.rb
828
820
  - spec/lib/blacklight/configuration/view_config_spec.rb
821
+ - spec/lib/blacklight/engine_spec.rb
829
822
  - spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb
830
823
  - spec/lib/blacklight/open_struct_with_hash_access_spec.rb
831
824
  - spec/lib/blacklight/parameters_spec.rb
@@ -875,6 +868,7 @@ files:
875
868
  - spec/presenters/pipeline_spec.rb
876
869
  - spec/presenters/thumbnail_presenter_spec.rb
877
870
  - spec/routing/catalog_routing_spec.rb
871
+ - spec/routing/search_history_spec.rb
878
872
  - spec/services/blacklight/search_service_spec.rb
879
873
  - spec/spec_helper.rb
880
874
  - spec/support/controller_level_helpers.rb
@@ -943,6 +937,7 @@ summary: Blacklight provides a discovery interface for any Solr (http://lucene.a
943
937
  test_files:
944
938
  - spec/components/blacklight/advanced_search_form_component_spec.rb
945
939
  - spec/components/blacklight/constraint_layout_component_spec.rb
940
+ - spec/components/blacklight/constraints_component_spec.rb
946
941
  - spec/components/blacklight/document/action_component_spec.rb
947
942
  - spec/components/blacklight/document/group_component_spec.rb
948
943
  - spec/components/blacklight/document_component_spec.rb
@@ -953,6 +948,8 @@ test_files:
953
948
  - spec/components/blacklight/facet_item_pivot_component_spec.rb
954
949
  - spec/components/blacklight/hidden_search_state_component_spec.rb
955
950
  - spec/components/blacklight/metadata_field_component_spec.rb
951
+ - spec/components/blacklight/response/spellcheck_component_spec.rb
952
+ - spec/components/blacklight/start_over_button_component_spec.rb
956
953
  - spec/components/blacklight/system/flash_message_component_spec.rb
957
954
  - spec/controllers/alternate_controller_spec.rb
958
955
  - spec/controllers/application_controller_spec.rb
@@ -1000,6 +997,7 @@ test_files:
1000
997
  - spec/lib/blacklight/configuration/facet_field_spec.rb
1001
998
  - spec/lib/blacklight/configuration/field_spec.rb
1002
999
  - spec/lib/blacklight/configuration/view_config_spec.rb
1000
+ - spec/lib/blacklight/engine_spec.rb
1003
1001
  - spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb
1004
1002
  - spec/lib/blacklight/open_struct_with_hash_access_spec.rb
1005
1003
  - spec/lib/blacklight/parameters_spec.rb
@@ -1049,6 +1047,7 @@ test_files:
1049
1047
  - spec/presenters/pipeline_spec.rb
1050
1048
  - spec/presenters/thumbnail_presenter_spec.rb
1051
1049
  - spec/routing/catalog_routing_spec.rb
1050
+ - spec/routing/search_history_spec.rb
1052
1051
  - spec/services/blacklight/search_service_spec.rb
1053
1052
  - spec/spec_helper.rb
1054
1053
  - spec/support/controller_level_helpers.rb