blacklight 7.17.2 → 7.19.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|