blacklight 7.17.2 → 7.19.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/blacklight.js +1 -2
- data/app/assets/stylesheets/blacklight/_balanced_list.scss +2 -2
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +1 -1
- data/app/assets/stylesheets/blacklight/_constraints.scss +2 -2
- data/app/assets/stylesheets/blacklight/_controls.scss +2 -1
- data/app/assets/stylesheets/blacklight/_facets.scss +3 -1
- data/app/assets/stylesheets/blacklight/_header.scss +6 -1
- data/app/components/blacklight/constraint_layout_component.html.erb +1 -1
- data/app/components/blacklight/constraints_component.html.erb +2 -2
- data/app/components/blacklight/content_areas_shim.rb +2 -1
- data/app/components/blacklight/document/thumbnail_component.html.erb +3 -3
- data/app/components/blacklight/document/thumbnail_component.rb +11 -3
- data/app/components/blacklight/document_component.rb +7 -7
- data/app/components/blacklight/facet_field_component.html.erb +3 -1
- data/app/components/blacklight/facet_field_no_layout_component.rb +1 -1
- data/app/components/blacklight/facet_item_component.rb +2 -2
- data/app/components/blacklight/facet_item_pivot_component.rb +2 -2
- data/app/components/blacklight/metadata_field_layout_component.rb +1 -1
- data/app/components/blacklight/response/facet_group_component.html.erb +2 -0
- data/app/components/blacklight/response/view_type_component.html.erb +1 -1
- data/app/components/blacklight/search_bar_component.html.erb +3 -3
- data/app/components/blacklight/system/dropdown_component.rb +1 -1
- data/app/components/blacklight/system/flash_message_component.html.erb +1 -1
- data/app/components/blacklight/system/modal_component.html.erb +1 -1
- data/app/helpers/blacklight/component_helper_behavior.rb +1 -1
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +5 -1
- data/app/javascript/blacklight/modal.js +1 -1
- data/app/views/blacklight/nav/_bookmark.html.erb +1 -1
- data/app/views/bookmarks/index.html.erb +1 -1
- data/app/views/catalog/_constraints.html.erb +2 -2
- data/app/views/catalog/_document.html.erb +4 -3
- data/app/views/catalog/_document_list.html.erb +3 -2
- data/app/views/catalog/_home_text.html.erb +1 -1
- data/app/views/catalog/_per_page_widget.html.erb +1 -1
- data/app/views/catalog/_search_results.html.erb +2 -2
- data/app/views/search_history/index.html.erb +1 -1
- data/app/views/shared/_header_navbar.html.erb +1 -1
- data/config/locales/blacklight.ar.yml +2 -2
- data/config/locales/blacklight.ca.yml +2 -2
- data/config/locales/blacklight.de.yml +2 -2
- data/config/locales/blacklight.en.yml +2 -2
- data/config/locales/blacklight.es.yml +2 -2
- data/config/locales/blacklight.fr.yml +2 -2
- data/config/locales/blacklight.hu.yml +2 -2
- data/config/locales/blacklight.it.yml +2 -2
- data/config/locales/blacklight.nl.yml +2 -2
- data/config/locales/blacklight.pt-BR.yml +1 -1
- data/config/locales/blacklight.sq.yml +2 -2
- data/config/locales/blacklight.zh.yml +2 -2
- data/lib/blacklight/configuration.rb +7 -1
- data/lib/blacklight/configuration/view_config.rb +3 -1
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +33 -14
- data/lib/blacklight/open_struct_with_hash_access.rb +1 -1
- data/lib/blacklight/search_builder.rb +1 -0
- data/lib/blacklight/solr/request.rb +10 -7
- data/lib/blacklight/solr/search_builder_behavior.rb +28 -16
- data/lib/generators/blacklight/install_generator.rb +5 -5
- data/lib/generators/blacklight/solr_generator.rb +4 -2
- data/lib/generators/blacklight/user_generator.rb +4 -2
- data/spec/components/blacklight/constraint_layout_component_spec.rb +3 -7
- data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +3 -7
- data/spec/components/blacklight/facet_field_list_component_spec.rb +3 -7
- data/spec/components/blacklight/facet_item_component_spec.rb +2 -6
- data/spec/components/blacklight/facet_item_pivot_component_spec.rb +3 -7
- data/spec/components/blacklight/hidden_search_state_component_spec.rb +7 -8
- data/spec/components/blacklight/metadata_field_component_spec.rb +4 -8
- data/spec/features/facets_spec.rb +2 -2
- data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +9 -10
- data/spec/helpers/blacklight_helper_spec.rb +20 -2
- data/spec/helpers/catalog_helper_spec.rb +1 -1
- data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +36 -0
- data/spec/models/blacklight/configuration_spec.rb +10 -0
- data/spec/models/blacklight/solr/request_spec.rb +0 -1
- data/spec/models/blacklight/solr/search_builder_spec.rb +23 -1
- data/spec/services/blacklight/search_service_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/support/view_component_capybara_test_helpers.rb +8 -0
- data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_document.html.erb_spec.rb +9 -0
- data/spec/views/catalog/_document_list.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +2 -2
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +5 -5
- metadata +4 -2
|
@@ -5,7 +5,8 @@ module Blacklight::Solr
|
|
|
5
5
|
|
|
6
6
|
included do
|
|
7
7
|
self.default_processor_chain = [
|
|
8
|
-
:default_solr_parameters, :
|
|
8
|
+
:default_solr_parameters, :add_search_field_default_parameters,
|
|
9
|
+
:add_query_to_solr, :add_facet_fq_to_solr,
|
|
9
10
|
:add_facetting_to_solr, :add_solr_fields_to_query, :add_paging_to_solr,
|
|
10
11
|
:add_sorting_to_solr, :add_group_config_to_solr,
|
|
11
12
|
:add_facet_paging_to_solr, :add_adv_search_clauses,
|
|
@@ -18,21 +19,17 @@ module Blacklight::Solr
|
|
|
18
19
|
# merge to dup values, to avoid later mutating the original by mistake.
|
|
19
20
|
def default_solr_parameters(solr_parameters)
|
|
20
21
|
blacklight_config.default_solr_params.each do |key, value|
|
|
21
|
-
solr_parameters[key]
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
solr_parameters[key] ||= if value.respond_to? :deep_dup
|
|
23
|
+
value.deep_dup
|
|
24
|
+
elsif value.respond_to?(:dup) && value.duplicable?
|
|
25
|
+
value.dup
|
|
26
|
+
else
|
|
27
|
+
value
|
|
28
|
+
end
|
|
28
29
|
end
|
|
29
30
|
end
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
# Take the user-entered query, and put it in the solr params,
|
|
33
|
-
# including config's "search field" params for current search field.
|
|
34
|
-
# also include setting spellcheck.q.
|
|
35
|
-
def add_query_to_solr(solr_parameters)
|
|
32
|
+
def add_search_field_default_parameters(solr_parameters)
|
|
36
33
|
###
|
|
37
34
|
# legacy behavior of user param :qt is passed through, but over-ridden
|
|
38
35
|
# by actual search field config if present. We might want to remove
|
|
@@ -46,10 +43,21 @@ module Blacklight::Solr
|
|
|
46
43
|
###
|
|
47
44
|
# Merge in search field configured values, if present, over-writing general
|
|
48
45
|
# defaults
|
|
49
|
-
|
|
50
46
|
if search_field
|
|
51
47
|
solr_parameters[:qt] = search_field.qt if search_field.qt
|
|
52
|
-
|
|
48
|
+
|
|
49
|
+
solr_parameters.deep_merge!(search_field.solr_parameters) if search_field.solr_parameters
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
##
|
|
54
|
+
# Take the user-entered query, and put it in the solr params,
|
|
55
|
+
# including config's "search field" params for current search field.
|
|
56
|
+
# also include setting spellcheck.q.
|
|
57
|
+
def add_query_to_solr(solr_parameters)
|
|
58
|
+
unless processor_chain.include?(:add_search_field_default_parameters)
|
|
59
|
+
Deprecation.warn(Blacklight::Solr::SearchBuilderBehavior, 'Please include :add_search_field_default_parameters in your process chain')
|
|
60
|
+
add_search_field_default_parameters(solr_parameters)
|
|
53
61
|
end
|
|
54
62
|
|
|
55
63
|
##
|
|
@@ -64,7 +72,10 @@ module Blacklight::Solr
|
|
|
64
72
|
elsif search_field&.solr_local_parameters.present?
|
|
65
73
|
add_search_field_with_local_parameters(solr_parameters)
|
|
66
74
|
elsif search_state.query_param.is_a? Hash
|
|
67
|
-
|
|
75
|
+
if search_state.query_param == @additional_filters && !processor_chain.include?(:add_additional_filters)
|
|
76
|
+
Deprecation.warn(Blacklight::Solr::SearchBuilderBehavior, 'Expecting to see the processor step add_additional_filters; falling back to legacy query handling')
|
|
77
|
+
add_additional_filters(solr_parameters, search_state.query_param)
|
|
78
|
+
end
|
|
68
79
|
elsif search_state.query_param
|
|
69
80
|
solr_parameters.append_query search_state.query_param
|
|
70
81
|
end
|
|
@@ -322,6 +333,7 @@ module Blacklight::Solr
|
|
|
322
333
|
# around the term unless it's a bare-word. Escape internal quotes
|
|
323
334
|
# if needed.
|
|
324
335
|
def solr_param_quote(val, options = {})
|
|
336
|
+
val = val.to_s
|
|
325
337
|
options[:quote] ||= '"'
|
|
326
338
|
unless val =~ /^[a-zA-Z0-9$_\-\^]+$/
|
|
327
339
|
val = options[:quote] +
|
|
@@ -37,8 +37,10 @@ module Blacklight
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def bundle_install
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
inside destination_root do
|
|
41
|
+
Bundler.with_clean_env do
|
|
42
|
+
run "bundle install"
|
|
43
|
+
end
|
|
42
44
|
end
|
|
43
45
|
end
|
|
44
46
|
|
|
@@ -81,9 +83,7 @@ module Blacklight
|
|
|
81
83
|
blacklight_marc = String.new('blacklight-marc')
|
|
82
84
|
gem blacklight_marc, '>= 7.0.0.rc1', '< 8'
|
|
83
85
|
|
|
84
|
-
|
|
85
|
-
run "bundle install"
|
|
86
|
-
end
|
|
86
|
+
bundle_install
|
|
87
87
|
|
|
88
88
|
generate 'blacklight:marc:install'
|
|
89
89
|
end
|
|
@@ -24,8 +24,10 @@ module Blacklight
|
|
|
24
24
|
gem "devise"
|
|
25
25
|
gem "devise-guests", "~> 0.6"
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
inside destination_root do
|
|
28
|
+
Bundler.with_clean_env do
|
|
29
|
+
run "bundle install"
|
|
30
|
+
end
|
|
29
31
|
end
|
|
30
32
|
|
|
31
33
|
generate "devise:install"
|
|
@@ -3,12 +3,8 @@
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
5
|
RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
|
|
6
|
-
subject(:
|
|
7
|
-
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
let(:rendered) do
|
|
11
|
-
Capybara::Node::Simple.new(render)
|
|
6
|
+
subject(:rendered) do
|
|
7
|
+
render_inline_to_capybara_node(described_class.new(**params))
|
|
12
8
|
end
|
|
13
9
|
|
|
14
10
|
describe "for simple display" do
|
|
@@ -39,7 +35,7 @@ RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
|
|
|
39
35
|
|
|
40
36
|
it "has an accessible remove label" do
|
|
41
37
|
expect(rendered).to have_selector(".remove") do |s|
|
|
42
|
-
expect(s).to have_selector('.
|
|
38
|
+
expect(s).to have_selector('.visually-hidden', text: 'Remove constraint my label: my value')
|
|
43
39
|
end
|
|
44
40
|
end
|
|
45
41
|
end
|
|
@@ -3,12 +3,8 @@
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
5
|
RSpec.describe Blacklight::FacetFieldCheckboxesComponent, type: :component do
|
|
6
|
-
subject(:
|
|
7
|
-
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
let(:rendered) do
|
|
11
|
-
Capybara::Node::Simple.new(render)
|
|
6
|
+
subject(:rendered) do
|
|
7
|
+
render_inline_to_capybara_node(described_class.new(facet_field: facet_field))
|
|
12
8
|
end
|
|
13
9
|
|
|
14
10
|
let(:facet_field) do
|
|
@@ -40,7 +36,7 @@ RSpec.describe Blacklight::FacetFieldCheckboxesComponent, type: :component do
|
|
|
40
36
|
it 'renders a collapsible card' do
|
|
41
37
|
expect(rendered).to have_selector '.card'
|
|
42
38
|
expect(rendered).to have_button 'Field'
|
|
43
|
-
expect(rendered).to have_selector 'button[data-target="#facet-field"]'
|
|
39
|
+
expect(rendered).to have_selector 'button[data-bs-target="#facet-field"]'
|
|
44
40
|
expect(rendered).to have_selector '#facet-field.collapse.show'
|
|
45
41
|
end
|
|
46
42
|
|
|
@@ -3,12 +3,8 @@
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
5
|
RSpec.describe Blacklight::FacetFieldListComponent, type: :component do
|
|
6
|
-
subject(:
|
|
7
|
-
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
let(:rendered) do
|
|
11
|
-
Capybara::Node::Simple.new(render)
|
|
6
|
+
subject(:rendered) do
|
|
7
|
+
render_inline_to_capybara_node(described_class.new(facet_field: facet_field))
|
|
12
8
|
end
|
|
13
9
|
|
|
14
10
|
let(:facet_field) do
|
|
@@ -35,7 +31,7 @@ RSpec.describe Blacklight::FacetFieldListComponent, type: :component do
|
|
|
35
31
|
it 'renders a collapsible card' do
|
|
36
32
|
expect(rendered).to have_selector '.card'
|
|
37
33
|
expect(rendered).to have_button 'Field'
|
|
38
|
-
expect(rendered).to have_selector 'button[data-target="#facet-field"]'
|
|
34
|
+
expect(rendered).to have_selector 'button[data-bs-target="#facet-field"]'
|
|
39
35
|
expect(rendered).to have_selector '#facet-field.collapse.show'
|
|
40
36
|
end
|
|
41
37
|
|
|
@@ -3,12 +3,8 @@
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
5
|
RSpec.describe Blacklight::FacetItemComponent, type: :component do
|
|
6
|
-
subject(:
|
|
7
|
-
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
let(:rendered) do
|
|
11
|
-
Capybara::Node::Simple.new(render)
|
|
6
|
+
subject(:rendered) do
|
|
7
|
+
render_inline_to_capybara_node(described_class.new(facet_item: facet_item))
|
|
12
8
|
end
|
|
13
9
|
|
|
14
10
|
let(:facet_item) do
|
|
@@ -3,12 +3,8 @@
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
5
|
RSpec.describe Blacklight::FacetItemPivotComponent, type: :component do
|
|
6
|
-
subject(:
|
|
7
|
-
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
let(:rendered) do
|
|
11
|
-
Capybara::Node::Simple.new(render)
|
|
6
|
+
subject(:rendered) do
|
|
7
|
+
render_inline_to_capybara_node(described_class.new(facet_item: facet_item))
|
|
12
8
|
end
|
|
13
9
|
|
|
14
10
|
let(:search_state) do
|
|
@@ -31,7 +27,7 @@ RSpec.describe Blacklight::FacetItemPivotComponent, type: :component do
|
|
|
31
27
|
|
|
32
28
|
it 'links to the facet and shows the number of hits' do
|
|
33
29
|
expect(rendered).to have_selector 'li'
|
|
34
|
-
expect(rendered).to have_link 'x', href: '/catalog?f
|
|
30
|
+
expect(rendered).to have_link 'x', href: '/catalog?f%5Bz%5D=x'
|
|
35
31
|
expect(rendered).to have_selector '.facet-count', text: '10'
|
|
36
32
|
end
|
|
37
33
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
RSpec.describe Blacklight::HiddenSearchStateComponent, type: :component do
|
|
4
|
-
subject(:
|
|
4
|
+
subject(:rendered) { render_inline_to_capybara_node(instance) }
|
|
5
5
|
|
|
6
6
|
let(:params) do
|
|
7
7
|
{ q: "query",
|
|
@@ -11,14 +11,13 @@ RSpec.describe Blacklight::HiddenSearchStateComponent, type: :component do
|
|
|
11
11
|
f: { field1: %w[a b], field2: ["z"] } }
|
|
12
12
|
end
|
|
13
13
|
let(:instance) { described_class.new(params: params) }
|
|
14
|
-
let(:generated) { Capybara::Node::Simple.new("<div>#{render.to_html}</div>") }
|
|
15
14
|
|
|
16
15
|
it "converts a hash with nested complex data to Rails-style hidden form fields" do
|
|
17
|
-
expect(
|
|
18
|
-
expect(
|
|
19
|
-
expect(
|
|
20
|
-
expect(
|
|
21
|
-
expect(
|
|
22
|
-
expect(
|
|
16
|
+
expect(rendered).to have_selector("input[type='hidden'][name='q'][value='query']", visible: :hidden)
|
|
17
|
+
expect(rendered).to have_selector("input[type='hidden'][name='per_page'][value='10']", visible: :hidden)
|
|
18
|
+
expect(rendered).to have_selector("input[type='hidden'][name='extra_arbitrary_key'][value='arbitrary_value']", visible: :hidden)
|
|
19
|
+
expect(rendered).to have_selector("input[type='hidden'][name='f[field2][]'][value='z']", visible: :hidden)
|
|
20
|
+
expect(rendered).to have_selector("input[type='hidden'][name='f[field1][]'][value='a']", visible: :hidden)
|
|
21
|
+
expect(rendered).to have_selector("input[type='hidden'][name='f[field1][]'][value='b']", visible: :hidden)
|
|
23
22
|
end
|
|
24
23
|
end
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
5
|
RSpec.describe Blacklight::MetadataFieldComponent, type: :component do
|
|
6
|
-
subject(:
|
|
7
|
-
|
|
6
|
+
subject(:rendered) do
|
|
7
|
+
render_inline_to_capybara_node(described_class.new(field: field))
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
let(:view_context) { controller.view_context }
|
|
@@ -15,10 +15,6 @@ RSpec.describe Blacklight::MetadataFieldComponent, type: :component do
|
|
|
15
15
|
Blacklight::FieldPresenter.new(view_context, document, field_config)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
let(:rendered) do
|
|
19
|
-
Capybara::Node::Simple.new(render)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
18
|
it 'renders the field label' do
|
|
23
19
|
expect(rendered).to have_selector 'dt.blacklight-field', text: 'Field label'
|
|
24
20
|
end
|
|
@@ -28,8 +24,8 @@ RSpec.describe Blacklight::MetadataFieldComponent, type: :component do
|
|
|
28
24
|
end
|
|
29
25
|
|
|
30
26
|
context 'from a show view' do
|
|
31
|
-
subject(:
|
|
32
|
-
|
|
27
|
+
subject(:rendered) do
|
|
28
|
+
render_inline_to_capybara_node(described_class.new(field: field, show: true))
|
|
33
29
|
end
|
|
34
30
|
|
|
35
31
|
it 'renders the right field label' do
|
|
@@ -84,13 +84,13 @@ RSpec.describe "Facets" do
|
|
|
84
84
|
pending 'Capybara::NotSupportedByDriverError: Capybara::Driver::Base#evaluate_script'
|
|
85
85
|
visit root_path
|
|
86
86
|
page.find('h3.facet-field-heading button', text: 'Format').click
|
|
87
|
-
focused_element_data_target = page.evaluate_script("document.activeElement")['data-target']
|
|
87
|
+
focused_element_data_target = page.evaluate_script("document.activeElement")['data-bs-target']
|
|
88
88
|
expect(focused_element_data_target).to eq '#facet-format'
|
|
89
89
|
end
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
describe '"More" links' do
|
|
93
|
-
it 'has default more link with
|
|
93
|
+
it 'has default more link with visually-hidden text' do
|
|
94
94
|
visit root_path
|
|
95
95
|
within '#facet-language_ssim' do
|
|
96
96
|
expect(page).to have_css 'div.more_facets', text: 'more Language'
|
|
@@ -33,9 +33,8 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
|
|
|
33
33
|
|
|
34
34
|
describe "#default_document_index_view_type" do
|
|
35
35
|
it "uses the first view with default set to true" do
|
|
36
|
-
blacklight_config.view.a
|
|
37
|
-
blacklight_config.view.b
|
|
38
|
-
blacklight_config.view.b.default = true
|
|
36
|
+
blacklight_config.view.a({})
|
|
37
|
+
blacklight_config.view.b(default: true)
|
|
39
38
|
expect(helper.default_document_index_view_type).to eq :b
|
|
40
39
|
end
|
|
41
40
|
|
|
@@ -48,8 +47,8 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
|
|
|
48
47
|
describe "#document_index_views" do
|
|
49
48
|
before do
|
|
50
49
|
blacklight_config.view.abc = false
|
|
51
|
-
blacklight_config.view.def
|
|
52
|
-
blacklight_config.view.xyz
|
|
50
|
+
blacklight_config.view.def(if: false)
|
|
51
|
+
blacklight_config.view.xyz(unless: true)
|
|
53
52
|
end
|
|
54
53
|
|
|
55
54
|
it "filters views using :if/:unless configuration" do
|
|
@@ -62,8 +61,8 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
|
|
|
62
61
|
|
|
63
62
|
describe '#document_index_view_controls' do
|
|
64
63
|
before do
|
|
65
|
-
blacklight_config.view.a
|
|
66
|
-
blacklight_config.view.b
|
|
64
|
+
blacklight_config.view.a({})
|
|
65
|
+
blacklight_config.view.b(display_control: false)
|
|
67
66
|
end
|
|
68
67
|
|
|
69
68
|
it "filters index views to those set to display controls" do
|
|
@@ -195,9 +194,9 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
|
|
|
195
194
|
describe "#per_page_options_for_select" do
|
|
196
195
|
it "is the per-page values formatted as options_for_select" do
|
|
197
196
|
allow(helper).to receive_messages(blacklight_config: double(per_page: [11, 22, 33]))
|
|
198
|
-
expect(helper.per_page_options_for_select).to include ["11<span class=\"sr-only\"> per page</span>", 11]
|
|
199
|
-
expect(helper.per_page_options_for_select).to include ["22<span class=\"sr-only\"> per page</span>", 22]
|
|
200
|
-
expect(helper.per_page_options_for_select).to include ["33<span class=\"sr-only\"> per page</span>", 33]
|
|
197
|
+
expect(helper.per_page_options_for_select).to include ["11<span class=\"sr-only visually-hidden\"> per page</span>", 11]
|
|
198
|
+
expect(helper.per_page_options_for_select).to include ["22<span class=\"sr-only visually-hidden\"> per page</span>", 22]
|
|
199
|
+
expect(helper.per_page_options_for_select).to include ["33<span class=\"sr-only visually-hidden\"> per page</span>", 33]
|
|
201
200
|
end
|
|
202
201
|
end
|
|
203
202
|
|
|
@@ -127,7 +127,7 @@ RSpec.describe BlacklightHelper do
|
|
|
127
127
|
|
|
128
128
|
it "renders view type specific actions" do
|
|
129
129
|
allow(helper).to receive(:document_index_view_type).and_return(:custom)
|
|
130
|
-
config.view.custom
|
|
130
|
+
config.view.custom(document_actions: [])
|
|
131
131
|
expect(helper.render_index_doc_actions(document)).to be_blank
|
|
132
132
|
end
|
|
133
133
|
end
|
|
@@ -315,11 +315,29 @@ RSpec.describe BlacklightHelper do
|
|
|
315
315
|
end
|
|
316
316
|
|
|
317
317
|
it "ignores missing templates" do
|
|
318
|
-
blacklight_config.view.view_type
|
|
318
|
+
blacklight_config.view.view_type(partials: %w[index_header a b])
|
|
319
319
|
|
|
320
320
|
response = helper.render_document_index_with_view :view_type, [obj1, obj1]
|
|
321
321
|
expect(response).to have_selector "div#documents"
|
|
322
322
|
end
|
|
323
|
+
|
|
324
|
+
context 'with a template partial provided by the view config' do
|
|
325
|
+
before do
|
|
326
|
+
blacklight_config.view.gallery(template: '/my/partial')
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
def stub_template(hash)
|
|
330
|
+
view.view_paths.unshift(ActionView::FixtureResolver.new(hash))
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
it 'renders that template' do
|
|
334
|
+
stub_template 'my/_partial.html.erb' => 'some content'
|
|
335
|
+
|
|
336
|
+
response = helper.render_document_index_with_view :gallery, [obj1, obj1]
|
|
337
|
+
|
|
338
|
+
expect(response).to eq 'some content'
|
|
339
|
+
end
|
|
340
|
+
end
|
|
323
341
|
end
|
|
324
342
|
|
|
325
343
|
describe "#document_index_view_type" do
|
|
@@ -323,7 +323,7 @@ RSpec.describe CatalogHelper do
|
|
|
323
323
|
|
|
324
324
|
it "supports view-specific field configuration" do
|
|
325
325
|
allow(helper).to receive(:document_index_view_type).and_return(:some_view_type)
|
|
326
|
-
blacklight_config.view.some_view_type
|
|
326
|
+
blacklight_config.view.some_view_type(display_type_field: :other_type)
|
|
327
327
|
doc = { other_type: "document" }
|
|
328
328
|
expect(helper.render_document_class(doc)).to eq "blacklight-document"
|
|
329
329
|
end
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
RSpec.describe Blacklight::NestedOpenStructWithHashAccess do
|
|
4
|
+
subject { described_class.new(Blacklight::OpenStructWithHashAccess) }
|
|
5
|
+
|
|
6
|
+
describe '#key' do
|
|
7
|
+
context 'for an object provided by the initializer' do
|
|
8
|
+
subject { described_class.new(Blacklight::OpenStructWithHashAccess, a: { b: 1 }) }
|
|
9
|
+
|
|
10
|
+
it 'copies the key to the initialized value' do
|
|
11
|
+
expect(subject.a).to have_attributes key: :a, b: 1
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context 'for an object provided through assignment' do
|
|
16
|
+
it 'copies the key to the initialized value' do
|
|
17
|
+
subject.a!
|
|
18
|
+
|
|
19
|
+
expect(subject.a).to have_attributes key: :a
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
4
24
|
describe "#deep_dup" do
|
|
5
25
|
it "preserves the current class" do
|
|
6
26
|
expect(described_class.new(described_class).deep_dup).to be_a_kind_of described_class
|
|
@@ -23,4 +43,20 @@ RSpec.describe Blacklight::NestedOpenStructWithHashAccess do
|
|
|
23
43
|
expect(subject.blah).to have_attributes(key: :blah)
|
|
24
44
|
end
|
|
25
45
|
end
|
|
46
|
+
|
|
47
|
+
describe 'adding new parameters' do
|
|
48
|
+
subject { described_class.new(Blacklight::Configuration::Field) }
|
|
49
|
+
|
|
50
|
+
it 'strips the trailing !' do
|
|
51
|
+
subject.blah!
|
|
52
|
+
expect(subject.blah).to have_attributes(key: :blah)
|
|
53
|
+
expect(subject.keys).to eq [:blah]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'supports direct assignment' do
|
|
57
|
+
subject.blah = '123'
|
|
58
|
+
expect(subject.blah).to eq '123'
|
|
59
|
+
expect(subject.keys).to eq [:blah]
|
|
60
|
+
end
|
|
61
|
+
end
|
|
26
62
|
end
|