blacklight 7.2.0 → 7.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00a998f008fdf60cfe8e5623d8230c040e82f3a43daed779ad0aa276361b6050
4
- data.tar.gz: 2ec969ac9ad9f859206c684d3380945345c175362dae5e0fc785d7aa9d4a697e
3
+ metadata.gz: 958a6b0c5bfc8cfdd7fa31fe600d5bc77219f389b850453ade7a7a7aef6f8229
4
+ data.tar.gz: f6a49835143c4126550be6f937e7328e002e2c63f20dcb36adfa77150d6e60a0
5
5
  SHA512:
6
- metadata.gz: 67616cd584f0210b58b23de20c4c216e0f10ac9e547458b1eb98c34d6169372f42ca43b2131e804d9d0846c77218db81e36947223e5e96f8e470158a65bddfe9
7
- data.tar.gz: 37a72f8450db7388d77764ff430b12962febc213a0a3cb8f5e1a84bff134dc1edbf2f79f08bf4f68980c71d4b47ccea7396554f99dfb6ea50847ea729851396f
6
+ metadata.gz: fce42f491e0dd73fc1f0f71d051d0afc8c324ac07b4fbaf9f0d728e0bdb0bde657000ef044e48b28fad008015b29c4dc0e73c47671677ae37cf2e38a06137741
7
+ data.tar.gz: eb4d53904c2d1a309aef41fbcb166c18fabde6d0a8eaf8851df1032c783ea4b34af8115ffb91464f9aaed907078f42cacb644d12770f14fc301e9c008c3e4648
@@ -8,12 +8,12 @@ notifications:
8
8
 
9
9
  matrix:
10
10
  include:
11
+ - rvm: 2.6.5
12
+ env: "RAILS_VERSION=6.0.0 ENGINE_CART_RAILS_OPTIONS=\"--skip-webpack-install\""
11
13
  - rvm: 2.6.5
12
14
  env: "RAILS_VERSION=5.2.3"
13
15
  - rvm: 2.5.7
14
16
  env: "RAILS_VERSION=5.1.7"
15
- - rvm: 2.4.9
16
- env: "RAILS_VERSION=5.2.3"
17
17
  - rvm: 2.5.7
18
18
  env: "RAILS_VERSION=5.2.3 BLACKLIGHT_API_TEST=true ENGINE_CART_RAILS_OPTIONS=\"--api --skip-git --skip-bundle --skip-listen --skip-spring --skip-yarn --skip-keeps --skip-action-cable --skip-coffee --skip-test\""
19
19
  - rvm: 2.4.9
@@ -25,6 +25,9 @@ matrix:
25
25
  fast_finish: true
26
26
 
27
27
  before_install:
28
+ - docker pull solr:7
29
+ - docker run -d -p 8983:8983 -v $PWD/lib/generators/blacklight/templates/solr/conf:/myconfig solr:7 solr-create -c blacklight-core -d /myconfig
30
+ - docker ps -a
28
31
  - google-chrome-stable --headless --disable-gpu --no-sandbox --remote-debugging-port=9222 http://localhost &
29
32
 
30
33
  notifications:
@@ -34,7 +37,7 @@ notifications:
34
37
 
35
38
  global_env:
36
39
  - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
37
- - ENGINE_CART_RAILS_OPTIONS='--skip-git --skip-bundle --skip-listen --skip-spring --skip-yarn --skip-keeps --skip-action-cable --skip-coffee --skip-test'
40
+ - ENGINE_CART_RAILS_OPTIONS='--skip-git --skip-listen --skip-spring --skip-keeps --skip-action-cable --skip-coffee --skip-test'
38
41
  - CC_TEST_REPORTER_ID=5042c7358c96b0b926088a4cda3e132fffe7a66ce8047cdb1dc6f0b4b6676b79
39
42
 
40
43
  jdk: openjdk11
data/Gemfile CHANGED
@@ -34,7 +34,7 @@ else
34
34
  end
35
35
 
36
36
  case ENV['RAILS_VERSION']
37
- when /^5.[12]/
37
+ when /^5.[12]/, /^6.0/
38
38
  gem 'sass-rails', '~> 5.0'
39
39
  when /^4.2/
40
40
  gem 'responders', '~> 2.0'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 7.2.0
1
+ 7.3.0
@@ -18,8 +18,14 @@ module Blacklight
18
18
 
19
19
  # @param fields [Array<String>] a list of facet field names
20
20
  # @return [Array<Solr::Response::Facets::FacetField>]
21
- def facets_from_request(fields = facet_field_names)
22
- fields.map { |field| facet_by_field_name(field) }.compact
21
+ def facets_from_request(fields = facet_field_names, response = nil)
22
+ unless response
23
+ Deprecation.warn(self, 'Calling facets_from_request without passing the ' \
24
+ 'second argument (response) is deprecated and will be removed in Blacklight ' \
25
+ '8.0.0')
26
+ response = @response
27
+ end
28
+ fields.map { |field| facet_by_field_name(field, response) }.compact
23
29
  end
24
30
 
25
31
  def facet_group_names
@@ -27,13 +33,19 @@ module Blacklight
27
33
  end
28
34
 
29
35
  # Get a FacetField object from the @response
30
- def facet_by_field_name(field_or_field_name)
36
+ def facet_by_field_name(field_or_field_name, response = nil)
37
+ unless response
38
+ Deprecation.warn(self, 'Calling facet_by_field_name without passing the ' \
39
+ 'second argument (response) is deprecated and will be removed in Blacklight ' \
40
+ '8.0.0')
41
+ response = @response
42
+ end
31
43
  case field_or_field_name
32
44
  when String, Symbol
33
45
  facet_field = facet_configuration_for_field(field_or_field_name)
34
- @response.aggregations[facet_field.field]
46
+ response.aggregations[facet_field.field]
35
47
  when Blacklight::Configuration::FacetField
36
- @response.aggregations[field_or_field_name.field]
48
+ response.aggregations[field_or_field_name.field]
37
49
  else
38
50
  # is this really a useful case?
39
51
  field_or_field_name
@@ -260,7 +260,7 @@ module Blacklight::BlacklightHelperBehavior
260
260
  case action_name
261
261
  when 'show', 'citation'
262
262
  show_presenter(document)
263
- when 'index'
263
+ else
264
264
  index_presenter(document)
265
265
  end
266
266
  end
@@ -7,8 +7,14 @@ module Blacklight::FacetsHelperBehavior
7
7
  #
8
8
  # @param [Array<String>] fields
9
9
  # @return [Boolean]
10
- def has_facet_values? fields = facet_field_names
11
- facets_from_request(fields).any? { |display_facet| should_render_facet?(display_facet) }
10
+ def has_facet_values? fields = facet_field_names, response = nil
11
+ unless response
12
+ Deprecation.warn(self, 'Calling has_facet_values? without passing the ' \
13
+ 'second argument (response) is deprecated and will be removed in Blacklight ' \
14
+ '8.0.0')
15
+ response = @response
16
+ end
17
+ facets_from_request(fields, response).any? { |display_facet| should_render_facet?(display_facet) }
12
18
  end
13
19
 
14
20
  ##
@@ -17,9 +23,24 @@ module Blacklight::FacetsHelperBehavior
17
23
  #
18
24
  # @param [Array<String>] fields
19
25
  # @param [Hash] options
26
+ # @options options [Blacklight::Solr::Response] :response the Solr response object
20
27
  # @return String
21
- def render_facet_partials fields = facet_field_names, options = {}
22
- safe_join(facets_from_request(fields).map do |display_facet|
28
+ def render_facet_partials fields = nil, options = {}
29
+ unless fields
30
+ Deprecation.warn(self, 'Calling render_facet_partials without passing the ' \
31
+ 'first argument (fields) is deprecated and will be removed in Blacklight ' \
32
+ '8.0.0')
33
+ fields = facet_field_names
34
+ end
35
+
36
+ response = options.delete(:response)
37
+ unless response
38
+ Deprecation.warn(self, 'Calling render_facet_partials without passing the ' \
39
+ 'response keyword is deprecated and will be removed in Blacklight ' \
40
+ '8.0.0')
41
+ response = @response
42
+ end
43
+ safe_join(facets_from_request(fields, response).map do |display_facet|
23
44
  render_facet_limit(display_facet, options)
24
45
  end.compact, "\n")
25
46
  end
@@ -3,6 +3,12 @@
3
3
  module Blacklight
4
4
  # Renders a field and handles link_to_facet or helper_method if supplied
5
5
  class FieldPresenter
6
+ # @param controller [Object] the context in which to execute helper methods
7
+ # @param document [SolrDocument] the document
8
+ # @param field_config [Blacklight::Configuration::Field] the field's configuration
9
+ # @param options [Hash]
10
+ # @option options [Object] :value when this is provided, we don't want the pipeline to deal with helper methods.
11
+ # this happens when drawing the label for the document
6
12
  def initialize(controller, document, field_config, options)
7
13
  @controller = controller
8
14
  @document = document
@@ -13,15 +19,12 @@ module Blacklight
13
19
  attr_reader :controller, :document, :field_config, :options
14
20
 
15
21
  def render
16
- if options[:value]
17
- # This prevents helper methods from drawing.
18
- config = Configuration::NullField.new(field_config.to_h.except(:helper_method))
19
- values = Array.wrap(options[:value])
20
- else
21
- config = field_config
22
- values = retrieve_values
23
- end
24
- Rendering::Pipeline.render(values, config, document, controller, options)
22
+ return Rendering::Pipeline.render(retrieve_values, field_config, document, controller, options) unless options[:value]
23
+
24
+ values = Array.wrap(options[:value])
25
+ # Prevents helper methods from drawing.
26
+ steps = Rendering::Pipeline.operations - [Rendering::HelperMethod]
27
+ Rendering::Pipeline.new(values, field_config, document, controller, steps, options).render
25
28
  end
26
29
 
27
30
  private
@@ -17,7 +17,8 @@ module Blacklight
17
17
  end
18
18
 
19
19
  ##
20
- # Render the document index heading
20
+ # Render the document index heading. This is used when making a link to a
21
+ # document, where we don't want any HTML markup added from the pipeline.
21
22
  #
22
23
  # @param [Symbol, Proc, String] field_or_string_or_proc Render the given field or evaluate the proc or render the given string
23
24
  # @param [Hash] opts
@@ -18,7 +18,7 @@ module Blacklight
18
18
 
19
19
  # @return [Array<Blacklight::Solr::Response::Facets::FacetField>]
20
20
  def search_facets
21
- facets_from_request.select { |display_facet| display_facet.items.present? }
21
+ facets_from_request(facet_field_names, @response).select { |display_facet| display_facet.items.present? }
22
22
  end
23
23
 
24
24
  # extract the pagination info from the response object
@@ -2,27 +2,42 @@
2
2
 
3
3
  module Blacklight
4
4
  module Rendering
5
- # The field rendering pipeline
5
+ # The field rendering pipeline.
6
+ # This takes a field and its values and transforms them through a list of
7
+ # operations.
6
8
  class Pipeline
7
- class_attribute :operations
9
+ class_attribute :operations, instance_accessor: false
8
10
 
9
11
  # The ordered list of pipeline operations
10
12
  self.operations = [HelperMethod, LinkToFacet, Microdata, Join]
11
13
 
12
- def initialize(values, config, document, context, options)
14
+ # @param values [Array] the values for the field
15
+ # @param config [Blacklight::Configuration::Field] the field's configuration
16
+ # @param document [SolrDocument] the document
17
+ # @param context [Object] an execution context, used to execute the helper method in.
18
+ # @param operations [Array<Class>] the list of operations in this Pipeline
19
+ # @param options [Hash] options to pass to the processors. Typically only `:value` is used
20
+ def initialize(values, config, document, context, operations, options)
13
21
  @values = values
14
22
  @config = config
15
23
  @document = document
16
24
  @context = context
25
+ @operations = operations
17
26
  @options = options
18
27
  end
19
28
 
20
- attr_reader :values, :config, :document, :context, :options
29
+ attr_reader :values, :config, :document, :context, :operations, :options
21
30
 
31
+ # @param values [Array] the values for the field
32
+ # @param config [Blacklight::Configuration::Field] the field's configuration
33
+ # @param document [SolrDocument] the document
34
+ # @param context [Object] an execution context, used to execute the helper method in.
35
+ # @param options [Hash] options to pass to the processors. Typically only `:value` is used
22
36
  def self.render(values, config, document, context, options)
23
- new(values, config, document, context, options).render
37
+ new(values, config, document, context, operations, options).render
24
38
  end
25
39
 
40
+ # Perform the processing by the pipeline
26
41
  def render
27
42
  first, *rest = *stack
28
43
  first.new(values, config, document, context, options, rest).render
@@ -13,7 +13,7 @@
13
13
  <span class="filter-name"><%= label %></span>
14
14
  <% end %>
15
15
  <% unless value.blank? %>
16
- <%= content_tag :span, value, class: 'filter-value', title: value %>
16
+ <%= content_tag :span, value, class: 'filter-value', title: strip_tags(value) %>
17
17
  <% end %>
18
18
  </span>
19
19
  <% unless options[:remove].blank? %>
@@ -17,7 +17,7 @@ xml.entry do
17
17
  xml.author { xml.name(document.to_semantic_values[:author].first) }
18
18
  end
19
19
 
20
- with_format("html") do
20
+ with_format(:html) do
21
21
  xml.summary "type" => "html" do
22
22
  xml.text! render_document_partial(document,
23
23
  :index,
@@ -1,5 +1,5 @@
1
1
  <% # main container for facets/limits menu -%>
2
- <% if has_facet_values? facet_field_names(groupname) %>
2
+ <% if has_facet_values? facet_field_names(groupname), @response %>
3
3
  <div id="facets<%= "-#{groupname}" unless groupname.nil? %>" class="facets sidenav facets-toggleable-md">
4
4
 
5
5
  <div class="navbar">
@@ -13,7 +13,7 @@
13
13
  </div>
14
14
 
15
15
  <div id="facet-panel<%= "-#{groupname}" unless groupname.nil? %>-collapse" class="facets-collapse collapse">
16
- <%= render_facet_partials facet_field_names(groupname) %>
16
+ <%= render_facet_partials facet_field_names(groupname), response: @response %>
17
17
  </div>
18
18
  </div>
19
19
  <% end %>
@@ -12,8 +12,8 @@ xml.feed("xmlns" => "http://www.w3.org/2005/Atom",
12
12
  xml.author { xml.name application_name }
13
13
 
14
14
  xml.link "rel" => "self", "href" => url_for(search_state.to_h.merge(only_path: false))
15
- xml.link "rel" => "alternate", "href" => url_for(search_state.to_h.merge(only_path: false, format: "html")), "type" => "text/html"
16
- xml.id url_for(search_state.to_h.merge(:only_path => false, :format => "html", :content_format => nil, "type" => "text/html"))
15
+ xml.link "rel" => "alternate", "href" => url_for(search_state.to_h.merge(only_path: false, format: :html)), "type" => "text/html"
16
+ xml.id url_for(search_state.to_h.merge(only_path: false, format: :html, content_format: nil, "type" => "text/html"))
17
17
 
18
18
  # Navigational and context links
19
19
 
@@ -27,11 +27,10 @@
27
27
  <main id="main-container" class="<%= container_classes %>" role="main" aria-label="<%= t('blacklight.main.aria.main_container') %>">
28
28
  <%= content_for(:container_header) %>
29
29
 
30
- <%= render partial: 'shared/flash_msg', layout: 'shared/flash_messages' %>
30
+ <%= render partial: 'shared/flash_msg', layout: 'shared/flash_messages' %>
31
31
 
32
- <div class="row">
33
- <%= content_for?(:content) ? yield(:content) : yield %>
34
- </div>
32
+ <div class="row">
33
+ <%= content_for?(:content) ? yield(:content) : yield %>
35
34
  </div>
36
35
  </main>
37
36
 
@@ -25,15 +25,14 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.required_ruby_version = '~> 2.1'
27
27
 
28
- s.add_dependency "rails", "~> 5.1"
28
+ s.add_dependency "rails", '>= 5.1', '< 7'
29
29
  s.add_dependency "globalid"
30
30
  s.add_dependency "jbuilder", '~> 2.7'
31
31
  s.add_dependency "kaminari", ">= 0.15" # the pagination (page 1,2,3, etc..) of our search results
32
32
  s.add_dependency "deprecation"
33
33
 
34
34
  s.add_development_dependency "rsolr", ">= 1.0.6", "< 3" # Library for interacting with rSolr.
35
- s.add_development_dependency "solr_wrapper"
36
- s.add_development_dependency "rspec-rails", "~> 3.5"
35
+ s.add_development_dependency "rspec-rails", "~> 4.0.0.beta2"
37
36
  s.add_development_dependency "rspec-its"
38
37
  s.add_development_dependency "rspec-collection_matchers", ">= 1.0"
39
38
  s.add_development_dependency "capybara", '~> 3'
@@ -120,6 +120,15 @@ module Blacklight::Solr::Response::Facets
120
120
  @facet_pivot ||= facet_counts['facet_pivot'] || {}
121
121
  end
122
122
 
123
+ # Merge or add new facet count values to existing response
124
+ def merge_facet(name:, value:, hits: nil)
125
+ if dig('facet_counts', 'facet_fields', name)
126
+ self['facet_counts']['facet_fields'][name] << value << hits
127
+ else
128
+ self['facet_counts']['facet_fields'][name] = [value, hits]
129
+ end
130
+ end
131
+
123
132
  private
124
133
 
125
134
  ##
@@ -9,6 +9,19 @@ module Blacklight
9
9
  gem 'twitter-typeahead-rails', '0.11.1.pre.corejavascript'
10
10
  end
11
11
 
12
+ # Add sprockets javascript to Rails 6.
13
+ def create_sprockets_javascript
14
+ return if Rails.version < '6.0.0'
15
+
16
+ create_file 'app/assets/javascripts/application.js' do
17
+ <<~CONTENT
18
+ //= require jquery
19
+ //= require rails-ujs
20
+ //= require turbolinks
21
+ CONTENT
22
+ end
23
+ end
24
+
12
25
  def assets
13
26
  copy_file "blacklight.scss", "app/assets/stylesheets/blacklight.scss"
14
27
 
@@ -9,16 +9,17 @@ RSpec.describe Blacklight::FacetsHelperBehavior do
9
9
 
10
10
  describe "has_facet_values?" do
11
11
  let(:empty) { double(items: [], name: 'empty') }
12
+ let(:response) { instance_double(Blacklight::Solr::Response) }
12
13
 
13
14
  it "is true if there are any facets to display" do
14
15
  a = double(items: [1, 2], name: 'a')
15
16
  b = double(items: %w[b c], name: 'b')
16
17
  fields = [a, b, empty]
17
- expect(helper.has_facet_values?(fields)).to be true
18
+ expect(helper.has_facet_values?(fields, response)).to be true
18
19
  end
19
20
 
20
21
  it "is false if all facets are empty" do
21
- expect(helper.has_facet_values?([empty])).to be false
22
+ expect(helper.has_facet_values?([empty], response)).to be false
22
23
  end
23
24
 
24
25
  describe "different config" do
@@ -26,7 +27,7 @@ RSpec.describe Blacklight::FacetsHelperBehavior do
26
27
 
27
28
  it "is false if no facets are displayable" do
28
29
  a = double(items: [1, 2], name: 'basic_field')
29
- expect(helper.has_facet_values?([a])).to be false
30
+ expect(helper.has_facet_values?([a], response)).to be false
30
31
  end
31
32
  end
32
33
  end
@@ -106,15 +107,16 @@ RSpec.describe Blacklight::FacetsHelperBehavior do
106
107
  facet_config = double(query: nil, field: 'b', key: 'a')
107
108
  facet_field = double
108
109
  allow(helper).to receive(:facet_configuration_for_field).with('b').and_return(facet_config)
109
- @response = instance_double(Blacklight::Solr::Response, aggregations: { 'b' => facet_field })
110
+ response = instance_double(Blacklight::Solr::Response, aggregations: { 'b' => facet_field })
110
111
 
111
- expect(helper.facet_by_field_name('b')).to eq facet_field
112
+ expect(helper.facet_by_field_name('b', response)).to eq facet_field
112
113
  end
113
114
  end
114
115
 
115
116
  describe "render_facet_partials" do
116
117
  let(:a) { double(items: [1, 2]) }
117
118
  let(:b) { double(items: %w[b c]) }
119
+ let(:response) { instance_double(Blacklight::Solr::Response) }
118
120
 
119
121
  it "tries to render all provided facets" do
120
122
  empty = double(items: [])
@@ -122,14 +124,16 @@ RSpec.describe Blacklight::FacetsHelperBehavior do
122
124
  expect(helper).to receive(:render_facet_limit).with(a, {})
123
125
  expect(helper).to receive(:render_facet_limit).with(b, {})
124
126
  expect(helper).to receive(:render_facet_limit).with(empty, {})
125
- helper.render_facet_partials fields
127
+ helper.render_facet_partials fields, response: response
126
128
  end
127
129
 
128
130
  it "defaults to the configured facets" do
131
+ allow(Deprecation).to receive(:warn)
129
132
  expect(helper).to receive(:facet_field_names) { [a, b] }
130
133
  expect(helper).to receive(:render_facet_limit).with(a, {})
131
134
  expect(helper).to receive(:render_facet_limit).with(b, {})
132
135
  helper.render_facet_partials
136
+ expect(Deprecation).to have_received(:warn).twice
133
137
  end
134
138
  end
135
139
 
@@ -388,4 +388,46 @@ RSpec.describe BlacklightHelper do
388
388
  expect(helper.render_document_heading(document, tag: "h3")).to have_selector "h3", text: "Document Heading"
389
389
  end
390
390
  end
391
+
392
+ describe "#presenter" do
393
+ let(:document) { double }
394
+
395
+ before do
396
+ allow(helper).to receive(:index_presenter).and_return(:index_presenter)
397
+ allow(helper).to receive(:show_presenter).and_return(:show_presenter)
398
+ allow(helper).to receive(:action_name).and_return(action_name)
399
+ end
400
+
401
+ context "action is show" do
402
+ let(:action_name) { "show" }
403
+
404
+ it "uses the show presenter" do
405
+ expect(helper.presenter(document)).to eq(:show_presenter)
406
+ end
407
+ end
408
+
409
+ context "action is citation" do
410
+ let(:action_name) { "citation" }
411
+
412
+ it "uses the show presenter" do
413
+ expect(helper.presenter(document)).to eq(:show_presenter)
414
+ end
415
+ end
416
+
417
+ context "action is index" do
418
+ let(:action_name) { "index" }
419
+
420
+ it "uses the index presenter" do
421
+ expect(helper.presenter(document)).to eq(:index_presenter)
422
+ end
423
+ end
424
+
425
+ context "action is foo" do
426
+ let(:action_name) { "foo" }
427
+
428
+ it "uses the index presenter (by default)" do
429
+ expect(helper.presenter(document)).to eq(:index_presenter)
430
+ end
431
+ end
432
+ end
391
433
  end
@@ -104,6 +104,43 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
104
104
  end
105
105
  end
106
106
 
107
+ describe "#merge_facet" do
108
+ let(:response) { Blacklight::Solr::Response.new(facet_counts, {}, {}) }
109
+ let(:facet) { { name: "foo", value: "bar", hits: 1 } }
110
+
111
+ before do
112
+ response.merge_facet(facet)
113
+ end
114
+
115
+ context "facet does not already exist" do
116
+ it "adds the facet and appends the new field name and value" do
117
+ expect(response.facet_fields["foo"]).to eq(["bar", 1])
118
+ end
119
+ end
120
+
121
+ context "facet exists but field does not exist" do
122
+ let(:facet) { { name: "cat", value: "bar", hits: 1 } }
123
+
124
+ it "appends the new field name and value" do
125
+ expect(response.facet_fields["cat"]).to eq(["memory", 3, "card", 2, "bar", 1])
126
+ end
127
+ end
128
+
129
+ context "facet exists and field exists" do
130
+ let(:facet) { { name: "cat", value: "memory", hits: 4 } }
131
+
132
+ it "appends the new field name and value and aggregations uses new value" do
133
+ expect(response.aggregations["cat"].items.count).to eq(2)
134
+ expect(response.aggregations["cat"].items.first.value).to eq("memory")
135
+ expect(response.aggregations["cat"].items.first.hits).to eq(4)
136
+ end
137
+ end
138
+
139
+ def facet_counts
140
+ { "facet_counts" => { "facet_fields" => { "cat" => ["memory", 3, "card", 2] } } }
141
+ end
142
+ end
143
+
107
144
  context "facet.missing" do
108
145
  subject { Blacklight::Solr::Response.new(response, {}) }
109
146
 
@@ -4,11 +4,10 @@ RSpec.describe Blacklight::Rendering::Pipeline do
4
4
  include Capybara::RSpecMatchers
5
5
  let(:document) { instance_double(SolrDocument) }
6
6
  let(:context) { double }
7
- let(:options) { double }
8
- let(:presenter) { described_class.new(values, field_config, document, context, options) }
7
+ let(:options) { double('options') }
9
8
 
10
- describe "render" do
11
- subject { presenter.render }
9
+ describe '.render' do
10
+ subject { described_class.render(values, field_config, document, context, options) }
12
11
 
13
12
  let(:values) { %w[a b] }
14
13
  let(:field_config) { Blacklight::Configuration::NullField.new }
@@ -28,9 +27,17 @@ RSpec.describe Blacklight::Rendering::Pipeline do
28
27
 
29
28
  it { is_expected.to have_selector("span[@itemprop='some-prop']", text: "a") }
30
29
  end
30
+
31
+ it 'sets the operations on the instance as equal to the class variable' do
32
+ allow(described_class).to receive(:new)
33
+ .and_return(instance_double(described_class, render: true))
34
+ subject
35
+ expect(described_class).to have_received(:new)
36
+ .with(values, field_config, document, context, described_class.operations, options)
37
+ end
31
38
  end
32
39
 
33
- describe "#operations" do
40
+ describe '.operations' do
34
41
  subject { described_class.operations }
35
42
 
36
43
  it {
@@ -40,4 +47,17 @@ RSpec.describe Blacklight::Rendering::Pipeline do
40
47
  Blacklight::Rendering::Join]
41
48
  }
42
49
  end
50
+
51
+ describe '#operations' do
52
+ subject(:operations) { presenter.operations }
53
+
54
+ let(:presenter) { described_class.new(values, field_config, document, context, steps, options) }
55
+ let(:steps) { [Blacklight::Rendering::HelperMethod] }
56
+ let(:values) { ['a'] }
57
+ let(:field_config) { Blacklight::Configuration::NullField.new }
58
+
59
+ it 'sets the operations to the value passed to the initializer' do
60
+ expect(operations).to eq steps
61
+ end
62
+ end
43
63
  end
@@ -15,7 +15,7 @@ RSpec.describe "catalog/_show_tools.html.erb" do
15
15
  let(:document_actions) { blacklight_config.show.document_actions }
16
16
 
17
17
  it "renders a document action" do
18
- allow(view).to receive(:some_action_solr_document_path).with(document).and_return "x"
18
+ allow(view).to receive(:some_action_solr_document_path).with(document, any_args).and_return 'x'
19
19
  document_actions[:some_action] = Blacklight::Configuration::ToolConfig.new partial: 'document_action'
20
20
  render partial: 'catalog/show_tools'
21
21
  expect(rendered).to have_link "Some action", href: "x"
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'solr_wrapper'
4
3
  require 'engine_cart/rake_task'
5
4
 
6
5
  require 'rspec/core/rake_task'
@@ -13,14 +12,10 @@ RuboCop::RakeTask.new(:rubocop)
13
12
 
14
13
  desc "Run test suite"
15
14
  task ci: ['blacklight:generate'] do
16
- SolrWrapper.wrap do |solr|
17
- solr.with_collection do
18
- within_test_app do
19
- system "RAILS_ENV=test rake blacklight:index:seed"
20
- end
21
- Rake::Task['blacklight:coverage'].invoke
22
- end
15
+ within_test_app do
16
+ system "RAILS_ENV=test rake blacklight:index:seed"
23
17
  end
18
+ Rake::Task['blacklight:coverage'].invoke
24
19
  end
25
20
 
26
21
  namespace :blacklight do
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.2.0
4
+ version: 7.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Rochkind
@@ -17,22 +17,28 @@ authors:
17
17
  autorequire:
18
18
  bindir: exe
19
19
  cert_chain: []
20
- date: 2019-10-10 00:00:00.000000000 Z
20
+ date: 2019-10-30 00:00:00.000000000 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: rails
24
24
  requirement: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - "~>"
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: '5.1'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '7'
29
32
  type: :runtime
30
33
  prerelease: false
31
34
  version_requirements: !ruby/object:Gem::Requirement
32
35
  requirements:
33
- - - "~>"
36
+ - - ">="
34
37
  - !ruby/object:Gem::Version
35
38
  version: '5.1'
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '7'
36
42
  - !ruby/object:Gem::Dependency
37
43
  name: globalid
38
44
  requirement: !ruby/object:Gem::Requirement
@@ -109,34 +115,20 @@ dependencies:
109
115
  - - "<"
110
116
  - !ruby/object:Gem::Version
111
117
  version: '3'
112
- - !ruby/object:Gem::Dependency
113
- name: solr_wrapper
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
118
  - !ruby/object:Gem::Dependency
127
119
  name: rspec-rails
128
120
  requirement: !ruby/object:Gem::Requirement
129
121
  requirements:
130
122
  - - "~>"
131
123
  - !ruby/object:Gem::Version
132
- version: '3.5'
124
+ version: 4.0.0.beta2
133
125
  type: :development
134
126
  prerelease: false
135
127
  version_requirements: !ruby/object:Gem::Requirement
136
128
  requirements:
137
129
  - - "~>"
138
130
  - !ruby/object:Gem::Version
139
- version: '3.5'
131
+ version: 4.0.0.beta2
140
132
  - !ruby/object:Gem::Dependency
141
133
  name: rspec-its
142
134
  requirement: !ruby/object:Gem::Requirement
@@ -309,7 +301,6 @@ files:
309
301
  - ".rspec"
310
302
  - ".rubocop.yml"
311
303
  - ".rubocop_todo.yml"
312
- - ".solr_wrapper.yml"
313
304
  - ".travis.yml"
314
305
  - ".yardopts"
315
306
  - CONTRIBUTING.md
@@ -1,12 +0,0 @@
1
- # Place configuration for solr_wrapper here
2
- #
3
- # Specify the port to run solr on
4
- # port: 8983
5
- #
6
- # Specify a version of Solr to download
7
- # version: 7.3.1
8
- #
9
- # Create a collection when starting solr
10
- collection:
11
- dir: lib/generators/blacklight/templates/solr/conf/
12
- name: blacklight-core