blacklight 8.0.0.beta8 → 8.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/app/assets/config/blacklight/manifest.js +1 -1
  4. data/app/components/blacklight/document/show_tools_component.html.erb +12 -0
  5. data/app/components/blacklight/document/show_tools_component.rb +23 -0
  6. data/app/components/blacklight/document/sidebar_component.html.erb +1 -1
  7. data/app/components/blacklight/document/sidebar_component.rb +12 -0
  8. data/app/components/blacklight/document_component.rb +1 -1
  9. data/app/components/blacklight/response/pagination_component.html.erb +1 -1
  10. data/app/components/blacklight/response/pagination_component.rb +5 -1
  11. data/app/components/blacklight/top_navbar_component.html.erb +1 -1
  12. data/app/components/blacklight/top_navbar_component.rb +4 -0
  13. data/app/helpers/blacklight/blacklight_helper_behavior.rb +10 -0
  14. data/app/helpers/blacklight/render_partials_helper_behavior.rb +1 -0
  15. data/app/views/catalog/_show_tools.html.erb +2 -14
  16. data/app/views/layouts/blacklight/base.html.erb +0 -3
  17. data/lib/blacklight/configuration.rb +3 -0
  18. data/lib/railties/blacklight.rake +4 -4
  19. data/package.json +2 -2
  20. data/spec/components/blacklight/document/sidebar_component_spec.rb +63 -0
  21. data/spec/components/blacklight/document_component_spec.rb +20 -0
  22. data/spec/components/blacklight/header_component_spec.rb +20 -0
  23. data/spec/controllers/catalog_controller_spec.rb +1 -1
  24. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +2 -2
  25. data/spec/models/blacklight/configuration_spec.rb +2 -2
  26. data/spec/models/blacklight/search_builder_spec.rb +3 -3
  27. data/spec/models/blacklight/solr/request_spec.rb +2 -2
  28. data/spec/presenters/blacklight/show_presenter_spec.rb +4 -10
  29. data/spec/support/view_component_test_helpers.rb +1 -1
  30. data/spec/views/catalog/_show_tools.html.erb_spec.rb +2 -2
  31. data/spec/views/catalog/index.json.jbuilder_spec.rb +1 -1
  32. metadata +11 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf6f2c77b039ffcb18b23c50795dd2acd9dd410e50749422a55a2d6b7f85d9aa
4
- data.tar.gz: f5edad3ff59994077cbe368027d5af44ed1284cad8d561b8dba46e12a82a0688
3
+ metadata.gz: 788296244ed7711b196967fcc206a6b7836db4b384bcbbe7e062cdf9f29d8b06
4
+ data.tar.gz: 4f83e1cf3421afde9db8cd8bfb7fed298c5f3c5874de2f22f7e7a48db2fe5979
5
5
  SHA512:
6
- metadata.gz: 4f8630de40970d3cd1422168e292445057172b55942eebd6fccbda3ca6be8141c89b9981ee459880b8185482d4c37d957803bcc610b87afa612876760085439d
7
- data.tar.gz: 90e98ba147b335d833ca80b139776b89c622c18184a59e8c19083fa0b651983206ab209aa3b0429a673b34781a9cdfcc53dc6b12bafeaf74e4da575a00cd2151
6
+ metadata.gz: 193f6a74d712c28cd42a7354ff0da15b7e303b94e51a3854de54401a38ef2e444bf76a1878130fcef71d5286080943cc5635d46f3f38b8bce7c539d2af6f10fe
7
+ data.tar.gz: 0cf1904df3915ed93d122d54d653201b576c2b4027b182fdb88e6d02bcc9885bac69ecc9c7f6331f4dd3d9ca7f637600e869a5edcb106dad03b2c88868e77e86
data/VERSION CHANGED
@@ -1 +1 @@
1
- 8.0.0.beta8
1
+ 8.0.1
@@ -1,3 +1,3 @@
1
- //= link_tree ../../images
1
+ //= link_tree ../../images .png
2
2
  //= link_directory ../../stylesheets .css
3
3
  //= link_tree ../../../javascript .js
@@ -0,0 +1,12 @@
1
+ <div class="card show-tools">
2
+ <div class="card-header">
3
+ <h2 class="mb-0 h6"><%= t('blacklight.tools.title') %></h2>
4
+ </div>
5
+ <%= render Blacklight::Document::ActionsComponent.new(document: document,
6
+ tag: 'ul',
7
+ classes: 'list-group list-group-flush',
8
+ wrapping_tag: 'li',
9
+ wrapping_classes: 'list-group-item list-group-item-action',
10
+ actions: actions,
11
+ url_opts: Blacklight::Parameters.sanitize(params.to_unsafe_h)) %>
12
+ </div>
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blacklight
4
+ module Document
5
+ # Render the tools that display on the sidebar of the show page
6
+ class ShowToolsComponent < Blacklight::Component
7
+ # @param [Blacklight::Document] document
8
+ def initialize(document:)
9
+ @document = document
10
+ end
11
+
12
+ attr_reader :document
13
+
14
+ def render?
15
+ helpers.show_doc_actions?
16
+ end
17
+
18
+ def actions
19
+ helpers.document_actions(document)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,2 +1,2 @@
1
- <%= render 'show_tools', document: document %>
1
+ <%= render_show_tools %>
2
2
  <%= render(Blacklight::Document::MoreLikeThisComponent.new(document: document)) %>
@@ -11,6 +11,18 @@ module Blacklight
11
11
  end
12
12
 
13
13
  attr_reader :document
14
+
15
+ delegate :blacklight_config, to: :helpers
16
+
17
+ private
18
+
19
+ def render_show_tools
20
+ blacklight_config.view_config(:show).show_tools_component&.tap do |show_tools_component_class|
21
+ return render show_tools_component_class.new(document: document)
22
+ end
23
+
24
+ render 'show_tools', document: document, silence_deprecation: helpers.partial_from_blacklight?('show_tools')
25
+ end
14
26
  end
15
27
  end
16
28
  end
@@ -37,7 +37,7 @@ module Blacklight
37
37
 
38
38
  # The document title with some reasonable default behavior
39
39
  renders_one :title, (lambda do |*args, component: nil, **kwargs|
40
- component ||= Blacklight::DocumentTitleComponent
40
+ component ||= @presenter&.view_config&.title_component || Blacklight::DocumentTitleComponent
41
41
 
42
42
  component.new(*args, counter: @counter, document: @document, presenter: @presenter, as: @title_component, actions: !@show, link_to_document: !@show, document_component: self, **kwargs)
43
43
  end)
@@ -1,3 +1,3 @@
1
- <%= content_tag :section, class: 'pagination', **@html_attr do %>
1
+ <%= content_tag :section, class: 'pagination', **html_attr do %>
2
2
  <%= pagination %>
3
3
  <% end %>
@@ -8,10 +8,14 @@ module Blacklight
8
8
  # @param [Hash] html html options for the pagination container
9
9
  def initialize(response:, html: {}, **pagination_args)
10
10
  @response = response
11
- @html_attr = { aria: { label: t('views.pagination.aria.container_label') } }.merge(html)
11
+ @html = html
12
12
  @pagination_args = pagination_args
13
13
  end
14
14
 
15
+ def html_attr
16
+ { aria: { label: t('views.pagination.aria.container_label') } }.merge(@html)
17
+ end
18
+
15
19
  def pagination
16
20
  helpers.paginate @response, **Blacklight::Engine.config.blacklight.default_pagination_options, **@pagination_args
17
21
  end
@@ -1,6 +1,6 @@
1
1
  <nav class="navbar navbar-expand-md navbar-dark bg-dark topbar" role="navigation">
2
2
  <div class="<%= container_classes %>">
3
- <%= link_to application_name, blacklight_config.logo_link, class: 'mb-0 navbar-brand navbar-logo' %>
3
+ <%= logo_link %>
4
4
  <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-bs-toggle="collapse" data-target="#user-util-collapse" data-bs-target="#user-util-collapse" aria-controls="user-util-collapse" aria-expanded="false" aria-label="Toggle navigation">
5
5
  <span class="navbar-toggler-icon"></span>
6
6
  </button>
@@ -9,5 +9,9 @@ module Blacklight
9
9
  attr_reader :blacklight_config
10
10
 
11
11
  delegate :application_name, :container_classes, to: :helpers
12
+
13
+ def logo_link(title: application_name)
14
+ link_to title, blacklight_config.logo_link, class: 'mb-0 navbar-brand navbar-logo'
15
+ end
12
16
  end
13
17
  end
@@ -37,4 +37,14 @@ module Blacklight::BlacklightHelperBehavior
37
37
  self.formats = old_formats
38
38
  nil
39
39
  end
40
+
41
+ def self.blacklight_gem_path
42
+ @blacklight_gem_path ||= Gem.loaded_specs["blacklight"].full_gem_path
43
+ end
44
+
45
+ def partial_from_blacklight?(partial)
46
+ path = lookup_context.find_all(partial, lookup_context.prefixes + [""], true).first&.identifier
47
+
48
+ path.nil? ? false : path.starts_with?(Blacklight::BlacklightHelperBehavior.blacklight_gem_path)
49
+ end
40
50
  end
@@ -59,6 +59,7 @@ render document_component.new(presenter: document_presenter(document), component
59
59
  if template
60
60
  template.render(self, locals.merge(document: doc))
61
61
  else
62
+ logger.warn("No template was found for base_name: '#{base_name}', view_type: '#{view_type}' in render_document_partial")
62
63
  ''
63
64
  end
64
65
  end
@@ -1,14 +1,2 @@
1
- <% if show_doc_actions? %>
2
- <div class="card show-tools">
3
- <div class="card-header">
4
- <h2 class="mb-0 h6"><%= t('blacklight.tools.title') %></h2>
5
- </div>
6
- <%= render Blacklight::Document::ActionsComponent.new(document: document,
7
- tag: 'ul',
8
- classes: 'list-group list-group-flush',
9
- wrapping_tag: 'li',
10
- wrapping_classes: 'list-group-item list-group-item-action',
11
- actions: document_actions(document),
12
- url_opts: Blacklight::Parameters.sanitize(params.to_unsafe_h)) %>
13
- </div>
14
- <% end %>
1
+ <% Blacklight.deprecation.warn('The partial _show_tools.html.erb will be removed in 9.0. Configure blacklight_config.show.show_tools_component instead (default Blacklight::Document::ShowToolsComponent).') unless local_assigns[:silence_deprecation] %>
2
+ <%= render Blacklight::Document::ShowToolsComponent.new(document: document) %>
@@ -5,9 +5,6 @@
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
7
 
8
- <!-- Internet Explorer use the highest version available -->
9
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
10
-
11
8
  <title><%= render_page_title %></title>
12
9
  <script>
13
10
  document.querySelector('html').classList.remove('no-js');
@@ -181,6 +181,9 @@ module Blacklight
181
181
  # document presenter class used by helpers and views
182
182
  document_presenter_class: nil,
183
183
  document_component: Blacklight::DocumentComponent,
184
+ # in Blacklight 9, the default show_tools_component configuration will
185
+ # be Blacklight::Document::ShowToolsComponent
186
+ show_tools_component: nil,
184
187
  sidebar_component: Blacklight::Document::SidebarComponent,
185
188
  display_type_field: nil,
186
189
  # the "field access" key to use to look up the document display fields
@@ -40,7 +40,7 @@ namespace :blacklight do
40
40
  exit 1
41
41
  end
42
42
  rescue => e
43
- puts e.to_s
43
+ puts e
44
44
  exit 1
45
45
  end
46
46
 
@@ -70,7 +70,7 @@ namespace :blacklight do
70
70
  end
71
71
  rescue => e
72
72
  errors += 1
73
- puts e.to_s
73
+ puts e
74
74
  end
75
75
 
76
76
  print " - search_results: "
@@ -92,7 +92,7 @@ namespace :blacklight do
92
92
  end
93
93
  rescue => e
94
94
  errors += 1
95
- puts e.to_s
95
+ puts e
96
96
  end
97
97
 
98
98
  print " - fetch: "
@@ -112,7 +112,7 @@ namespace :blacklight do
112
112
  end
113
113
  rescue => e
114
114
  errors += 1
115
- puts e.to_s
115
+ puts e
116
116
  end
117
117
 
118
118
  exit 1 if errors > 0
data/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "blacklight-frontend",
3
- "version": "8.0.0-beta.8",
4
- "description": "[![Build Status](https://travis-ci.com/projectblacklight/blacklight.png?branch=main)](https://travis-ci.com/projectblacklight/blacklight) [![Gem Version](https://badge.fury.io/rb/blacklight.png)](http://badge.fury.io/rb/blacklight) [![Coverage Status](https://coveralls.io/repos/github/projectblacklight/blacklight/badge.svg?branch=main)](https://coveralls.io/github/projectblacklight/blacklight?branch=main)",
3
+ "version": "8.0.1",
4
+ "description": "The frontend code and styles for Blacklight",
5
5
  "main": "app/assets/javascripts/blacklight",
6
6
  "module": "app/assets/javascripts/blacklight/blacklight.esm.js",
7
7
  "scripts": {
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Blacklight::Document::SidebarComponent, type: :component do
6
+ subject(:component) { described_class.new(presenter: document) }
7
+
8
+ let(:view_context) { controller.view_context }
9
+ let(:render) do
10
+ component.render_in(view_context)
11
+ end
12
+
13
+ let(:rendered) do
14
+ Capybara::Node::Simple.new(render)
15
+ end
16
+
17
+ let(:document) { view_context.document_presenter(presented_document) }
18
+
19
+ let(:presented_document) { SolrDocument.new(id: 'x', title_tsim: 'Title') }
20
+
21
+ let(:blacklight_config) do
22
+ CatalogController.blacklight_config.deep_copy
23
+ end
24
+
25
+ let(:expected_html) { "<div class=\"expected-show_tools\">Expected Content</div>".html_safe }
26
+
27
+ before do
28
+ # Every call to view_context returns a different object. This ensures it stays stable.
29
+ allow(controller).to receive(:view_context).and_return(view_context)
30
+ allow(controller).to receive(:blacklight_config).and_return(blacklight_config)
31
+ end
32
+
33
+ describe '#render_show_tools' do
34
+ # rubocop:disable RSpec/SubjectStub
35
+ before do
36
+ allow(component).to receive(:render).with(an_instance_of(Blacklight::Document::MoreLikeThisComponent)).and_return("")
37
+ end
38
+
39
+ context "without a configured ShowTools component" do
40
+ before do
41
+ allow(component).to receive(:render).with('show_tools', document: presented_document, silence_deprecation: false).and_return(expected_html)
42
+ end
43
+
44
+ it 'renders show_tools partial' do
45
+ expect(rendered).to have_selector 'div[@class="expected-show_tools"]'
46
+ end
47
+ end
48
+
49
+ context "with a configured ShowTools component" do
50
+ let(:show_tools_component) { Class.new(Blacklight::Document::ShowToolsComponent) }
51
+
52
+ before do
53
+ blacklight_config.show.show_tools_component = show_tools_component
54
+ allow(component).to receive(:render).with(an_instance_of(show_tools_component)).and_return(expected_html)
55
+ end
56
+
57
+ it 'renders configured show_tools component' do
58
+ expect(rendered).to have_selector 'div[@class="expected-show_tools"]'
59
+ end
60
+ end
61
+ # rubocop:enable RSpec/SubjectStub
62
+ end
63
+ end
@@ -181,6 +181,26 @@ RSpec.describe Blacklight::DocumentComponent, type: :component do
181
181
  expect(rendered).to have_text 'blah'
182
182
  end
183
183
  end
184
+
185
+ context 'with configured title component' do
186
+ let(:custom_component_class) do
187
+ Class.new(Blacklight::DocumentTitleComponent) do
188
+ # Override component rendering with our own value
189
+ def call
190
+ 'Titleriffic'
191
+ end
192
+ end
193
+ end
194
+
195
+ before do
196
+ stub_const('MyTitleComponent', custom_component_class)
197
+ blacklight_config.show.title_component = MyTitleComponent
198
+ end
199
+
200
+ it 'renders custom component' do
201
+ expect(rendered).to have_text 'Titleriffic'
202
+ end
203
+ end
184
204
  end
185
205
 
186
206
  it 'renders partials' do
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Blacklight::HeaderComponent, type: :component do
4
+ before do
5
+ with_controller_class(CatalogController) do
6
+ allow(controller).to receive(:current_user).and_return(nil)
7
+ allow(controller).to receive(:search_action_url).and_return('/search')
8
+ render
9
+ end
10
+ end
11
+
12
+ context 'with no slots' do
13
+ let(:render) { render_inline(described_class.new(blacklight_config: CatalogController.blacklight_config)) }
14
+
15
+ it 'draws the topbar' do
16
+ expect(page).to have_css 'nav.topbar'
17
+ expect(page).to have_link 'Blacklight', href: '/'
18
+ end
19
+ end
20
+ end
@@ -158,7 +158,7 @@ RSpec.describe CatalogController, api: true do
158
158
 
159
159
  format = facets.find { |x| x['id'] == 'format' }
160
160
 
161
- expect(format['attributes']['items'].pluck('attributes')).to match_array([{ "value" => "Book", "hits" => 30, "label" => "Book" }])
161
+ expect(format['attributes']['items'].pluck('attributes')).to contain_exactly({ "value" => "Book", "hits" => 30, "label" => "Book" })
162
162
  expect(format['links']['self']).to eq facet_catalog_url(format: :json, id: 'format')
163
163
  expect(format['attributes']['items'].first['links']['self']).to eq search_catalog_url(format: :json, f: { format: ['Book'] })
164
164
  end
@@ -76,7 +76,7 @@ RSpec.describe Blacklight::OpenStructWithHashAccess do
76
76
 
77
77
  it "sorts the underlying hash" do
78
78
  sorted = subject.sort_by { |_k, v| v }
79
- expect(sorted.keys).to match_array [:b, :a, :c]
79
+ expect(sorted.keys).to contain_exactly(:b, :a, :c)
80
80
  end
81
81
  end
82
82
 
@@ -85,7 +85,7 @@ RSpec.describe Blacklight::OpenStructWithHashAccess do
85
85
 
86
86
  it "sorts the underlying hash" do
87
87
  subject.sort_by! { |_k, v| v }
88
- expect(subject.keys).to match_array [:b, :a, :c]
88
+ expect(subject.keys).to contain_exactly(:b, :a, :c)
89
89
  end
90
90
  end
91
91
 
@@ -172,8 +172,8 @@ RSpec.describe "Blacklight::Configuration", api: true do
172
172
 
173
173
  expect(config.a[:value]).to eq 1
174
174
  expect(config_copy.a[:value]).to eq 2
175
- expect(config.b).to match_array [1, 2, 3]
176
- expect(config_copy.b).to match_array [1, 2, 3, 5]
175
+ expect(config.b).to contain_exactly(1, 2, 3)
176
+ expect(config_copy.b).to contain_exactly(1, 2, 3, 5)
177
177
  expect(config.c.value).to match_array %w[a b]
178
178
  expect(config_copy.c.value).to match_array %w[a b c]
179
179
  end
@@ -45,7 +45,7 @@ RSpec.describe Blacklight::SearchBuilder, api: true do
45
45
 
46
46
  it "is mutable" do
47
47
  subject.processor_chain.insert(-1, :d)
48
- expect(subject.processor_chain).to match_array [:a, :b, :c, :d]
48
+ expect(subject.processor_chain).to contain_exactly(:a, :b, :c, :d)
49
49
  end
50
50
  end
51
51
 
@@ -56,7 +56,7 @@ RSpec.describe Blacklight::SearchBuilder, api: true do
56
56
  builder = subject.append(:d, :e)
57
57
  expect(subject.processor_chain).to eq processor_chain
58
58
  expect(builder.processor_chain).not_to eq subject.processor_chain
59
- expect(builder.processor_chain).to match_array [:a, :b, :c, :d, :e]
59
+ expect(builder.processor_chain).to contain_exactly(:a, :b, :c, :d, :e)
60
60
  end
61
61
  end
62
62
 
@@ -68,7 +68,7 @@ RSpec.describe Blacklight::SearchBuilder, api: true do
68
68
  expect(builder).not_to equal(subject)
69
69
  expect(subject.processor_chain).to eq processor_chain
70
70
  expect(builder.processor_chain).not_to eq subject.processor_chain
71
- expect(builder.processor_chain).to match_array [:a, :c, :e]
71
+ expect(builder.processor_chain).to contain_exactly(:a, :c, :e)
72
72
  end
73
73
  end
74
74
 
@@ -45,7 +45,7 @@ RSpec.describe Blacklight::Solr::Request, api: true do
45
45
  subject.append_query 'this is my query'
46
46
  subject.append_query 'another:query'
47
47
  expect(subject).not_to have_key 'q'
48
- expect(subject.dig('json', 'query', 'bool', 'must')).to match_array ['this is my query', 'another:query']
48
+ expect(subject.dig('json', 'query', 'bool', 'must')).to contain_exactly('this is my query', 'another:query')
49
49
  end
50
50
  end
51
51
 
@@ -62,7 +62,7 @@ RSpec.describe Blacklight::Solr::Request, api: true do
62
62
  subject['q'] = 'some query'
63
63
  subject.append_boolean_query :must, 'also required'
64
64
 
65
- expect(subject.dig('json', 'query', 'bool', 'must')).to match_array ['some query', 'also required']
65
+ expect(subject.dig('json', 'query', 'bool', 'must')).to contain_exactly('some query', 'also required')
66
66
  end
67
67
  end
68
68
  end
@@ -50,10 +50,6 @@ RSpec.describe Blacklight::ShowPresenter, api: true do
50
50
 
51
51
  MockDocument.use_extension(MockExtension)
52
52
 
53
- def mock_document_app_helper_url *args
54
- solr_document_url(*args)
55
- end
56
-
57
53
  allow(request_context).to receive(:polymorphic_url) do |_, opts|
58
54
  "url.#{opts[:format]}"
59
55
  end
@@ -68,12 +64,10 @@ RSpec.describe Blacklight::ShowPresenter, api: true do
68
64
  tmp_value = Capybara.ignore_hidden_elements
69
65
  Capybara.ignore_hidden_elements = false
70
66
  document.export_formats.each_pair do |format, _spec|
71
- expect(subject).to have_selector("link[href$='.#{format}']") do |matches|
72
- expect(matches).to have(1).match
73
- tag = matches[0]
74
- expect(tag.attributes["rel"].value).to eq "alternate"
75
- expect(tag.attributes["title"].value).to eq format.to_s
76
- expect(tag.attributes["href"].value).to eq mock_document_app_helper_url(document, format: format)
67
+ expect(subject).to have_selector("link[href$='.#{format}']", count: 1) do |tag|
68
+ expect(tag["rel"]).to eq "alternate"
69
+ expect(tag["title"]).to eq format.to_s
70
+ expect(tag["href"]).to eq "url.#{format}"
77
71
  end
78
72
  end
79
73
  Capybara.ignore_hidden_elements = tmp_value
@@ -14,7 +14,7 @@ module ViewComponentTestHelpers
14
14
  return super if defined?(super)
15
15
 
16
16
  # ViewComponent 3.x
17
- return __vc_test_helpers_controller if defined?(__vc_test_helpers_controller)
17
+ return vc_test_controller if defined?(vc_test_controller)
18
18
 
19
19
  ApplicationController.new.extend(Rails.application.routes.url_helpers)
20
20
  end
@@ -3,10 +3,10 @@
3
3
  RSpec.describe "catalog/_show_tools.html.erb" do
4
4
  let(:document) { SolrDocument.new id: 'xyz', format: 'a' }
5
5
  let(:blacklight_config) { Blacklight::Configuration.new }
6
- let(:component) { instance_double(Blacklight::Document::ActionsComponent) }
6
+ let(:component) { instance_double(Blacklight::Document::ShowToolsComponent) }
7
7
 
8
8
  before do
9
- allow(Blacklight::Document::ActionsComponent).to receive(:new).and_return(component)
9
+ allow(Blacklight::Document::ShowToolsComponent).to receive(:new).and_return(component)
10
10
  allow(view).to receive(:render).with(component)
11
11
  allow(view).to receive(:render).with('catalog/show_tools', { document: document }).and_call_original
12
12
  allow(view).to receive(:blacklight_config).and_return blacklight_config
@@ -93,7 +93,7 @@ RSpec.describe "catalog/index.json", api: true do
93
93
  expect(facets.pluck('id')).to include 'format'
94
94
  expect(format['links']).to include self: 'http://test.host/some/facet/url'
95
95
  expect(format['attributes']['label']).to eq 'Format'
96
- expect(format_item_attributes).to match_array [{ value: 'Book', hits: 30, label: 'Book' }]
96
+ expect(format_item_attributes).to contain_exactly({ value: 'Book', hits: 30, label: 'Book' })
97
97
  end
98
98
  end
99
99
 
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.0.0.beta8
4
+ version: 8.0.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-02-27 00:00:00.000000000 Z
20
+ date: 2023-05-01 00:00:00.000000000 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: rails
@@ -423,6 +423,8 @@ files:
423
423
  - app/components/blacklight/document/group_component.rb
424
424
  - app/components/blacklight/document/more_like_this_component.html.erb
425
425
  - app/components/blacklight/document/more_like_this_component.rb
426
+ - app/components/blacklight/document/show_tools_component.html.erb
427
+ - app/components/blacklight/document/show_tools_component.rb
426
428
  - app/components/blacklight/document/sidebar_component.html.erb
427
429
  - app/components/blacklight/document/sidebar_component.rb
428
430
  - app/components/blacklight/document/thumbnail_component.html.erb
@@ -769,6 +771,7 @@ files:
769
771
  - spec/components/blacklight/constraints_component_spec.rb
770
772
  - spec/components/blacklight/document/action_component_spec.rb
771
773
  - spec/components/blacklight/document/group_component_spec.rb
774
+ - spec/components/blacklight/document/sidebar_component_spec.rb
772
775
  - spec/components/blacklight/document_component_spec.rb
773
776
  - spec/components/blacklight/document_metadata_component_spec.rb
774
777
  - spec/components/blacklight/facet_component_spec.rb
@@ -776,6 +779,7 @@ files:
776
779
  - spec/components/blacklight/facet_field_list_component_spec.rb
777
780
  - spec/components/blacklight/facet_item_component_spec.rb
778
781
  - spec/components/blacklight/facet_item_pivot_component_spec.rb
782
+ - spec/components/blacklight/header_component_spec.rb
779
783
  - spec/components/blacklight/hidden_search_state_component_spec.rb
780
784
  - spec/components/blacklight/metadata_field_component_spec.rb
781
785
  - spec/components/blacklight/response/spellcheck_component_spec.rb
@@ -927,11 +931,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
927
931
  version: '2.7'
928
932
  required_rubygems_version: !ruby/object:Gem::Requirement
929
933
  requirements:
930
- - - ">"
934
+ - - ">="
931
935
  - !ruby/object:Gem::Version
932
- version: 1.3.1
936
+ version: '0'
933
937
  requirements: []
934
- rubygems_version: 3.3.26
938
+ rubygems_version: 3.4.12
935
939
  signing_key:
936
940
  specification_version: 4
937
941
  summary: Blacklight provides a discovery interface for any Solr (http://lucene.apache.org/solr)
@@ -942,6 +946,7 @@ test_files:
942
946
  - spec/components/blacklight/constraints_component_spec.rb
943
947
  - spec/components/blacklight/document/action_component_spec.rb
944
948
  - spec/components/blacklight/document/group_component_spec.rb
949
+ - spec/components/blacklight/document/sidebar_component_spec.rb
945
950
  - spec/components/blacklight/document_component_spec.rb
946
951
  - spec/components/blacklight/document_metadata_component_spec.rb
947
952
  - spec/components/blacklight/facet_component_spec.rb
@@ -949,6 +954,7 @@ test_files:
949
954
  - spec/components/blacklight/facet_field_list_component_spec.rb
950
955
  - spec/components/blacklight/facet_item_component_spec.rb
951
956
  - spec/components/blacklight/facet_item_pivot_component_spec.rb
957
+ - spec/components/blacklight/header_component_spec.rb
952
958
  - spec/components/blacklight/hidden_search_state_component_spec.rb
953
959
  - spec/components/blacklight/metadata_field_component_spec.rb
954
960
  - spec/components/blacklight/response/spellcheck_component_spec.rb