blacklight 6.15.0 → 6.16.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
- SHA1:
3
- metadata.gz: 06d38d95ca2b94c85c6bfe14077f338c8fa276f8
4
- data.tar.gz: f35d49bcdf90238709a06a7f16dfa898dd38a761
2
+ SHA256:
3
+ metadata.gz: 63001a68b4ad9bebe9b5d93dfcd5efc8b8e519353c9850d5ebfcb7c42128bab4
4
+ data.tar.gz: ffc3ded7e79c7f50a8c5147ec3cf2df3d99cb6127b3febf154c456f10a6923a4
5
5
  SHA512:
6
- metadata.gz: 3562e9f56ffb61d1c5995f9312f138384b5f47d7d0ce150fcbcf348fe91e3cd3fc9584f021e3e21e53728da1bf97d10408f5b5f4346bc213c6a9b274607d959c
7
- data.tar.gz: 1584a23ffb76aabe4b21a6260be9fafe46dadeae7fd96834c79ad2c223b2714073d69b838acce7af65fc58955b585e80828efd3db702523d5635dcafecf6a93b
6
+ metadata.gz: 0d47c5102ac6643bf0e4d566a5640409b106f94acf3b51b4a8a75005809a7fbfa6e1b15eedb99d120129e18e0afbeaf106227747b0fee194da55687e23784177
7
+ data.tar.gz: 9710b7761291373f725c866d8187e862be11053b50d84745442fb6acb9d826c0946a62f8f7fbae7cae7a8e32101b5eaf205ed7e7d2d7335257f512f2734a7e52
data/VERSION CHANGED
@@ -1 +1 @@
1
- 6.15.0
1
+ 6.16.0
@@ -5,13 +5,13 @@
5
5
  //
6
6
  // These javascript files are compiled in via the Rails asset pipeline:
7
7
  //= require blacklight/core
8
- //= require blacklight/autofocus
8
+ //= require blacklight/autocomplete
9
9
  //= require blacklight/bookmark_toggle
10
- //= require blacklight/ajax_modal
11
- //= require blacklight/search_context
12
10
  //= require blacklight/collapsable
13
11
  //= require blacklight/facet_load
14
- //= require blacklight/autocomplete
12
+ //= require blacklight/ajax_modal
13
+ //= require blacklight/search_context
14
+ //= require blacklight/autofocus
15
15
  //
16
16
  //Bootstrap JS for providing collapsable tablet/mobile menu/alert boxes
17
17
  //= require bootstrap/transition
@@ -97,7 +97,6 @@
97
97
  data: form.serialize(),
98
98
  error: function() {
99
99
  alert("Error");
100
- update_state_for(checked);
101
100
  label.removeAttr("disabled");
102
101
  checkbox.removeAttr("disabled");
103
102
  },
@@ -112,7 +111,6 @@
112
111
  options.success.call(form, checked, xhr.responseJSON);
113
112
  } else {
114
113
  alert("Error");
115
- update_state_for(checked);
116
114
  label.removeAttr("disabled");
117
115
  checkbox.removeAttr("disabled");
118
116
  }
@@ -133,6 +133,10 @@ module Blacklight::Controller
133
133
  def discard_flash_if_xhr
134
134
  flash.discard if request.xhr?
135
135
  end
136
+ deprecation_deprecate discard_flash_if_xhr: "Discarding flash messages on XHR requests is deprecated.
137
+ If you wish to continue this behavior, add this method to your ApplicationController with an
138
+ after_action :discard_flash_if_xhr filter. To disable this behavior now and remove this warning, add
139
+ a skip_after_action :discard_flash_if_xhr to your ApplicationController."
136
140
 
137
141
  ##
138
142
  #
@@ -48,12 +48,20 @@ module Blacklight
48
48
  #
49
49
  # Allow an extention point where information in the document
50
50
  # may drive the value of the field
51
- # @param [String] field
51
+ # @param [Configuration::Field, String] field_or_name
52
52
  # @param [Hash] options
53
53
  # @option options [String] :value
54
- def field_value field, options = {}
55
- field_config = field_config(field)
56
- field_values(field_config, options)
54
+ def field_value field_or_name, options = {}
55
+ field = case field_or_name
56
+ when String
57
+ Deprecation.warn(self, "You provided a String value to IndexPresenter#field_value " \
58
+ "Provide a Blacklight::Configuration::Field instead. field_value() will not accept " \
59
+ "strings in Blacklight 7")
60
+ field_config(field_or_name)
61
+ else
62
+ field_or_name
63
+ end
64
+ field_values(field, options)
57
65
  end
58
66
 
59
67
  # @deprecated
@@ -74,10 +74,19 @@ module Blacklight
74
74
  #
75
75
  # Allow an extention point where information in the document
76
76
  # may drive the value of the field
77
- # @param [String] field
77
+ # @param [Configuration::Field, String] field_or_name
78
78
  # @param [Hash] options
79
79
  # @option options [String] :value
80
- def field_value field, options={}
80
+ def field_value field_or_name, options={}
81
+ field = case field_or_name
82
+ when String
83
+ Deprecation.warn(self, "You provided a String value to ShowPresenter#field_value " \
84
+ "Provide a Blacklight::Configuration::Field instead. field_value() will not accept " \
85
+ "strings in Blacklight 7")
86
+ field_config(field_or_name)
87
+ else
88
+ field_or_name
89
+ end
81
90
  field_values(field_config(field), options)
82
91
  end
83
92
 
@@ -1,5 +1,5 @@
1
1
  <div class="panel panel-default facet_limit blacklight-<%= facet_field.key.parameterize %> <%= 'facet_limit-active' if facet_field_in_params?(facet_field.key) %>">
2
- <div class="<%= "collapsed" if should_collapse_facet?(facet_field) %> collapse-toggle panel-heading" data-toggle="collapse" data-target="#<%= facet_field_id(facet_field) %>">
2
+ <div class="<%= "collapsed" if should_collapse_facet?(facet_field) %> collapse-toggle panel-heading" aria-expanded="false" data-toggle="collapse" data-target="#<%= facet_field_id(facet_field) %>">
3
3
  <h3 class="panel-title facet-field-heading">
4
4
  <%= link_to facet_field_label(facet_field.key), "#", :"data-turbolinks" => false, :"data-no-turbolink" => true %>
5
5
  </h3>
@@ -1,11 +1,11 @@
1
- <% doc_presenter = index_presenter(document) %>
1
+ <% doc_presenter = index_presenter(document) %>
2
2
  <%# default partial to display solr document fields in catalog index view -%>
3
3
  <dl class="document-metadata dl-horizontal dl-invert">
4
-
4
+
5
5
  <% index_fields(document).each do |field_name, field| -%>
6
6
  <% if should_render_index_field? document, field %>
7
7
  <dt class="blacklight-<%= field_name.parameterize %>"><%= render_index_field_label document, field: field_name %></dt>
8
- <dd class="blacklight-<%= field_name.parameterize %>"><%= doc_presenter.field_value field_name %></dd>
8
+ <dd class="blacklight-<%= field_name.parameterize %>"><%= doc_presenter.field_value field %></dd>
9
9
  <% end -%>
10
10
  <% end -%>
11
11
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  <span class="sr-only"><%= t('blacklight.search.per_page.title') %></span>
4
4
  <div id="per_page-dropdown" class="btn-group">
5
- <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
5
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
6
6
  <%= t(:'blacklight.search.per_page.button_label', :count => current_per_page) %> <span class="caret"></span>
7
7
  </button>
8
8
  <ul class="dropdown-menu" role="menu">
@@ -4,7 +4,7 @@
4
4
  <% document_show_fields(document).each do |field_name, field| -%>
5
5
  <% if should_render_show_field? document, field %>
6
6
  <dt class="blacklight-<%= field_name.parameterize %>"><%= render_document_show_field_label document, field: field_name %></dt>
7
- <dd class="blacklight-<%= field_name.parameterize %>"><%= doc_presenter.field_value field_name %></dd>
7
+ <dd class="blacklight-<%= field_name.parameterize %>"><%= doc_presenter.field_value field %></dd>
8
8
  <% end -%>
9
9
  <% end -%>
10
10
  </dl>
@@ -1,6 +1,6 @@
1
1
  <% if show_sort_and_per_page? and active_sort_fields.many? %>
2
2
  <div id="sort-dropdown" class="btn-group">
3
- <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
3
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
4
4
  <%= t('blacklight.search.sort.label', :field =>sort_field_label(current_sort_field.key)) %> <span class="caret"></span>
5
5
  </button>
6
6
 
@@ -16,103 +16,136 @@ describe Blacklight::IndexPresenter do
16
16
  SolrDocument.new(id: 1,
17
17
  'link_to_search_true' => 'x',
18
18
  'link_to_search_named' => 'x',
19
- 'qwer' => 'document qwer value',
20
- 'mnbv' => 'document mnbv value')
19
+ 'qwer' => 'document qwer value')
21
20
  end
22
21
 
23
22
  before do
24
23
  allow(request_context).to receive(:search_state).and_return(search_state)
25
24
  end
26
25
 
27
- describe "field_value" do
26
+ describe '#field_value' do
27
+ subject { presenter.field_value field }
28
+
29
+ let(:field) { config.index_fields[field_name] }
30
+ let(:field_name) { 'asdf' }
28
31
  let(:config) do
29
32
  Blacklight::Configuration.new.configure do |config|
30
33
  config.add_index_field 'qwer'
31
- config.add_index_field 'asdf', :helper_method => :render_asdf_index_field
32
- config.add_index_field 'link_to_search_true', :link_to_search => true
33
- config.add_index_field 'link_to_search_named', :link_to_search => :some_field
34
- config.add_index_field 'highlight', :highlight => true
35
- config.add_index_field 'solr_doc_accessor', :accessor => true
36
- config.add_index_field 'explicit_accessor', :accessor => :solr_doc_accessor
37
- config.add_index_field 'explicit_accessor_with_arg', :accessor => :solr_doc_accessor_with_arg
34
+ config.add_index_field 'asdf', helper_method: :render_asdf_index_field
35
+ config.add_index_field 'link_to_search_true', link_to_search: true
36
+ config.add_index_field 'link_to_search_named', link_to_search: :some_field
37
+ config.add_index_field 'highlight', highlight: true
38
+ config.add_index_field 'solr_doc_accessor', accessor: true
39
+ config.add_index_field 'explicit_accessor', accessor: :solr_doc_accessor
38
40
  config.add_index_field 'alias', field: 'qwer'
39
41
  config.add_index_field 'with_default', default: 'value'
40
42
  end
41
43
  end
42
- it "checks for an explicit value" do
43
- value = subject.field_value 'asdf', :value => 'asdf'
44
- expect(value).to eq 'asdf'
45
- end
46
44
 
47
- it "checks for a helper method to call" do
48
- allow(request_context).to receive(:render_asdf_index_field).and_return('custom asdf value')
49
- value = subject.field_value 'asdf'
50
- expect(value).to eq 'custom asdf value'
45
+ context 'when a name is provided' do
46
+ subject { presenter.field_value 'qwer' }
47
+
48
+ it 'raises a deprecation' do
49
+ expect(Deprecation).to receive(:warn)
50
+ expect(subject).to eq 'document qwer value'
51
+ end
51
52
  end
52
53
 
53
- it "checks for a link_to_search" do
54
- allow(request_context).to receive(:search_action_path).with('f' => { 'link_to_search_true' => ['x'] }).and_return('/foo')
55
- allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
56
- value = subject.field_value 'link_to_search_true'
57
- expect(value).to eq 'bar'
54
+ context 'when an explicit value is provided' do
55
+ subject { presenter.field_value field, value: 'asdf' }
56
+
57
+ it { is_expected.to eq 'asdf' }
58
58
  end
59
59
 
60
- it "checks for a link_to_search with a field name" do
61
- allow(request_context).to receive(:search_action_path).with('f' => { 'some_field' => ['x'] }).and_return('/foo')
62
- allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
63
- value = subject.field_value 'link_to_search_named'
64
- expect(value).to eq 'bar'
60
+ context 'when field has a helper method' do
61
+ before do
62
+ allow(request_context).to receive(:render_asdf_index_field).and_return('custom asdf value')
63
+ end
64
+
65
+ it { is_expected.to eq 'custom asdf value' }
65
66
  end
66
67
 
67
- it "gracefully handles when no highlight field is available" do
68
- allow(document).to receive(:has_highlight_field?).and_return(false)
69
- value = subject.field_value 'highlight'
70
- expect(value).to be_blank
68
+ context 'when field has link_to_search with true' do
69
+ before do
70
+ allow(request_context).to receive(:search_action_path).with('f' => { 'link_to_search_true' => ['x'] }).and_return('/foo')
71
+ allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
72
+ end
73
+
74
+ let(:field_name) { 'link_to_search_true' }
75
+
76
+ it { is_expected.to eq 'bar' }
71
77
  end
72
78
 
73
- it "checks for a highlighted field" do
74
- allow(document).to receive(:has_highlight_field?).and_return(true)
75
- allow(document).to receive(:highlight_field).with('highlight').and_return(['<em>highlight</em>'.html_safe])
76
- value = subject.field_value 'highlight'
77
- expect(value).to eq '<em>highlight</em>'
79
+ context 'when field has link_to_search with a field name' do
80
+ before do
81
+ allow(request_context).to receive(:search_action_path).with('f' => { 'some_field' => ['x'] }).and_return('/foo')
82
+ allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
83
+ end
84
+
85
+ let(:field_name) { 'link_to_search_named' }
86
+
87
+ it { is_expected.to eq 'bar' }
78
88
  end
79
89
 
80
- it "checks the document field value" do
81
- value = subject.field_value 'qwer'
82
- expect(value).to eq 'document qwer value'
90
+ context 'when no highlight field is available' do
91
+ before do
92
+ allow(document).to receive(:has_highlight_field?).and_return(false)
93
+ end
94
+
95
+ let(:field_name) { 'highlight' }
96
+
97
+ it { is_expected.to be_blank }
83
98
  end
84
99
 
85
- it "works with index fields that aren't explicitly defined" do
86
- value = subject.field_value 'mnbv'
87
- expect(value).to eq 'document mnbv value'
100
+ context 'when highlight field is available' do
101
+ before do
102
+ allow(document).to receive(:has_highlight_field?).and_return(true)
103
+ allow(document).to receive(:highlight_field).with('highlight').and_return(['<em>highlight</em>'.html_safe])
104
+ end
105
+
106
+ let(:field_name) { 'highlight' }
107
+
108
+ it { is_expected.to eq '<em>highlight</em>' }
88
109
  end
89
110
 
90
- it "calls an accessor on the solr document" do
91
- allow(document).to receive_messages(solr_doc_accessor: "123")
92
- value = subject.field_value 'solr_doc_accessor'
93
- expect(value).to eq "123"
111
+ context 'when no options are provided' do
112
+ let(:field_name) { 'qwer' }
113
+
114
+ it "checks the document field value" do
115
+ expect(subject).to eq 'document qwer value'
116
+ end
94
117
  end
95
118
 
96
- it "calls an explicit accessor on the solr document" do
97
- allow(document).to receive_messages(solr_doc_accessor: "123")
98
- value = subject.field_value 'explicit_accessor'
99
- expect(value).to eq "123"
119
+ context 'when accessor is true' do
120
+ before do
121
+ allow(document).to receive_messages(solr_doc_accessor: "123")
122
+ end
123
+
124
+ let(:field_name) { 'solr_doc_accessor' }
125
+
126
+ it { is_expected.to eq '123' }
100
127
  end
101
128
 
102
- it "calls an accessor on the solr document with the field as an argument" do
103
- allow(document).to receive(:solr_doc_accessor_with_arg).with('explicit_accessor_with_arg').and_return("123")
104
- value = subject.field_value 'explicit_accessor_with_arg'
105
- expect(value).to eq "123"
129
+ context 'when accessor is set to a value' do
130
+ let(:field_name) { 'explicit_accessor' }
131
+
132
+ it 'calls the accessor with the field_name as the argument' do
133
+ expect(document).to receive(:solr_doc_accessor).with('explicit_accessor').and_return("123")
134
+
135
+ expect(subject).to eq '123'
136
+ end
106
137
  end
107
138
 
108
- it "supports solr field configuration" do
109
- value = subject.field_value 'alias'
110
- expect(value).to eq "document qwer value"
139
+ context 'when the field is an alias' do
140
+ let(:field_name) { 'alias' }
141
+
142
+ it { is_expected.to eq 'document qwer value' }
111
143
  end
112
144
 
113
- it "supports default values in the field configuration" do
114
- value = subject.field_value 'with_default'
115
- expect(value).to eq "value"
145
+ context 'when the field has a default' do
146
+ let(:field_name) { 'with_default' }
147
+
148
+ it { is_expected.to eq 'value' }
116
149
  end
117
150
  end
118
151
 
@@ -170,4 +203,3 @@ describe Blacklight::IndexPresenter do
170
203
  end
171
204
  end
172
205
  end
173
-
@@ -16,8 +16,7 @@ describe Blacklight::ShowPresenter do
16
16
  SolrDocument.new(id: 1,
17
17
  'link_to_search_true' => 'x',
18
18
  'link_to_search_named' => 'x',
19
- 'qwer' => 'document qwer value',
20
- 'mnbv' => 'document mnbv value')
19
+ 'qwer' => 'document qwer value')
21
20
  end
22
21
 
23
22
  before do
@@ -97,118 +96,155 @@ describe Blacklight::ShowPresenter do
97
96
  end
98
97
  end
99
98
 
100
- describe "field_value" do
99
+ describe '#field_value' do
100
+ subject { presenter.field_value field }
101
+
102
+ let(:field) { config.show_fields[field_name] }
103
+ let(:field_name) { 'asdf' }
101
104
  let(:config) do
102
105
  Blacklight::Configuration.new.configure do |config|
103
106
  config.add_show_field 'qwer'
104
- config.add_show_field 'asdf', :helper_method => :render_asdf_document_show_field
105
- config.add_show_field 'link_to_search_true', :link_to_search => true
106
- config.add_show_field 'link_to_search_named', :link_to_search => :some_field
107
- config.add_show_field 'highlight', :highlight => true
108
- config.add_show_field 'solr_doc_accessor', :accessor => true
109
- config.add_show_field 'explicit_accessor', :accessor => :solr_doc_accessor
110
- config.add_show_field 'explicit_array_accessor', :accessor => [:solr_doc_accessor, :some_method]
111
- config.add_show_field 'explicit_accessor_with_arg', :accessor => :solr_doc_accessor_with_arg
107
+ config.add_show_field 'asdf', helper_method: :render_asdf_document_show_field
108
+ config.add_show_field 'link_to_search_true', link_to_search: true
109
+ config.add_show_field 'link_to_search_named', link_to_search: :some_field
110
+ config.add_show_field 'highlight', highlight: true
111
+ config.add_show_field 'solr_doc_accessor', accessor: true
112
+ config.add_show_field 'explicit_accessor', accessor: :solr_doc_accessor
113
+ config.add_show_field 'explicit_array_accessor', accessor: [:solr_doc_accessor, :some_method]
112
114
  end
113
115
  end
114
116
 
115
- it 'html-escapes values' do
116
- value = subject.field_value 'asdf', value: '<b>val1</b>'
117
- expect(value).to eq '&lt;b&gt;val1&lt;/b&gt;'
118
- end
117
+ context 'when a name is provided' do
118
+ subject { presenter.field_value 'qwer' }
119
119
 
120
- it 'joins multivalued valued fields' do
121
- value = subject.field_value 'asdf', value: ['<a', 'b']
122
- expect(value).to eq '&lt;a and b'
120
+ it 'raises a deprecation' do
121
+ expect(Deprecation).to receive(:warn)
122
+ expect(subject).to eq 'document qwer value'
123
+ end
123
124
  end
124
125
 
125
- it 'joins multivalued valued fields' do
126
- value = subject.field_value 'asdf', value: ['a', 'b', 'c']
127
- expect(value).to eq 'a, b, and c'
128
- end
126
+ context 'when an explicit html value is provided' do
127
+ subject { presenter.field_value field, value: '<b>val1</b>' }
129
128
 
130
- it "checks for an explicit value" do
131
- expect(request_context).to_not receive(:render_asdf_document_show_field)
132
- value = subject.field_value 'asdf', :value => 'val1'
133
- expect(value).to eq 'val1'
129
+ it { is_expected.to eq '&lt;b&gt;val1&lt;/b&gt;' }
134
130
  end
135
131
 
136
- it "checks for a helper method to call" do
137
- allow(request_context).to receive(:render_asdf_document_show_field).and_return('custom asdf value')
138
- value = subject.field_value 'asdf'
139
- expect(value).to eq 'custom asdf value'
132
+ context 'when an explicit array value with unsafe characters is provided' do
133
+ subject { presenter.field_value field, value: ['<a', 'b'] }
134
+
135
+ it { is_expected.to eq '&lt;a and b' }
140
136
  end
141
137
 
142
- it "checks for a link_to_search" do
143
- allow(request_context).to receive(:search_action_path).and_return('/foo')
144
- allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
145
- value = subject.field_value 'link_to_search_true'
146
- expect(value).to eq 'bar'
138
+ context 'when an explicit array value is provided' do
139
+ subject { presenter.field_value field, value: %w[a b c] }
140
+
141
+ it { is_expected.to eq 'a, b, and c' }
147
142
  end
148
143
 
149
- it "checks for a link_to_search with a field name" do
150
- allow(request_context).to receive(:search_action_path).and_return('/foo')
151
- allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
152
- value = subject.field_value 'link_to_search_named'
153
- expect(value).to eq 'bar'
144
+ context 'when an explicit value is provided' do
145
+ subject { presenter.field_value field, value: 'val1' }
146
+
147
+ it { is_expected.to eq 'val1' }
154
148
  end
155
149
 
156
- context "when no highlight field is available" do
150
+ context 'when field has a helper method' do
157
151
  before do
158
- allow(document).to receive(:has_highlight_field?).and_return(false)
152
+ allow(request_context).to receive(:render_asdf_document_show_field).and_return('custom asdf value')
159
153
  end
160
- let(:value) { subject.field_value 'highlight' }
161
- it "is blank" do
162
- expect(value).to be_blank
154
+
155
+ it { is_expected.to eq 'custom asdf value' }
156
+ end
157
+
158
+ context 'when field has link_to_search with true' do
159
+ before do
160
+ allow(request_context).to receive(:search_action_path).with('f' => { 'link_to_search_true' => ['x'] }).and_return('/foo')
161
+ allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
163
162
  end
163
+
164
+ let(:field_name) { 'link_to_search_true' }
165
+
166
+ it { is_expected.to eq 'bar' }
164
167
  end
165
168
 
166
- it "checks for a highlighted field" do
167
- allow(document).to receive(:has_highlight_field?).and_return(true)
168
- allow(document).to receive(:highlight_field).with('highlight').and_return(['<em>highlight</em>'.html_safe])
169
- value = subject.field_value 'highlight'
170
- expect(value).to eq '<em>highlight</em>'
169
+ context 'when field has link_to_search with a field name' do
170
+ before do
171
+ allow(request_context).to receive(:search_action_path).with('f' => { 'some_field' => ['x'] }).and_return('/foo')
172
+ allow(request_context).to receive(:link_to).with("x", '/foo').and_return('bar')
173
+ end
174
+
175
+ let(:field_name) { 'link_to_search_named' }
176
+
177
+ it { is_expected.to eq 'bar' }
171
178
  end
172
179
 
173
- it 'respects the HTML-safeness of multivalued highlight fields' do
174
- allow(document).to receive(:has_highlight_field?).and_return(true)
175
- allow(document).to receive(:highlight_field).with('highlight').and_return(['<em>highlight</em>'.html_safe, '<em>other highlight</em>'.html_safe])
176
- value = subject.field_value 'highlight'
177
- expect(value).to eq '<em>highlight</em> and <em>other highlight</em>'
180
+ context 'when no highlight field is available' do
181
+ before do
182
+ allow(document).to receive(:has_highlight_field?).and_return(false)
183
+ end
184
+
185
+ let(:field_name) { 'highlight' }
186
+
187
+ it { is_expected.to be_blank }
178
188
  end
179
189
 
180
- it "checks the document field value" do
181
- value = subject.field_value 'qwer'
182
- expect(value).to eq 'document qwer value'
190
+ context 'when highlight field is available' do
191
+ before do
192
+ allow(document).to receive(:has_highlight_field?).and_return(true)
193
+ allow(document).to receive(:highlight_field).with('highlight').and_return(['<em>highlight</em>'.html_safe])
194
+ end
195
+
196
+ let(:field_name) { 'highlight' }
197
+
198
+ it { is_expected.to eq '<em>highlight</em>' }
183
199
  end
184
200
 
185
- it "works with show fields that aren't explicitly defined" do
186
- value = subject.field_value 'mnbv'
187
- expect(value).to eq 'document mnbv value'
201
+ context 'when highlight returns multiple values' do
202
+ before do
203
+ allow(document).to receive(:has_highlight_field?).and_return(true)
204
+ allow(document).to receive(:highlight_field).with('highlight').and_return(['<em>highlight</em>'.html_safe, '<em>other highlight</em>'.html_safe])
205
+ end
206
+
207
+ let(:field_name) { 'highlight' }
208
+
209
+ it { is_expected.to eq '<em>highlight</em> and <em>other highlight</em>' }
188
210
  end
189
211
 
190
- it "calls an accessor on the solr document" do
191
- allow(document).to receive_messages(solr_doc_accessor: "123")
192
- value = subject.field_value 'solr_doc_accessor'
193
- expect(value).to eq "123"
212
+ context 'when no options are provided' do
213
+ let(:field_name) { 'qwer' }
214
+
215
+ it "checks the document field value" do
216
+ expect(subject).to eq 'document qwer value'
217
+ end
194
218
  end
195
219
 
196
- it "calls an explicit accessor on the solr document" do
197
- allow(document).to receive_messages(solr_doc_accessor: "123")
198
- value = subject.field_value 'explicit_accessor'
199
- expect(value).to eq "123"
220
+ context 'when accessor is true' do
221
+ before do
222
+ allow(document).to receive_messages(solr_doc_accessor: "123")
223
+ end
224
+
225
+ let(:field_name) { 'solr_doc_accessor' }
226
+
227
+ it { is_expected.to eq '123' }
200
228
  end
201
229
 
202
- it "calls an explicit array-style accessor on the solr document" do
203
- allow(document).to receive_message_chain(:solr_doc_accessor, some_method: "123")
204
- value = subject.field_value 'explicit_array_accessor'
205
- expect(value).to eq "123"
230
+ context 'when accessor is set to a value' do
231
+ let(:field_name) { 'explicit_accessor' }
232
+
233
+ it 'calls the accessor with the field_name as the argument' do
234
+ expect(document).to receive(:solr_doc_accessor).with('explicit_accessor').and_return("123")
235
+
236
+ expect(subject).to eq '123'
237
+ end
206
238
  end
207
239
 
208
- it "calls an accessor on the solr document with the field as an argument" do
209
- allow(document).to receive(:solr_doc_accessor_with_arg).with('explicit_accessor_with_arg').and_return("123")
210
- value = subject.field_value 'explicit_accessor_with_arg'
211
- expect(value).to eq "123"
240
+ context 'when accessor is set to an array' do
241
+ let(:field_name) { 'explicit_array_accessor' }
242
+
243
+ it 'calls the accessors on the return of the preceeding' do
244
+ allow(document).to receive_message_chain(:solr_doc_accessor, some_method: "123")
245
+
246
+ expect(subject).to eq '123'
247
+ end
212
248
  end
213
249
  end
214
250
 
@@ -310,4 +346,3 @@ describe Blacklight::ShowPresenter do
310
346
  end
311
347
  end
312
348
  end
313
-
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: 6.15.0
4
+ version: 6.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Rochkind
@@ -17,7 +17,7 @@ authors:
17
17
  autorequire:
18
18
  bindir: exe
19
19
  cert_chain: []
20
- date: 2018-04-26 00:00:00.000000000 Z
20
+ date: 2018-10-17 00:00:00.000000000 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: rails
@@ -765,7 +765,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
765
765
  version: '0'
766
766
  requirements: []
767
767
  rubyforge_project:
768
- rubygems_version: 2.6.11
768
+ rubygems_version: 2.7.6
769
769
  signing_key:
770
770
  specification_version: 4
771
771
  summary: Blacklight provides a discovery interface for any Solr (http://lucene.apache.org/solr)