blacklight 3.0pre1 → 3.0pre2

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.
Files changed (114) hide show
  1. data/.gitmodules +0 -6
  2. data/README.rdoc +94 -87
  3. data/blacklight.gemspec +1 -1
  4. data/config/routes.rb +1 -1
  5. data/lib/blacklight.rb +2 -2
  6. data/lib/blacklight/catalog.rb +10 -12
  7. data/lib/blacklight/controller.rb +2 -2
  8. data/lib/blacklight/engine.rb +5 -2
  9. data/lib/blacklight/solr/document.rb +1 -1
  10. data/lib/blacklight/solr/document/marc.rb +1 -16
  11. data/lib/blacklight/solr_helper.rb +43 -14
  12. data/lib/blacklight/version.rb +1 -1
  13. data/lib/generators/blacklight/assets_generator.rb +25 -0
  14. data/lib/generators/blacklight/blacklight_generator.rb +16 -1
  15. data/lib/generators/blacklight/jetty_generator.rb +101 -0
  16. data/lib/generators/blacklight/solr_conf_generator.rb +25 -0
  17. data/lib/generators/blacklight/templates/catalog_controller.rb +0 -1
  18. data/lib/generators/blacklight/templates/config/solr.yml +14 -2
  19. data/lib/generators/blacklight/templates/public/images/{blacklight/bg.png → bg.png} +0 -0
  20. data/lib/generators/blacklight/templates/public/images/{blacklight/border.png → border.png} +0 -0
  21. data/lib/generators/blacklight/templates/public/images/{blacklight/bul_sq_gry.gif → bul_sq_gry.gif} +0 -0
  22. data/lib/generators/blacklight/templates/public/images/{blacklight/checkmark.gif → checkmark.gif} +0 -0
  23. data/lib/generators/blacklight/templates/public/images/{blacklight/logo.png → logo.png} +0 -0
  24. data/lib/generators/blacklight/templates/public/images/{blacklight/magnifying_glass.gif → magnifying_glass.gif} +0 -0
  25. data/lib/generators/blacklight/templates/public/images/{blacklight/remove.gif → remove.gif} +0 -0
  26. data/lib/generators/blacklight/templates/public/images/{blacklight/separator.gif → separator.gif} +0 -0
  27. data/lib/generators/blacklight/templates/public/images/{blacklight/start_over.gif → start_over.gif} +0 -0
  28. data/lib/generators/blacklight/templates/public/javascripts/blacklight.js +5 -0
  29. data/lib/generators/blacklight/templates/public/stylesheets/blacklight.css +9 -3
  30. data/lib/generators/blacklight/templates/solr_conf/schema.xml +339 -0
  31. data/lib/generators/blacklight/templates/solr_conf/solrconfig.xml +578 -0
  32. data/lib/railties/all_tests.rake +11 -0
  33. data/lib/railties/blacklight.rake +0 -52
  34. data/lib/railties/blacklight_cucumber.rake +125 -0
  35. data/lib/railties/blacklight_rspec.rake +128 -0
  36. data/lib/railties/{test_solr_server.rb → jetty_solr_server.rb} +22 -45
  37. data/lib/railties/solr_marc.rake +24 -5
  38. data/test_support/.rspec +1 -0
  39. data/test_support/data/test_data.utf8.mrc +1 -0
  40. data/test_support/features/bookmarks.feature +88 -0
  41. data/test_support/features/did_you_mean.feature +129 -0
  42. data/test_support/features/folder.feature +67 -0
  43. data/test_support/features/librarian_view.feature +17 -0
  44. data/test_support/features/record_view.feature +34 -0
  45. data/test_support/features/saved_searches.feature +49 -0
  46. data/test_support/features/search.feature +86 -0
  47. data/test_support/features/search_filters.feature +121 -0
  48. data/test_support/features/search_history.feature +95 -0
  49. data/test_support/features/search_results.feature +61 -0
  50. data/test_support/features/search_sort.feature +29 -0
  51. data/test_support/features/step_definitions/bookmarks_steps.rb +5 -0
  52. data/test_support/features/step_definitions/error_steps.rb +4 -0
  53. data/test_support/features/step_definitions/folder_steps.rb +26 -0
  54. data/test_support/features/step_definitions/general_steps.rb +49 -0
  55. data/test_support/features/step_definitions/record_view_steps.rb +11 -0
  56. data/test_support/features/step_definitions/saved_searches_steps.rb +21 -0
  57. data/test_support/features/step_definitions/search_facets_steps.rb +28 -0
  58. data/test_support/features/step_definitions/search_history_steps.rb +8 -0
  59. data/test_support/features/step_definitions/search_result_steps.rb +113 -0
  60. data/test_support/features/step_definitions/search_steps.rb +102 -0
  61. data/test_support/features/step_definitions/user_steps.rb +4 -0
  62. data/test_support/features/step_definitions/web_steps.rb +211 -0
  63. data/test_support/features/support/env.rb +49 -0
  64. data/test_support/features/support/paths.rb +55 -0
  65. data/test_support/features/support/selectors.rb +39 -0
  66. data/test_support/features/unapi.feature +30 -0
  67. data/test_support/spec/controllers/application_controller_spec.rb +22 -0
  68. data/test_support/spec/controllers/catalog_controller_spec.rb +480 -0
  69. data/test_support/spec/controllers/folder_controller_spec.rb +40 -0
  70. data/test_support/spec/controllers/search_history_controller_spec.rb +45 -0
  71. data/test_support/spec/data/sample_docs.yml +655 -0
  72. data/test_support/spec/data/test_data.utf8.mrc +1 -0
  73. data/test_support/spec/helpers/blacklight_helper_spec.rb +482 -0
  74. data/test_support/spec/helpers/hash_as_hidden_fields_spec.rb +23 -0
  75. data/test_support/spec/helpers/render_constraints_helper_spec.rb +64 -0
  76. data/test_support/spec/helpers/search_history_helper_spec.rb +11 -0
  77. data/test_support/spec/helpers/solr_helper_spec.rb +873 -0
  78. data/test_support/spec/lib/blacklight_email_spec.rb +23 -0
  79. data/test_support/spec/lib/blacklight_sms_spec.rb +23 -0
  80. data/test_support/spec/lib/blacklight_solr_document_dublin_core_spec.rb +41 -0
  81. data/test_support/spec/lib/blacklight_solr_document_marc_spec.rb +88 -0
  82. data/test_support/spec/lib/blacklight_solr_document_spec.rb +173 -0
  83. data/test_support/spec/lib/blacklight_spec.rb +39 -0
  84. data/test_support/spec/lib/configurable_spec.rb +97 -0
  85. data/test_support/spec/lib/facet_paginator_spec.rb +93 -0
  86. data/test_support/spec/lib/marc_export_spec.rb +444 -0
  87. data/test_support/spec/lib/search_fields_spec.rb +105 -0
  88. data/test_support/spec/lib/tasks/blacklight_task_spec.rb +21 -0
  89. data/test_support/spec/lib/tasks/solr_marc_task_spec.rb +59 -0
  90. data/test_support/spec/models/bookmark_spec.rb +37 -0
  91. data/test_support/spec/models/record_mailer_spec.rb +67 -0
  92. data/test_support/spec/models/search_spec.rb +55 -0
  93. data/test_support/spec/models/solr_docment_spec.rb +111 -0
  94. data/test_support/spec/rcov.opts +3 -0
  95. data/test_support/spec/spec.opts +4 -0
  96. data/test_support/spec/spec_helper.rb +38 -0
  97. data/test_support/spec/support/action_controller.rb +42 -0
  98. data/test_support/spec/support/assert_difference.rb +16 -0
  99. data/test_support/spec/support/include_text.rb +20 -0
  100. data/test_support/spec/views/catalog/_constraints_element.html.erb_spec.rb +59 -0
  101. data/test_support/spec/views/catalog/_document_list.html.erb_spec.rb +8 -0
  102. data/test_support/spec/views/catalog/_facets.html.erb_spec.rb +182 -0
  103. data/test_support/spec/views/catalog/_index_partials/_default.erb_spec.rb +70 -0
  104. data/test_support/spec/views/catalog/_show_partials/_default.html.erb_spec.rb +70 -0
  105. data/test_support/spec/views/catalog/index.atom.builder_spec.rb +141 -0
  106. data/test_support/spec/views/catalog/show.html.erb_spec.rb +100 -0
  107. data/test_support/spec/views/catalog/unapi.xml.builder_spec.rb +45 -0
  108. metadata +95 -98
  109. data/lib/blacklight/marc.rb +0 -46
  110. data/lib/blacklight/marc/citation.rb +0 -251
  111. data/lib/railties/cucumber.rake +0 -53
  112. data/lib/railties/rspec.rake +0 -188
  113. data/spec/helpers/catalog_helper_spec.rb +0 -111
  114. data/spec/views/catalog/_sms_form.html.erb_spec.rb +0 -19
@@ -0,0 +1,3 @@
1
+ --exclude "spec/*,gems/*,features/*"
2
+ --rails
3
+ --aggregate coverage.data
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format progress
3
+ --loadby mtime
4
+ --reverse
@@ -0,0 +1,38 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ # Has been customized by Blacklight to work when application is in one place,
3
+ # and actual spec/ stuff is in another (the blacklight gem checkout).
4
+
5
+ ENV["RAILS_ENV"] ||= 'test'
6
+
7
+ #require File.expand_path("../../config/environment", __FILE__)
8
+ # version that works with our blacklight:spec stuff that calls specs
9
+ # in a remote directory.
10
+ require File.expand_path("config/environment", ENV['RAILS_ROOT'] || File.expand_path("../..", __FILE__))
11
+ require 'rspec/rails'
12
+
13
+ # Requires supporting ruby files with custom matchers and macros, etc,
14
+ # in spec/support/ and its subdirectories.
15
+ # Blacklight, again, make sure we're looking in the right place for em.
16
+ # Relative to HERE, NOT to Rails.root, which is off somewhere else.
17
+ #Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
18
+ Dir[Pathname.new(File.expand_path("../support/**/*.rb", __FILE__))].each {|f| require f}
19
+
20
+
21
+ RSpec.configure do |config|
22
+ # == Mock Framework
23
+ #
24
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
25
+ #
26
+ # config.mock_with :mocha
27
+ # config.mock_with :flexmock
28
+ # config.mock_with :rr
29
+ config.mock_with :rspec
30
+
31
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
32
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
33
+
34
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
35
+ # examples within a transaction, remove the following line or assign false
36
+ # instead of true.
37
+ config.use_transactional_fixtures = true
38
+ end
@@ -0,0 +1,42 @@
1
+ # Added based on http://www.arctickiwi.com/blog/upgrading-to-rspec-2-with-ruby-on-rails-3
2
+ # God bless you Jonathon Horsman
3
+ module ActionController
4
+ class TestCase < ActiveSupport::TestCase
5
+ module Behavior
6
+ def process(action, parameters = nil, session = nil, flash = nil, http_method = 'GET')
7
+ # Sanity check for required instance variables so we can give an
8
+ # understandable error message.
9
+ %w(@routes @controller @request @response).each do |iv_name|
10
+ if !(instance_variable_names.include?(iv_name) || instance_variable_names.include?(iv_name.to_sym)) || instance_variable_get(iv_name).nil?
11
+ raise "#{iv_name} is nil: make sure you set it in your test's setup method."
12
+ end
13
+ end
14
+
15
+ @request.recycle!
16
+ @response.recycle!
17
+ @controller.response_body = nil
18
+ @controller.formats = nil
19
+ @controller.params = nil
20
+
21
+ @html_document = nil
22
+ @request.env['REQUEST_METHOD'] = http_method
23
+
24
+ parameters ||= {}
25
+ @request.assign_parameters(@routes, @controller.class.name.underscore.sub(/_controller$/, ''), action.to_s, parameters)
26
+
27
+ @request.session = ActionController::TestSession.new(session) unless session.nil?
28
+ @request.session["flash"] = @request.flash.update(flash || {})
29
+ @request.session["flash"].sweep
30
+
31
+ @controller.request = @request
32
+ #@controller.params.merge!(parameters) # this is the offending line, which I removed
33
+ build_request_uri(action, parameters)
34
+ Base.class_eval { include Testing }
35
+ @controller.process_with_new_base_test(@request, @response)
36
+ @request.session.delete('flash') if @request.session['flash'].blank?
37
+ @response
38
+ end
39
+ end
40
+ end
41
+ end
42
+
@@ -0,0 +1,16 @@
1
+ # Added based on http://www.arctickiwi.com/blog/upgrading-to-rspec-2-with-ruby-on-rails-3
2
+ # God bless you Jonathon Horsman
3
+ def assert_difference(executable, how_many = 1, &block)
4
+ before = eval(executable)
5
+ yield
6
+ after = eval(executable)
7
+ after.should == before + how_many
8
+ end
9
+
10
+ def assert_no_difference(executable, &block)
11
+ before = eval(executable)
12
+ yield
13
+ after = eval(executable)
14
+ after.should == before
15
+ end
16
+
@@ -0,0 +1,20 @@
1
+ # Added from http://www.arctickiwi.com/blog/upgrading-to-rspec-2-with-ruby-on-rails-3
2
+ module RSpec::Rails
3
+ module Matchers
4
+ RSpec::Matchers.define :include_text do |text|
5
+ match do |response_or_text|
6
+ @content = response_or_text.respond_to?(:body) ? response_or_text.body : response_or_text
7
+ @content.include?(text)
8
+ end
9
+
10
+ failure_message_for_should do |text|
11
+ "expected '#{@content}' to contain '#{text}'"
12
+ end
13
+
14
+ failure_message_for_should_not do |text|
15
+ "expected #{@content} to not contain '#{text}'"
16
+ end
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,59 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe "catalog/_constraints_element.html.erb" do
4
+ describe "for simple display" do
5
+ before do
6
+ render :partial => "catalog/constraints_element", :locals => {:label => "my label", :value => "my value"}
7
+ end
8
+ it "should render label and value" do
9
+ rendered.should have_selector("span.appliedFilter.constraint") do |s|
10
+ s.should have_selector "span.filterName", :content => "my label"
11
+ s.should have_selector "span.filterValue", :content => "my value"
12
+ end
13
+ end
14
+ end
15
+
16
+ describe "with remove link" do
17
+ before do
18
+ render :partial => "catalog/constraints_element", :locals => {:label => "my label", :value => "my value", :options => {:remove => "http://remove"}}
19
+ end
20
+ it "should include remove link" do
21
+ rendered.should have_selector("span.appliedFilter") do |s|
22
+ s.should have_selector("a.btnRemove.imgReplace[href='http://remove']")
23
+ end
24
+ end
25
+ end
26
+
27
+ describe "with checkmark suppressed" do
28
+ before do
29
+ render :partial => "catalog/constraints_element", :locals => {:label => "my label", :value => "my value", :options => {:check => false}}
30
+ end
31
+ it "should not include checkmark" do
32
+ rendered.should have_selector("span.appliedFilter") do |s|
33
+ s.should_not have_selector("img[src$='checkmark.gif']")
34
+ end
35
+ end
36
+ end
37
+
38
+ describe "with custom classes" do
39
+ before do
40
+ render :partial => "catalog/constraints_element", :locals => {:label => "my label", :value => "my value", :options => {:classes => ["class1", "class2"]}}
41
+ end
42
+ it "should include them" do
43
+ rendered.should have_selector("span.appliedFilter.constraint.class1.class2")
44
+ end
45
+ end
46
+
47
+ describe "with no escaping" do
48
+ before do
49
+ render( :partial => "catalog/constraints_element", :locals => {:label => "<span class='custom_label'>my label</span>", :value => "<span class='custom_value'>my value</span>", :options => {:escape_label => false, :escape_value => false}} )
50
+ end
51
+ it "should not escape key and value" do
52
+ rendered.should have_selector("span.appliedFilter.constraint span.filterName span.custom_label")
53
+ rendered.should have_selector("span.appliedFilter.constraint span.filterValue span.custom_value")
54
+ end
55
+
56
+ end
57
+
58
+
59
+ end
@@ -0,0 +1,8 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe "/catalog/_document_list.html.erb" do
4
+
5
+
6
+
7
+
8
+ end
@@ -0,0 +1,182 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe "/catalog/_facets.html.erb" do
4
+
5
+ before(:each) do
6
+
7
+ # create mock facets to be retrieved from the response
8
+ @solr_item00 = stub("solr_item00")
9
+ @solr_item00.stub!(:value).and_return("val_0_0")
10
+ @solr_item00.stub!(:hits).and_return("90")
11
+ @solr_item01 = stub("solr_item01")
12
+ @solr_item01.stub!(:value).and_return("val_0_1")
13
+ @solr_item01.stub!(:hits).and_return("91")
14
+ @facet0 = stub("facet0")
15
+ @solr_fname0 = Blacklight.config[:facet][:field_names].last
16
+ @facet0.stub!(:name).and_return(@solr_fname0);
17
+ @solr_items0 = [@solr_item00, @solr_item01]
18
+ @facet0.stub!(:items).and_return(@solr_items0);
19
+
20
+ @solr_item10 = stub("solr_item10")
21
+ @solr_item10.stub!(:value).and_return("val_1_0")
22
+ @solr_item10.stub!(:hits).and_return("10")
23
+ @solr_item11 = stub("solr_item11")
24
+ @solr_item11.stub!(:value).and_return("val_1_1")
25
+ @solr_item11.stub!(:hits).and_return("11")
26
+ @facet1 = stub("facet1")
27
+ @solr_fname1 = Blacklight.config[:facet][:field_names][1]
28
+ @facet1.stub!(:name).and_return(@solr_fname1);
29
+ @solr_items1 = [@solr_item10, @solr_item11]
30
+ @facet1.stub!(:items).and_return(@solr_items1);
31
+
32
+ @solr_item20 = stub("solr_item20")
33
+ @solr_item20.stub!(:value).and_return("val_2_0")
34
+ @solr_item20.stub!(:hits).and_return("20")
35
+ @solr_item21 = stub("solr_item21")
36
+ @solr_item21.stub!(:value).and_return("val_2_1")
37
+ @solr_item21.stub!(:hits).and_return("21")
38
+ @facet2 = stub("facet2")
39
+ @solr_fname2 = Blacklight.config[:facet][:field_names][0]
40
+ @facet2.stub!(:name).and_return(@solr_fname2);
41
+ @solr_items2 = [@solr_item20, @solr_item21]
42
+ @facet2.stub!(:items).and_return(@solr_items2);
43
+
44
+ @solr_item30 = stub("solr_item30")
45
+ @solr_item30.stub!(:value).and_return("val_3_0")
46
+ @solr_item30.stub!(:hits).and_return("30")
47
+ @solr_item31 = stub("solr_item31")
48
+ @solr_item31.stub!(:value).and_return("val_3_1")
49
+ @solr_item31.stub!(:hits).and_return("31")
50
+ @facet3 = stub("facet3")
51
+ @solr_fname3 = "solr_field_not_in_initializer_facet"
52
+ @facet3.stub!(:name).and_return(@solr_fname3);
53
+ @solr_items3 = [@solr_item30, @solr_item31]
54
+ @facet3.stub!(:items).and_return(@solr_items3);
55
+
56
+ @facets = [@facet0, @facet1, @facet2, @facet3]
57
+ @response.stub!(:facets).and_return(@facets)
58
+
59
+ # one facet is selected
60
+ selected_facet = {@solr_fname1 => [@solr_item10.value]}
61
+ params[:f] = selected_facet
62
+
63
+ assigns[:response] = @response
64
+
65
+ render :partial => 'catalog/facets'
66
+ end
67
+
68
+ # There is a problem with link_to and rspec-rails. See:
69
+ # http://www.nabble.com/Rails:-View-specs-and-implicit-parameters-in-link_to()-td20011051.html
70
+ # This spec will run cleanly if the implicit routes are added to the plugin
71
+ # level routes.rb file: (at the bottom of the file)
72
+ #
73
+ # map.connect ':controller/:action/:id'
74
+ # map.connect ':controller/:action/:id.:format'
75
+
76
+ # If someone can find a better workaround, that would be mega-spiffy.
77
+ #
78
+ # For now, I am commenting out this spec because I'm not sure if adding those
79
+ # routes will affect anything else. Similar comments are in routes.rb
80
+ # - Naomi 2009-04-19
81
+
82
+ =begin
83
+
84
+ it "should have div tag with id=facets" do
85
+ response.should have_selector('div[id=facets]')
86
+ end
87
+
88
+ it "should not have facets that aren't specified in initializer" do
89
+ response.should_not include_text(@solr_fname3)
90
+ end
91
+
92
+ it "should skip over facets specified in the initializer that aren't in the response" do
93
+ solr_field = Blacklight.config[:facet][:field_names][2]
94
+ label = Blacklight.config[:facet][:labels][solr_field]
95
+ response.should_not include_text(label)
96
+ end
97
+
98
+ it "should have all facets specified in initializer that are included in solr response" do
99
+ solr_field1 = Blacklight.config[:facet][:field_names].last
100
+ response.should include_text(solr_field1)
101
+
102
+ solr_field2 = Blacklight.config[:facet][:field_names][1]
103
+ response.should include_text(solr_field2)
104
+
105
+ solr_field3 = Blacklight.config[:facet][:field_names][0]
106
+ response.should include_text(solr_field3)
107
+ end
108
+
109
+ it "should use the labels specified in initializer" do
110
+ label1 = Blacklight.config[:facet][:labels][@solr_fname0]
111
+ response.should include_text(label1)
112
+
113
+ label2 = Blacklight.config[:facet][:labels][@solr_fname1]
114
+ response.should include_text(label2)
115
+
116
+ label3 = Blacklight.config[:facet][:labels][@solr_fname2]
117
+ response.should include_text(label3)
118
+ end
119
+
120
+ # TODO: check the display order of the facets. Naomi can't figure this out
121
+ # it "should display the facets in the order specified in the initializer" do
122
+ # pending
123
+ # end
124
+ #
125
+ # output is:
126
+ # <div id="facets">
127
+ # <div>
128
+ # <h3>Format</h3>
129
+ # <ul>
130
+ # <li>Book</li>
131
+ # <li>Online</li>
132
+ # </ul>
133
+ # </div>
134
+ # <div>
135
+ # <h3>Language</h3>
136
+ # <ul>
137
+ # <li>English</li>
138
+ # <li>Urdu/li>
139
+ # </ul>
140
+ # </div>
141
+ # </div>
142
+ #
143
+ # can't test for ordering of h3 contents:
144
+ # they are not immediate children of <div id="facets">
145
+ #
146
+ # perhaps use Cucumber?
147
+
148
+
149
+ it "should have values for displayed facets" do
150
+ response.should have_selector("li") do
151
+ with_tag("a", @solr_item00.value)
152
+ with_tag("a", @solr_item01.value)
153
+ # with_tag("a", @solr_item10.value) # this facet is selected
154
+ with_tag("a", @solr_item11.value)
155
+ with_tag("a", @solr_item20.value)
156
+ with_tag("a", @solr_item21.value)
157
+ end
158
+ end
159
+
160
+ it "should have numbers of hits for displayed facets" do
161
+ response.should include_text(@solr_item00.hits)
162
+ response.should include_text(@solr_item01.hits)
163
+ response.should include_text(@solr_item10.hits)
164
+ response.should include_text(@solr_item11.hits)
165
+ response.should include_text(@solr_item20.hits)
166
+ response.should include_text(@solr_item21.hits)
167
+ end
168
+
169
+ it "should have links to include facet values in solr query" do
170
+ response.should have_selector("a", :text => @solr_item00.value)
171
+ response.should include_text("f%5B"+@solr_fname0 + "%5D%5B%5D=" + @solr_item00.value)
172
+ response.should have_selector("a", :text => @solr_item11.value)
173
+ response.should include_text("f%5B"+@solr_fname1 + "%5D%5B%5D=" + @solr_item11.value)
174
+ end
175
+
176
+ it "should display selected facets properly" do
177
+ response.should have_selector("span[class=selected]", :text => /#{@solr_item10.value}/)
178
+ end
179
+
180
+ =end
181
+
182
+ end
@@ -0,0 +1,70 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
2
+
3
+ # spec for default partial to display solr document fields
4
+ # in catalog INDEX view
5
+
6
+ describe "/catalog/_index_partials/_default.erb" do
7
+
8
+ include BlacklightHelper
9
+ include CatalogHelper
10
+
11
+ before(:each) do
12
+ @fname_1 = Blacklight.config[:index_fields][:field_names].last
13
+ @fname_2 = "solr_field_not_in_initializer"
14
+ @fname_3 = Blacklight.config[:index_fields][:field_names][1]
15
+ @fname_4 = Blacklight.config[:index_fields][:field_names][0]
16
+
17
+ @document = mock("solr_doc")
18
+ @document.should_receive(:get).with(@fname_1, hash_including(:sep => nil)).any_number_of_times.and_return("val_1")
19
+ @document.should_receive(:get).with(@fname_2, hash_including(:sep => nil)).any_number_of_times.and_return("val_2")
20
+ @document.should_receive(:get).with(@fname_3, hash_including(:sep => nil)).any_number_of_times.and_return(nil)
21
+ @document.should_receive(:get).with(@fname_4, hash_including(:sep => nil)).any_number_of_times.and_return("val_4")
22
+
23
+ @document.should_receive(:'has?').with(@fname_1).any_number_of_times.and_return(true)
24
+ @document.should_receive(:'has?').with(@fname_2).any_number_of_times.and_return(true)
25
+ @document.should_receive(:'has?').with(@fname_3).any_number_of_times.and_return(false)
26
+ @document.should_receive(:'has?').with(@fname_4).any_number_of_times.and_return(true)
27
+ @document.should_receive(:'has?').with(anything()).any_number_of_times.and_return(true)
28
+
29
+ # cover any remaining fields in initalizer
30
+ @document.should_receive(:get).with(anything(), hash_including(:sep => nil)).any_number_of_times.and_return("bleah")
31
+ @document.should_receive(:[]).any_number_of_times
32
+
33
+ @flabel_1 = Blacklight.config[:index_fields][:labels][@fname_1]
34
+ @flabel_3 = Blacklight.config[:index_fields][:labels][@fname_3]
35
+ @flabel_4 = Blacklight.config[:index_fields][:labels][@fname_4]
36
+
37
+ assigns[:document] = @document
38
+ render_document_partial @document, :index
39
+ end
40
+
41
+ it "should only display fields listed in the initializer" do
42
+ rendered.should_not include_text("val_2")
43
+ rendered.should_not include_text(@fname_2)
44
+ end
45
+
46
+ it "should skip over fields listed in initializer that are not in solr response" do
47
+ rendered.should_not include_text(@fname_3)
48
+ end
49
+
50
+ it "should display field labels from initializer and raw solr field names in the class" do
51
+ # labels
52
+ rendered.should include_text(@flabel_1)
53
+ rendered.should include_text(@flabel_4)
54
+ # classes
55
+ rendered.should include_text("blacklight-#{@fname_1}")
56
+ rendered.should include_text("blacklight-#{@fname_4}")
57
+ end
58
+
59
+ # this test probably belongs in a Cucumber feature
60
+ # it "should display fields in the order listed in the initializer" do
61
+ # pending
62
+ # end
63
+
64
+ it "should have values for displayed fields" do
65
+ rendered.should include_text("val_1")
66
+ rendered.should include_text("val_4")
67
+ rendered.should_not include_text("val_2")
68
+ end
69
+
70
+ end