blacklight 3.0pre1 → 3.0pre2

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