blacklight 4.7.0 → 4.8.0
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/.gitignore +1 -0
- data/.travis.yml +13 -12
- data/Gemfile +37 -2
- data/VERSION +1 -1
- data/app/assets/stylesheets/blacklight/{_blacklight_base.css.scss → _blacklight_base.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_bookmark.css.scss → _bookmark.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_catalog.css.scss → _catalog.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_dropdown.css.scss → _dropdown.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_facets.css.scss → _facets.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_footer.css.scss → _footer.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_group.css.scss → _group.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_header.css.scss → _header.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_layout.css.scss → _layout.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_mixins.css.scss → _mixins.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_modal.css.scss → _modal.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_print.css.scss → _print.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_responsive.css.scss → _responsive.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{_search_history.css.scss → _search_history.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{blacklight.css.scss → blacklight.scss} +0 -0
- data/app/assets/stylesheets/blacklight/{blacklight_defaults.css.scss → blacklight_defaults.scss} +0 -0
- data/app/assets/stylesheets/blacklight/responsive_partials/{_catalog.css.scss → _catalog.scss} +0 -0
- data/app/assets/stylesheets/blacklight/responsive_partials/{_facets.css.scss → _facets.scss} +0 -0
- data/app/assets/stylesheets/blacklight/responsive_partials/{_header.css.scss → _header.scss} +0 -0
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +2 -2
- data/app/helpers/blacklight/catalog_helper_behavior.rb +1 -1
- data/app/helpers/blacklight/facets_helper_behavior.rb +1 -0
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +2 -2
- data/blacklight.gemspec +5 -6
- data/lib/blacklight/catalog.rb +1 -1
- data/lib/blacklight/catalog/search_context.rb +6 -6
- data/lib/blacklight/solr/document.rb +29 -21
- data/lib/blacklight/solr_helper.rb +6 -4
- data/lib/generators/blacklight/templates/{blacklight.css.scss → blacklight.scss} +0 -0
- data/spec/controllers/application_controller_spec.rb +3 -3
- data/spec/controllers/bookmarks_controller_spec.rb +11 -11
- data/spec/controllers/catalog_controller_spec.rb +117 -117
- data/spec/controllers/search_history_controller_spec.rb +8 -8
- data/spec/features/alternate_controller_spec.rb +7 -5
- data/spec/features/record_view_spec.rb +4 -1
- data/spec/features/search_filters_spec.rb +37 -24
- data/spec/features/search_pagination_spec.rb +11 -7
- data/spec/features/search_results_spec.rb +22 -14
- data/spec/features/search_sort_spec.rb +3 -1
- data/spec/features/search_spec.rb +6 -0
- data/spec/helpers/blacklight_helper_spec.rb +175 -166
- data/spec/helpers/catalog_helper_spec.rb +59 -59
- data/spec/helpers/facets_helper_spec.rb +118 -118
- data/spec/helpers/hash_as_hidden_fields_spec.rb +14 -8
- data/spec/helpers/html_head_helper_spec.rb +51 -45
- data/spec/helpers/render_constraints_helper_spec.rb +5 -6
- data/spec/helpers/search_history_constraints_helper_spec.rb +21 -21
- data/spec/lib/blacklight/solr_response/group_response_spec.rb +2 -2
- data/spec/lib/blacklight_configurable_spec.rb +16 -16
- data/spec/lib/blacklight_configuration_spec.rb +132 -132
- data/spec/lib/blacklight_email_spec.rb +4 -4
- data/spec/lib/blacklight_sms_spec.rb +4 -4
- data/spec/lib/blacklight_solr_document_dublin_core_spec.rb +6 -6
- data/spec/lib/blacklight_solr_document_marc_spec.rb +3 -3
- data/spec/lib/blacklight_solr_document_more_like_this_spec.rb +4 -4
- data/spec/lib/blacklight_solr_document_spec.rb +36 -36
- data/spec/lib/blacklight_solr_response_spec.rb +42 -42
- data/spec/lib/blacklight_spec.rb +5 -5
- data/spec/lib/blacklight_user_spec.rb +5 -5
- data/spec/lib/facet_paginator_spec.rb +12 -12
- data/spec/lib/marc_export_spec.rb +746 -746
- data/spec/lib/search_fields_spec.rb +13 -13
- data/spec/lib/solr_helper_spec.rb +255 -250
- data/spec/lib/tasks/blacklight_task_spec.rb +1 -1
- data/spec/lib/tasks/solr_marc_task_spec.rb +6 -6
- data/spec/lib/utils_spec.rb +11 -11
- data/spec/models/bookmark_spec.rb +7 -6
- data/spec/models/record_mailer_spec.rb +16 -16
- data/spec/models/search_spec.rb +8 -8
- data/spec/models/solr_document_spec.rb +7 -7
- data/spec/requests/alternate_controller_spec.rb +3 -3
- data/spec/routing/catalog_routing_spec.rb +10 -15
- data/spec/spec_helper.rb +6 -4
- data/spec/support/assert_difference.rb +2 -2
- data/spec/support/features.rb +11 -0
- data/spec/support/features/session_helpers.rb +3 -3
- data/spec/support/include_text.rb +2 -2
- data/spec/test_app_templates/Gemfile.extra +2 -15
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +17 -6
- data/spec/views/catalog/_constraints.html.erb_spec.rb +7 -7
- data/spec/views/catalog/_constraints_element.html.erb_spec.rb +12 -12
- data/spec/views/catalog/_document.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_facets.html.erb_spec.rb +13 -13
- data/spec/views/catalog/_index_default.erb_spec.rb +20 -20
- data/spec/views/catalog/_show_default.erb_spec.rb +20 -20
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +6 -6
- data/spec/views/catalog/_thumbnail_default.erb_spec.rb +3 -3
- data/spec/views/catalog/index.atom.builder_spec.rb +28 -28
- data/spec/views/catalog/index.html.erb_spec.rb +6 -6
- metadata +35 -57
- data/gemfiles/rails3.gemfile +0 -25
- data/gemfiles/rails4.gemfile +0 -24
|
@@ -8,17 +8,17 @@ describe "Blacklight::Solr::Document::Email" do
|
|
|
8
8
|
it "should only return values that are available in the field semantics" do
|
|
9
9
|
doc = SolrDocument.new({:id=>"1234", :title_display=>"My Title"})
|
|
10
10
|
email_body = doc.to_email_text
|
|
11
|
-
email_body.
|
|
12
|
-
email_body.
|
|
11
|
+
expect(email_body).to match(/Title: My Title/)
|
|
12
|
+
expect(email_body).not_to match(/Author/)
|
|
13
13
|
end
|
|
14
14
|
it "should handle multi-values fields correctly" do
|
|
15
15
|
doc = SolrDocument.new({:id=>"1234", :title_display=>["My Title", "My Alt. Title"]})
|
|
16
16
|
email_body = doc.to_email_text
|
|
17
|
-
email_body.
|
|
17
|
+
expect(email_body).to match(/Title: My Title My Alt. Title/)
|
|
18
18
|
end
|
|
19
19
|
it "should return nil if there are no valid field semantics to build the email body from" do
|
|
20
20
|
doc = SolrDocument.new({:id=>"1234"})
|
|
21
|
-
doc.to_email_text.
|
|
21
|
+
expect(doc.to_email_text).to be_nil
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
|
|
@@ -8,17 +8,17 @@ describe "Blacklight::Solr::Document::Email" do
|
|
|
8
8
|
it "should only return values that are available in the field semantics" do
|
|
9
9
|
doc = SolrDocument.new({:id=>"1234", :title_display=>"My Title", :author_display=>"Joe Schmoe"})
|
|
10
10
|
sms_text = doc.to_sms_text
|
|
11
|
-
sms_text.
|
|
11
|
+
expect(sms_text).to match(/My Title by Joe Schmoe/)
|
|
12
12
|
end
|
|
13
13
|
it "should handle multi-values fields correctly and only take the first" do
|
|
14
14
|
doc = SolrDocument.new({:id=>"1234", :title_display=>["My Title", "My Alt. Title"]})
|
|
15
15
|
sms_text = doc.to_sms_text
|
|
16
|
-
sms_text.
|
|
17
|
-
sms_text.
|
|
16
|
+
expect(sms_text).to match(/My Title/)
|
|
17
|
+
expect(sms_text).not_to match(/My Alt\. Title/)
|
|
18
18
|
end
|
|
19
19
|
it "should return nil if there are no valid field semantics to build the email body from" do
|
|
20
20
|
doc = SolrDocument.new({:id=>"1234"})
|
|
21
|
-
doc.to_sms_text.
|
|
21
|
+
expect(doc.to_sms_text).to be_nil
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
|
|
@@ -16,27 +16,27 @@ describe "Blacklight::Solr::Document::DublinCore" do
|
|
|
16
16
|
|
|
17
17
|
it "should register all its export formats" do
|
|
18
18
|
document = @mock_class.new
|
|
19
|
-
Set.new(document.export_formats.keys).
|
|
19
|
+
expect(Set.new(document.export_formats.keys)).to be_superset(Set.new([:oai_dc_xml,:dc_xml, :xml]))
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
it "should export oai_dc with the proper namespaces" do
|
|
23
23
|
document = @mock_class.new
|
|
24
|
-
document.export_as_oai_dc_xml.
|
|
24
|
+
expect(document.export_as_oai_dc_xml).to match 'xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"'
|
|
25
25
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
it "should include 'dc:'-prefixed semantic fields" do
|
|
29
29
|
data = {'id'=>'123456','title_display'=>['654321'] }
|
|
30
30
|
document = @mock_class.new(data)
|
|
31
|
-
document.export_as_oai_dc_xml.
|
|
32
|
-
document.export_as_oai_dc_xml.
|
|
31
|
+
expect(document.export_as_oai_dc_xml).to match 'xmlns:dc="http://purl.org/dc/elements/1.1/"'
|
|
32
|
+
expect(document.export_as_oai_dc_xml).to match '<dc:title>654321</dc:title>'
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
it "should work with multi-value fields" do
|
|
36
36
|
data = {'id'=>'123456','title_display'=>['654321', '987'] }
|
|
37
37
|
document = @mock_class.new(data)
|
|
38
|
-
document.export_as_oai_dc_xml.
|
|
39
|
-
document.export_as_oai_dc_xml.
|
|
38
|
+
expect(document.export_as_oai_dc_xml).to match '<dc:title>654321</dc:title>'
|
|
39
|
+
expect(document.export_as_oai_dc_xml).to match '<dc:title>987</dc:title></oai_dc:dc>'
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
|
|
@@ -17,7 +17,7 @@ describe "Blacklight::Solr::Document::Marc" do
|
|
|
17
17
|
end
|
|
18
18
|
it "should read and parse a marc binary file" do
|
|
19
19
|
document = @mock_class.new(:marc => sample_marc_binary )
|
|
20
|
-
document.to_marc.
|
|
20
|
+
expect(document.to_marc).to eq(marc_from_string(:binary => sample_marc_binary ))
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
@@ -27,13 +27,13 @@ describe "Blacklight::Solr::Document::Marc" do
|
|
|
27
27
|
end
|
|
28
28
|
it "should read and parse a marc xml file" do
|
|
29
29
|
document = @mock_class.new(:marc => sample_marc_xml)
|
|
30
|
-
document.to_marc.
|
|
30
|
+
expect(document.to_marc).to eq(marc_from_string(:xml => sample_marc_xml))
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
it "should register all its export formats" do
|
|
35
35
|
document = @mock_class.new
|
|
36
|
-
Set.new(document.export_formats.keys).
|
|
36
|
+
expect(Set.new(document.export_formats.keys)).to be_superset(Set.new([:marc, :marcxml, :openurl_ctx_kev, :refworks_marc_txt, :endnote, :xml]))
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
|
|
@@ -10,9 +10,9 @@ describe Blacklight::Solr::Document::MoreLikeThis do
|
|
|
10
10
|
it "should pluck the MoreLikeThis results from the Solr Response" do
|
|
11
11
|
mock_solr_response = double(:more_like => [{'id' => 'abc'}])
|
|
12
12
|
result = @mock_class.new({:id => '123'}, mock_solr_response).more_like_this
|
|
13
|
-
result.
|
|
14
|
-
result.first.
|
|
15
|
-
result.first.id.
|
|
16
|
-
result.first.solr_response.
|
|
13
|
+
expect(result.size).to eq(1)
|
|
14
|
+
expect(result.first).to be_a_kind_of(SolrDocument)
|
|
15
|
+
expect(result.first.id).to eq('abc')
|
|
16
|
+
expect(result.first.solr_response).to eq(mock_solr_response)
|
|
17
17
|
end
|
|
18
18
|
end
|
|
@@ -23,13 +23,13 @@ describe "Blacklight::Solr::Document" do
|
|
|
23
23
|
it 'should create a doc with hashy methods' do
|
|
24
24
|
doc = SolrDocument.new({'id'=>'SP2514N','inStock'=>true,'manu'=>'Samsung Electronics Co. Ltd.','name'=>'Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133','popularity'=>6,'price'=>92.0,'sku'=>'SP2514N','timestamp'=>'2009-03-20T14:42:49.795Z','cat'=>['electronics','hard drive'],'spell'=>['Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133'],'features'=>['7200RPM, 8MB cache, IDE Ultra ATA-133','NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor']})
|
|
25
25
|
|
|
26
|
-
doc.has?(:cat, /^elec/).
|
|
27
|
-
doc.has?(:cat, 'elec').
|
|
28
|
-
doc.has?(:cat, 'electronics').
|
|
26
|
+
expect(doc.has?(:cat, /^elec/)).to eq(true)
|
|
27
|
+
expect(doc.has?(:cat, 'elec')).not_to eq(true)
|
|
28
|
+
expect(doc.has?(:cat, 'electronics')).to eq(true)
|
|
29
29
|
|
|
30
|
-
doc.get(:cat).
|
|
31
|
-
doc.get(:xyz).
|
|
32
|
-
doc.get(:xyz, :default=>'def').
|
|
30
|
+
expect(doc.get(:cat)).to eq('electronics, hard drive')
|
|
31
|
+
expect(doc.get(:xyz)).to eq(nil)
|
|
32
|
+
expect(doc.get(:xyz, :default=>'def')).to eq('def')
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
@@ -44,7 +44,7 @@ describe "Blacklight::Solr::Document" do
|
|
|
44
44
|
end
|
|
45
45
|
it "should use a configuration-defined document unique key" do
|
|
46
46
|
@document = MockDocument.new :id => 'asdf', :my_unique_key => '1234'
|
|
47
|
-
@document.id.
|
|
47
|
+
expect(@document.id).to eq('1234')
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
|
|
@@ -57,54 +57,54 @@ describe "Blacklight::Solr::Document" do
|
|
|
57
57
|
it "should let you register an extension" do
|
|
58
58
|
MockDocument.use_extension(MockExtension) { |doc| true }
|
|
59
59
|
|
|
60
|
-
MockDocument.registered_extensions.find {|a| a[:module_obj] == MockExtension}.
|
|
60
|
+
expect(MockDocument.registered_extensions.find {|a| a[:module_obj] == MockExtension}).not_to be_nil
|
|
61
61
|
end
|
|
62
62
|
it "should let you register an extension with a nil condition proc" do
|
|
63
63
|
MockDocument.use_extension(MockExtension) { |doc| true }
|
|
64
|
-
MockDocument.registered_extensions.find {|a| a[:module_obj] == MockExtension}.
|
|
64
|
+
expect(MockDocument.registered_extensions.find {|a| a[:module_obj] == MockExtension}).not_to be_nil
|
|
65
65
|
end
|
|
66
66
|
it "should apply an extension whose condition is met" do
|
|
67
67
|
MockDocument.use_extension(MockExtension) {|doc| true}
|
|
68
68
|
doc = MockDocument.new()
|
|
69
69
|
|
|
70
|
-
doc.methods.find {|name| name.to_s == "my_extension_method"}.
|
|
71
|
-
doc.my_extension_method.to_s.
|
|
70
|
+
expect(doc.methods.find {|name| name.to_s == "my_extension_method"}).not_to be_nil
|
|
71
|
+
expect(doc.my_extension_method.to_s).to eq("my_extension_results")
|
|
72
72
|
end
|
|
73
73
|
it "should apply an extension based on a Solr field" do
|
|
74
74
|
MockDocument.use_extension(MockExtension) {|doc| doc.key?(:required_key)}
|
|
75
75
|
|
|
76
76
|
with_extension = MockDocument.new(:required_key => "value")
|
|
77
|
-
with_extension.my_extension_method.to_s.
|
|
77
|
+
expect(with_extension.my_extension_method.to_s).to eq("my_extension_results")
|
|
78
78
|
|
|
79
79
|
without_extension = MockDocument.new(:other_key => "value")
|
|
80
|
-
without_extension.methods.find {|name| name.to_s == "my_extension_method"}.
|
|
80
|
+
expect(without_extension.methods.find {|name| name.to_s == "my_extension_method"}).to be_nil
|
|
81
81
|
|
|
82
82
|
end
|
|
83
83
|
it "should not apply an extension whose condition is not met" do
|
|
84
84
|
MockDocument.use_extension(MockExtension) {|doc| false}
|
|
85
85
|
doc = MockDocument.new()
|
|
86
86
|
|
|
87
|
-
doc.methods.find {|name| name.to_s == "my_extension_method"}.
|
|
87
|
+
expect(doc.methods.find {|name| name.to_s == "my_extension_method"}).to be_nil
|
|
88
88
|
end
|
|
89
89
|
it "should treat a nil condition as always applyable" do
|
|
90
90
|
MockDocument.use_extension(MockExtension)
|
|
91
91
|
|
|
92
92
|
doc = MockDocument.new()
|
|
93
93
|
|
|
94
|
-
doc.methods.find {|name | name.to_s =="my_extension_method"}.
|
|
95
|
-
doc.my_extension_method.
|
|
94
|
+
expect(doc.methods.find {|name | name.to_s =="my_extension_method"}).not_to be_nil
|
|
95
|
+
expect(doc.my_extension_method).to eq("my_extension_results")
|
|
96
96
|
end
|
|
97
97
|
it "should let last extension applied override earlier extensions" do
|
|
98
98
|
MockDocument.use_extension(MockExtension)
|
|
99
99
|
MockDocument.use_extension(MockSecondExtension)
|
|
100
100
|
|
|
101
|
-
MockDocument.new().my_extension_method.to_s.
|
|
101
|
+
expect(MockDocument.new().my_extension_method.to_s).to eq("override")
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
describe "extension_parameters class-level hash" do
|
|
105
105
|
it "should provide an extension_parameters hash at the class level" do
|
|
106
106
|
MockDocument.extension_parameters[:key] = "value"
|
|
107
|
-
MockDocument.extension_parameters[:key].
|
|
107
|
+
expect(MockDocument.extension_parameters[:key]).to eq("value")
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
it "extension_parameters should not be shared between classes" do
|
|
@@ -118,7 +118,7 @@ describe "Blacklight::Solr::Document" do
|
|
|
118
118
|
class_one.extension_parameters[:key] = "class_one_value"
|
|
119
119
|
class_two.extension_parameters[:key] = "class_two_value"
|
|
120
120
|
|
|
121
|
-
class_one.extension_parameters[:key].
|
|
121
|
+
expect(class_one.extension_parameters[:key]).to eq("class_one_value")
|
|
122
122
|
end
|
|
123
123
|
end
|
|
124
124
|
|
|
@@ -136,14 +136,14 @@ describe "Blacklight::Solr::Document" do
|
|
|
136
136
|
it "reports it's exportable formats properly" do
|
|
137
137
|
doc = MockDocument.new
|
|
138
138
|
doc.will_export_as(:marc, "application/marc" )
|
|
139
|
-
doc.export_formats.
|
|
140
|
-
doc.export_formats[:marc][:content_type].
|
|
139
|
+
expect(doc.export_formats).to have_key(:marc)
|
|
140
|
+
expect(doc.export_formats[:marc][:content_type]).to eq("application/marc")
|
|
141
141
|
end
|
|
142
142
|
|
|
143
143
|
it "looks up content-type from Mime::Type if not given in arg" do
|
|
144
144
|
doc = MockDocument.new
|
|
145
145
|
doc.will_export_as(:html)
|
|
146
|
-
doc.export_formats.
|
|
146
|
+
expect(doc.export_formats).to have_key(:html)
|
|
147
147
|
end
|
|
148
148
|
|
|
149
149
|
context "format not registered with Mime::Type" do
|
|
@@ -154,17 +154,17 @@ describe "Blacklight::Solr::Document" do
|
|
|
154
154
|
# registration in an after, sorry.
|
|
155
155
|
end
|
|
156
156
|
it "registers format" do
|
|
157
|
-
defined?("Mime::MOCK2").
|
|
157
|
+
expect(defined?("Mime::MOCK2")).to be_truthy
|
|
158
158
|
end
|
|
159
159
|
it "registers as alias only" do
|
|
160
|
-
Mime::Type.lookup("application/mock2").
|
|
160
|
+
expect(Mime::Type.lookup("application/mock2")).not_to equal(Mime::Type.lookup_by_extension("mock2"))
|
|
161
161
|
end
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
it "export_as(:format) by calling export_as_format" do
|
|
165
165
|
doc = MockDocument.new
|
|
166
166
|
doc.will_export_as(:marc, "application/marc")
|
|
167
|
-
doc.export_as(:marc).
|
|
167
|
+
expect(doc.export_as(:marc)).to eq("fake_marc")
|
|
168
168
|
end
|
|
169
169
|
end
|
|
170
170
|
|
|
@@ -183,17 +183,17 @@ describe "Blacklight::Solr::Document" do
|
|
|
183
183
|
end
|
|
184
184
|
|
|
185
185
|
it "should return complete dictionary based on config'd fields" do
|
|
186
|
-
@doc1.to_semantic_values.
|
|
186
|
+
expect(@doc1.to_semantic_values).to eq({:title => ["doc1 title"], :something => ["val1", "val2"]})
|
|
187
187
|
end
|
|
188
188
|
it "should return empty array for a key without a value" do
|
|
189
|
-
@doc1.to_semantic_values[:author].
|
|
190
|
-
@doc1.to_semantic_values[:nonexistent_token].
|
|
189
|
+
expect(@doc1.to_semantic_values[:author]).to eq([])
|
|
190
|
+
expect(@doc1.to_semantic_values[:nonexistent_token]).to eq([])
|
|
191
191
|
end
|
|
192
192
|
it "should return an array even for a single-value field" do
|
|
193
|
-
@doc1.to_semantic_values[:title].
|
|
193
|
+
expect(@doc1.to_semantic_values[:title]).to be_kind_of(Array)
|
|
194
194
|
end
|
|
195
195
|
it "should return complete array for a multi-value field" do
|
|
196
|
-
@doc1.to_semantic_values[:something].
|
|
196
|
+
expect(@doc1.to_semantic_values[:something]).to eq(["val1", "val2"])
|
|
197
197
|
end
|
|
198
198
|
|
|
199
199
|
end
|
|
@@ -207,27 +207,27 @@ describe "Blacklight::Solr::Document" do
|
|
|
207
207
|
|
|
208
208
|
describe "#has_highlight_field?" do
|
|
209
209
|
it "should be true if the highlight field is in the solr response" do
|
|
210
|
-
@document.
|
|
211
|
-
@document.
|
|
210
|
+
expect(@document).to have_highlight_field 'title_text'
|
|
211
|
+
expect(@document).to have_highlight_field :title_text
|
|
212
212
|
end
|
|
213
213
|
|
|
214
214
|
it "should be false if the highlight field isn't in the solr response" do
|
|
215
|
-
@document.
|
|
215
|
+
expect(@document).not_to have_highlight_field 'nonexisting_field'
|
|
216
216
|
end
|
|
217
217
|
end
|
|
218
218
|
|
|
219
219
|
describe "#highlight_field" do
|
|
220
220
|
it "should return a value" do
|
|
221
|
-
@document.highlight_field('title_text').
|
|
221
|
+
expect(@document.highlight_field('title_text')).to include('doc <em>1</em>')
|
|
222
222
|
end
|
|
223
223
|
|
|
224
224
|
|
|
225
225
|
it "should return a value that is html safe" do
|
|
226
|
-
@document.highlight_field('title_text').first.
|
|
226
|
+
expect(@document.highlight_field('title_text').first).to be_html_safe
|
|
227
227
|
end
|
|
228
228
|
|
|
229
229
|
it "should return nil when the field doesn't exist" do
|
|
230
|
-
@document.highlight_field('nonexisting_field').
|
|
230
|
+
expect(@document.highlight_field('nonexisting_field')).to be_nil
|
|
231
231
|
end
|
|
232
232
|
end
|
|
233
233
|
end
|
|
@@ -11,47 +11,47 @@ describe Blacklight::SolrResponse do
|
|
|
11
11
|
let(:r) { create_response }
|
|
12
12
|
|
|
13
13
|
it 'should create a valid response' do
|
|
14
|
-
r.
|
|
14
|
+
expect(r).to respond_to(:header)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
it 'should have accurate pagination numbers' do
|
|
18
|
-
r.rows.
|
|
19
|
-
r.total.
|
|
20
|
-
r.start.
|
|
18
|
+
expect(r.rows).to eq(11)
|
|
19
|
+
expect(r.total).to eq(26)
|
|
20
|
+
expect(r.start).to eq(0)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
it 'should create a valid response class' do
|
|
24
|
-
r.
|
|
25
|
-
r.docs.size.
|
|
26
|
-
r.params[:echoParams].
|
|
24
|
+
expect(r).to respond_to(:response)
|
|
25
|
+
expect(r.docs.size).to eq(11)
|
|
26
|
+
expect(r.params[:echoParams]).to eq('EXPLICIT')
|
|
27
27
|
|
|
28
|
-
r.
|
|
28
|
+
expect(r).to be_a(Blacklight::SolrResponse::Facets)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
it 'should provide facet helpers' do
|
|
32
|
-
r.facets.size.
|
|
32
|
+
expect(r.facets.size).to eq(2)
|
|
33
33
|
|
|
34
34
|
field_names = r.facets.collect{|facet|facet.name}
|
|
35
|
-
field_names.include?('cat').
|
|
36
|
-
field_names.include?('manu').
|
|
35
|
+
expect(field_names.include?('cat')).to eq(true)
|
|
36
|
+
expect(field_names.include?('manu')).to eq(true)
|
|
37
37
|
|
|
38
38
|
first_facet = r.facets.select { |x| x.name == 'cat'}.first
|
|
39
|
-
first_facet.name.
|
|
39
|
+
expect(first_facet.name).to eq('cat')
|
|
40
40
|
|
|
41
|
-
first_facet.items.size.
|
|
41
|
+
expect(first_facet.items.size).to eq(10)
|
|
42
42
|
|
|
43
43
|
expected = "electronics - 14, memory - 3, card - 2, connector - 2, drive - 2, graphics - 2, hard - 2, monitor - 2, search - 2, software - 2"
|
|
44
44
|
received = first_facet.items.collect do |item|
|
|
45
45
|
item.value + ' - ' + item.hits.to_s
|
|
46
46
|
end.join(', ')
|
|
47
47
|
|
|
48
|
-
received.
|
|
48
|
+
expect(received).to eq(expected)
|
|
49
49
|
|
|
50
50
|
r.facets.each do |facet|
|
|
51
|
-
facet.respond_to?(:name).
|
|
51
|
+
expect(facet.respond_to?(:name)).to eq(true)
|
|
52
52
|
facet.items.each do |item|
|
|
53
|
-
item.respond_to?(:value).
|
|
54
|
-
item.respond_to?(:hits).
|
|
53
|
+
expect(item.respond_to?(:value)).to eq(true)
|
|
54
|
+
expect(item.respond_to?(:hits)).to eq(true)
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
@@ -72,7 +72,7 @@ describe Blacklight::SolrResponse do
|
|
|
72
72
|
it "should provide a model name helper" do
|
|
73
73
|
first_doc_model_name = double(:human => 'xyz')
|
|
74
74
|
|
|
75
|
-
r.docs.first.
|
|
75
|
+
allow(r.docs.first).to receive(:model_name).and_return first_doc_model_name
|
|
76
76
|
|
|
77
77
|
expect(r.model_name).to eq first_doc_model_name
|
|
78
78
|
end
|
|
@@ -80,33 +80,33 @@ describe Blacklight::SolrResponse do
|
|
|
80
80
|
describe "FacetItem" do
|
|
81
81
|
it "should work with a field,value tuple" do
|
|
82
82
|
item = Blacklight::SolrResponse::Facets::FacetItem.new('value', 15)
|
|
83
|
-
item.value.
|
|
84
|
-
item.hits.
|
|
83
|
+
expect(item.value).to eq('value')
|
|
84
|
+
expect(item.hits).to eq(15)
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
it "should work with a field,value + hash triple" do
|
|
88
88
|
item = Blacklight::SolrResponse::Facets::FacetItem.new('value', 15, :a => 1, :value => 'ignored')
|
|
89
|
-
item.value.
|
|
90
|
-
item.hits.
|
|
91
|
-
item.a.
|
|
89
|
+
expect(item.value).to eq('value')
|
|
90
|
+
expect(item.hits).to eq(15)
|
|
91
|
+
expect(item.a).to eq(1)
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
it "should work like an openstruct" do
|
|
95
95
|
item = Blacklight::SolrResponse::Facets::FacetItem.new(:value => 'value', :hits => 15)
|
|
96
96
|
|
|
97
|
-
item.hits.
|
|
98
|
-
item.value.
|
|
99
|
-
item.
|
|
97
|
+
expect(item.hits).to eq(15)
|
|
98
|
+
expect(item.value).to eq('value')
|
|
99
|
+
expect(item).to be_a_kind_of(OpenStruct)
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
it "should provide a label accessor" do
|
|
103
103
|
item = Blacklight::SolrResponse::Facets::FacetItem.new('value', :hits => 15)
|
|
104
|
-
item.label.
|
|
104
|
+
expect(item.label).to eq('value')
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
it "should use a provided label" do
|
|
108
108
|
item = Blacklight::SolrResponse::Facets::FacetItem.new('value', 15, :label => 'custom label')
|
|
109
|
-
item.label.
|
|
109
|
+
expect(item.label).to eq('custom label')
|
|
110
110
|
|
|
111
111
|
end
|
|
112
112
|
|
|
@@ -115,71 +115,71 @@ describe Blacklight::SolrResponse do
|
|
|
115
115
|
it 'should return the correct value when calling facet_by_field_name' do
|
|
116
116
|
r = create_response
|
|
117
117
|
facet = r.facet_by_field_name('cat')
|
|
118
|
-
facet.name.
|
|
118
|
+
expect(facet.name).to eq('cat')
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
it 'should provide the responseHeader params' do
|
|
122
122
|
raw_response = eval(mock_query_response)
|
|
123
123
|
raw_response['responseHeader']['params']['test'] = :test
|
|
124
124
|
r = Blacklight::SolrResponse.new(raw_response, raw_response['params'])
|
|
125
|
-
r.params['test'].
|
|
125
|
+
expect(r.params['test']).to eq(:test)
|
|
126
126
|
end
|
|
127
127
|
|
|
128
128
|
it 'should provide the solr-returned params and "rows" should be 11' do
|
|
129
129
|
raw_response = eval(mock_query_response)
|
|
130
130
|
r = Blacklight::SolrResponse.new(raw_response, {})
|
|
131
|
-
r.params[:rows].to_s.
|
|
131
|
+
expect(r.params[:rows].to_s).to eq('11')
|
|
132
132
|
end
|
|
133
133
|
|
|
134
134
|
it 'should provide the ruby request params if responseHeader["params"] does not exist' do
|
|
135
135
|
raw_response = eval(mock_query_response)
|
|
136
136
|
raw_response.delete 'responseHeader'
|
|
137
137
|
r = Blacklight::SolrResponse.new(raw_response, :rows => 999)
|
|
138
|
-
r.params[:rows].to_s.
|
|
138
|
+
expect(r.params[:rows].to_s).to eq('999')
|
|
139
139
|
end
|
|
140
140
|
|
|
141
141
|
it 'should provide spelling suggestions for regular spellcheck results' do
|
|
142
142
|
raw_response = eval(mock_response_with_spellcheck)
|
|
143
143
|
r = Blacklight::SolrResponse.new(raw_response, {})
|
|
144
|
-
r.spelling.words.
|
|
145
|
-
r.spelling.words.
|
|
144
|
+
expect(r.spelling.words).to include("dell")
|
|
145
|
+
expect(r.spelling.words).to include("ultrasharp")
|
|
146
146
|
end
|
|
147
147
|
|
|
148
148
|
it 'should provide spelling suggestions for extended spellcheck results' do
|
|
149
149
|
raw_response = eval(mock_response_with_spellcheck_extended)
|
|
150
150
|
r = Blacklight::SolrResponse.new(raw_response, {})
|
|
151
|
-
r.spelling.words.
|
|
152
|
-
r.spelling.words.
|
|
151
|
+
expect(r.spelling.words).to include("dell")
|
|
152
|
+
expect(r.spelling.words).to include("ultrasharp")
|
|
153
153
|
end
|
|
154
154
|
|
|
155
155
|
it 'should provide no spelling suggestions when extended results and suggestion frequency is the same as original query frequency' do
|
|
156
156
|
raw_response = eval(mock_response_with_spellcheck_same_frequency)
|
|
157
157
|
r = Blacklight::SolrResponse.new(raw_response, {})
|
|
158
|
-
r.spelling.words.
|
|
158
|
+
expect(r.spelling.words).to eq([])
|
|
159
159
|
end
|
|
160
160
|
|
|
161
161
|
it 'should provide spelling suggestions for a regular spellcheck results with a collation' do
|
|
162
162
|
raw_response = eval(mock_response_with_spellcheck_collation)
|
|
163
163
|
r = Blacklight::SolrResponse.new(raw_response, {})
|
|
164
|
-
r.spelling.words.
|
|
165
|
-
r.spelling.words.
|
|
164
|
+
expect(r.spelling.words).to include("dell")
|
|
165
|
+
expect(r.spelling.words).to include("ultrasharp")
|
|
166
166
|
end
|
|
167
167
|
|
|
168
168
|
it 'should provide spelling suggestion collation' do
|
|
169
169
|
raw_response = eval(mock_response_with_spellcheck_collation)
|
|
170
170
|
r = Blacklight::SolrResponse.new(raw_response, {})
|
|
171
|
-
r.spelling.collation.
|
|
171
|
+
expect(r.spelling.collation).to eq('dell ultrasharp')
|
|
172
172
|
end
|
|
173
173
|
|
|
174
174
|
it "should provide MoreLikeThis suggestions" do
|
|
175
175
|
raw_response = eval(mock_response_with_more_like_this)
|
|
176
176
|
r = Blacklight::SolrResponse.new(raw_response, {})
|
|
177
|
-
r.more_like(double(:id => '79930185')).
|
|
177
|
+
expect(r.more_like(double(:id => '79930185')).size).to eq(2)
|
|
178
178
|
end
|
|
179
179
|
|
|
180
180
|
it "should be empty when the response has no results" do
|
|
181
181
|
r = Blacklight::SolrResponse.new({}, {})
|
|
182
|
-
r.
|
|
182
|
+
allow(r).to receive_messages(:total => 0)
|
|
183
183
|
expect(r).to be_empty
|
|
184
184
|
end
|
|
185
185
|
|