blacklight 3.0.0pre4 → 3.0.0pre6

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 (51) hide show
  1. data/VERSION +1 -1
  2. data/app/controllers/bookmarks_controller.rb +1 -1
  3. data/app/controllers/folder_controller.rb +1 -1
  4. data/app/helpers/blacklight_helper.rb +5 -4
  5. data/app/helpers/catalog_helper.rb +22 -18
  6. data/app/views/bookmarks/index.html.erb +1 -1
  7. data/app/views/catalog/_citation.html.erb +6 -1
  8. data/app/views/catalog/_results_pagination.html.erb +2 -7
  9. data/app/views/catalog/_sms_form.html.erb +1 -1
  10. data/app/views/catalog/index.html.erb +1 -1
  11. data/app/views/kaminari/blacklight/_first_page.html.erb +11 -0
  12. data/app/views/kaminari/blacklight/_gap.html.erb +8 -0
  13. data/app/views/kaminari/blacklight/_last_page.html.erb +11 -0
  14. data/app/views/kaminari/blacklight/_next_page.html.erb +11 -0
  15. data/app/views/kaminari/blacklight/_page.html.erb +12 -0
  16. data/app/views/kaminari/blacklight/_paginator.html.erb +23 -0
  17. data/app/views/kaminari/blacklight/_prev_page.html.erb +11 -0
  18. data/app/views/record_mailer/email_record.text.erb +5 -0
  19. data/app/views/record_mailer/sms_record.text.erb +4 -0
  20. data/blacklight.gemspec +4 -5
  21. data/config/locales/kaminari.yml +10 -0
  22. data/config/routes.rb +8 -46
  23. data/features/default_setup.feature +2 -1
  24. data/lib/blacklight.rb +5 -7
  25. data/lib/blacklight/catalog.rb +7 -24
  26. data/lib/blacklight/controller.rb +7 -1
  27. data/lib/blacklight/engine.rb +0 -11
  28. data/lib/blacklight/routes.rb +91 -0
  29. data/lib/blacklight/solr/document.rb +16 -1
  30. data/lib/blacklight/solr/document/marc_export.rb +174 -4
  31. data/lib/blacklight/solr_helper.rb +7 -2
  32. data/lib/generators/blacklight/blacklight_generator.rb +6 -0
  33. data/lib/generators/blacklight/templates/public/stylesheets/blacklight/blacklight.css +3 -3
  34. data/lib/railties/all_tests.rake +18 -6
  35. data/lib/railties/blacklight.rake +3 -2
  36. data/lib/railties/blacklight_cucumber.rake +1 -1
  37. data/lib/railties/blacklight_rspec.rake +1 -1
  38. data/lib/railties/solr_marc.rake +1 -1
  39. data/test_support/spec/controllers/application_controller_spec.rb +2 -2
  40. data/test_support/spec/controllers/catalog_controller_spec.rb +0 -24
  41. data/test_support/spec/helpers/blacklight_helper_spec.rb +4 -4
  42. data/test_support/spec/helpers/catalog_helper_spec.rb +22 -18
  43. data/test_support/spec/helpers/solr_helper_spec.rb +22 -5
  44. data/test_support/spec/lib/blacklight_solr_document_spec.rb +16 -9
  45. data/test_support/spec/lib/marc_export_spec.rb +308 -8
  46. data/test_support/spec/lib/tasks/solr_marc_task_spec.rb +1 -1
  47. data/test_support/spec/views/catalog/index.atom.builder_spec.rb +1 -1
  48. data/test_support/spec/views/catalog/show.html.erb_spec.rb +3 -3
  49. metadata +26 -18
  50. data/app/views/record_mailer/email_record.erb +0 -6
  51. data/app/views/record_mailer/sms_record.erb +0 -4
@@ -196,6 +196,8 @@ module Blacklight::SolrHelper
196
196
 
197
197
  solr_parameters[:fq] ||= []
198
198
  f_request_params.each_pair do |facet_field, value_list|
199
+ value_list ||= []
200
+ value_list = [value_list] unless value_list.respond_to? :each
199
201
  value_list.each do |value|
200
202
  solr_parameters[:fq] << "{!raw f=#{facet_field}}#{value}"
201
203
  end
@@ -261,13 +263,12 @@ module Blacklight::SolrHelper
261
263
  # just to be consistent with the other solr param methods:
262
264
  {
263
265
  :qt => :document,
264
- :id => id
266
+ :id => id # this assumes the document request handler will map the 'id' param to the unique key field
265
267
  }
266
268
  end
267
269
 
268
270
  # a solr query method
269
271
  # retrieve a solr document, given the doc id
270
- # TODO: shouldn't hardcode id field; should be setable to unique_key field in schema.xml
271
272
  def get_solr_response_for_doc_id(id=nil, extra_controller_params={})
272
273
  solr_response = Blacklight.solr.find solr_doc_params(id).merge(extra_controller_params)
273
274
  raise Blacklight::Exceptions::InvalidSolrID.new if solr_response.docs.empty?
@@ -277,6 +278,8 @@ module Blacklight::SolrHelper
277
278
 
278
279
  # given a field name and array of values, get the matching SOLR documents
279
280
  def get_solr_response_for_field_values(field, values, extra_solr_params = {})
281
+ values ||= []
282
+ values = [values] unless values.respond_to? :each
280
283
  value_str = "(\"" + values.to_a.join("\" OR \"") + "\")"
281
284
  solr_params = {
282
285
  :defType => "lucene", # need boolean for OR
@@ -368,6 +371,8 @@ module Blacklight::SolrHelper
368
371
  def get_single_doc_via_search(index, request_params)
369
372
  solr_params = solr_search_params(request_params)
370
373
  solr_params[:start] = index - 1 # start at 0 to get 1st doc, 1 to get 2nd.
374
+ # FIXME: we must set page because of a bug posted here: https://github.com/mwmitchell/rsolr-ext/issues/16
375
+ solr_params[:page] = index - 1 # start at 0 to get 1st doc, 1 to get 2nd.
371
376
  solr_params[:per_page] = 1
372
377
  solr_params[:rows] = 1
373
378
  solr_params[:fl] = '*'
@@ -22,6 +22,7 @@ This generator makes the following changes to your application:
22
22
  9. Injects behavior into your user model
23
23
  10. Creates a blacklight catalog controller in your /app/controllers directory
24
24
  11. Creates a blacklight document in your /app/models directory
25
+ 12. Adds Blacklight routes to your ./config/routes.rb
25
26
  Thank you for Installing Blacklight.
26
27
  """
27
28
  # Implement the required interface for Rails::Generators::Migration.
@@ -134,6 +135,11 @@ EOF
134
135
  copy_file "catalog_controller.rb", "app/controllers/catalog_controller.rb"
135
136
  end
136
137
 
138
+ def inject_blacklight_routes
139
+ route('root :to => "catalog#index"')
140
+ route('Blacklight.add_routes(self)')
141
+ end
142
+
137
143
  private
138
144
 
139
145
  def better_migration_template (file)
@@ -218,7 +218,7 @@ font-weight:bold;
218
218
  text-align: center;
219
219
  }
220
220
 
221
- #startOverLink{display:block; position:absolute; top:50%; right:0.66em; margin-top:-12px; padding:0 7px 3px 12px; line-height:22px; text-decoration:none; color:#fff; background:url(../images/blacklight/start_over.gif) no-repeat center center; border-bottom: none;}
221
+ #startOverLink{display:block; position:absolute; top:50%; right:0.66em; margin-top:-12px; padding:0 7px 3px 12px; line-height:22px; text-decoration:none; color:#fff; background:url(../../images/blacklight/start_over.gif) no-repeat center center; border-bottom: none;}
222
222
 
223
223
 
224
224
  #sortAndPerPage {
@@ -460,7 +460,7 @@ Search Parameters
460
460
  top:0;
461
461
  width:32px;
462
462
  height:100%;
463
- background:url(../images/blacklight/remove.gif) no-repeat center center;
463
+ background:url(../../images/blacklight/remove.gif) no-repeat center center;
464
464
  border-left:1px solid #d0daea;
465
465
  border-bottom: none;
466
466
  text-indent:-99999px; /* text there for screen readers, hidden visually */
@@ -475,7 +475,7 @@ Search Parameters
475
475
  .appliedFilter .queryName, .appliedFilter .filterName {
476
476
  /* ">" image */
477
477
  padding-right:14px;
478
- background:url(../images/blacklight/separator.gif) no-repeat right center;
478
+ background:url(../../images/blacklight/separator.gif) no-repeat right center;
479
479
  }
480
480
 
481
481
  .filterValue {
@@ -1,11 +1,23 @@
1
1
  namespace :blacklight do
2
- desc "Run Blacklight cucumber and rspec"
3
- task :all_tests => ['blacklight:spec:with_solr', 'blacklight:cucumber:with_solr']
2
+ begin
3
+ require 'cucumber/rake/task'
4
+ require 'rspec/core'
5
+ require 'rspec/core/rake_task'
4
6
 
5
- namespace :all_tests do
6
- desc "Run Blacklight rspec and cucumber tests with rcov"
7
- rm "blacklight-coverage.data" if File.exist?("blacklight-coverage.data")
8
- task :rcov => ['blacklight:spec:rcov', 'blacklight:cucumber:rcov']
7
+ desc "Run Blacklight cucumber and rspec, with test solr"
8
+ task :all_tests => ['blacklight:spec:with_solr', 'blacklight:cucumber:with_solr']
9
+
10
+ namespace :all_tests do
11
+ desc "Run Blacklight rspec and cucumber tests with rcov"
12
+ rm "blacklight-coverage.data" if File.exist?("blacklight-coverage.data")
13
+ task :rcov => ['blacklight:spec:rcov', 'blacklight:cucumber:rcov']
14
+ end
15
+
16
+ rescue LoadError
17
+ desc "Not available! (cucumber and rspec not avail)"
18
+ task :all_tests do
19
+ abort 'Not available. Both cucumber and rspec need to be installed to run blacklight:all_tests'
20
+ end
9
21
  end
10
22
  end
11
23
 
@@ -1,11 +1,12 @@
1
+
1
2
  namespace :blacklight do
2
-
3
3
  # task to clean out old, unsaved searches
4
4
  # rake blacklight:delete_old_searches[days_old]
5
5
  # example cron entry to delete searches older than 7 days at 2:00 AM every day:
6
6
  # 0 2 * * * cd /path/to/your/app && /path/to/rake blacklight:delete_old_searches[7] RAILS_ENV=your_env
7
7
  desc "Removes entries in the searches table that are older than the number of days given."
8
- task :delete_old_searches, :days_old, :needs => :environment do |t, args|
8
+ task :delete_old_searches, [:days_old] => [:environment] do |t, args|
9
+ args.with_defaults(:days_old => 7)
9
10
  Search.delete_old_searches(args[:days_old].to_i)
10
11
  end
11
12
 
@@ -7,7 +7,7 @@
7
7
  # Blacklight customization, trick Cucumber into looking in our current
8
8
  # location for Rails.root, even though we're going to give it features
9
9
  # from elsewhere.
10
- ENV['RAILS_ROOT'] = Rails.root
10
+ ENV['RAILS_ROOT'] = Rails.root.to_s
11
11
 
12
12
  # blacklight_features, where to find features inside blacklight source?
13
13
  blacklight_features = File.expand_path("./test_support/features", Blacklight.root)
@@ -23,7 +23,7 @@ begin
23
23
  # since we allow spec_dir to be in a remote location. spec_helper.rb
24
24
  # needs it before Rails.root is defined there, even though we can
25
25
  # oddly get it here, i dunno.
26
- ENV['RAILS_ROOT'] = Rails.root
26
+ ENV['RAILS_ROOT'] = Rails.root.to_s
27
27
 
28
28
  namespace :blacklight do
29
29
 
@@ -1,4 +1,4 @@
1
- # -*- coding: undecided -*-
1
+ # -*- coding: UTF-8 -*-
2
2
  # Rake tasks for the SolrMarc Java indexer.
3
3
  # Marc Record defaults to indexing lc_records.utf8.mrc
4
4
  # config.properties defaults to config/demo_config.properties (in the plugin, not the rails app)
@@ -9,11 +9,11 @@ describe ApplicationController do
9
9
  controller.send(:default_html_head)
10
10
  end
11
11
  it "should setup js and css defaults" do
12
- controller.javascript_includes.should include(["blacklight/jquery-1.4.2.min.js", "blacklight/jquery-ui-1.8.1.custom.min.js", "blacklight/blacklight"])#find do |item|
12
+ controller.javascript_includes.should include(["jquery-1.4.2.min.js", "jquery-ui-1.8.1.custom.min.js", "blacklight/blacklight"])#find do |item|
13
13
  # item == ["jquery-1.4.2.min.js", "jquery-ui-1.7.2.custom.min.js", "blacklight", "application", "accordion", "lightbox", {:plugin=>:blacklight}]
14
14
  #end
15
15
 
16
- controller.stylesheet_links.should include(["blacklight/yui", "blacklight/jquery/ui-lightness/jquery-ui-1.8.1.custom.css", "blacklight/blacklight", {:media=>"all"}])
16
+ controller.stylesheet_links.should include(["yui", "jquery/ui-lightness/jquery-ui-1.8.1.custom.css", "blacklight/blacklight", {:media=>"all"}])
17
17
  end
18
18
  end
19
19
  end
@@ -20,18 +20,6 @@ describe CatalogController do
20
20
  # RSpec <1.2.9: route_for(:controller => 'catalog', :action => 'show', :id => '666').should == '/catalog/666'
21
21
  { :get => "/catalog/666" }.should route_to(:controller => 'catalog', :action => 'show', :id => "666")
22
22
  end
23
- it "should map {:controller => 'catalog', :id = '444', :action => 'image'} to /catalog/444/image" do
24
- # RSpec <1.2.9: route_for(:controller => 'catalog', :action => 'image', :id => '444').should == '/catalog/444/image'
25
- { :get => "/catalog/444/image" }.should route_to(:controller => "catalog", :action => "image", :id => "444")
26
- end
27
- it "should map {:controller => 'catalog', :id = '333', :action => 'status'} to /catalog/333/status" do
28
- # RSpec <1.2.9: route_for(:controller => 'catalog', :action => 'status', :id => '333').should == '/catalog/333/status'
29
- { :get => "/catalog/333/status" }.should route_to(:controller => 'catalog', :action => 'status', :id => "333")
30
- end
31
- it "should map {:controller => 'catalog', :id => '222', :action => 'availability'} to /catalog/222/availability" do
32
- # RSpec <1.2.9: route_for(:controller => 'catalog', :action => 'availability', :id => '222').should == '/catalog/222/availability'
33
- { :get => "/catalog/222/availability" }.should route_to(:controller => 'catalog', :action => 'availability', :id => "222")
34
- end
35
23
  it "should map {:controller => 'catalog', :id => '111', :action => 'librarian_view'} to /catalog/111/librarian_view" do
36
24
  # RSpec <1.2.9: route_for(:controller => 'catalog', :action => 'librarian_view', :id => '111').should == '/catalog/111/librarian_view'
37
25
  { :get => "/catalog/111/librarian_view" }.should route_to(:controller => 'catalog', :action => 'librarian_view', :id => "111")
@@ -52,18 +40,6 @@ describe CatalogController do
52
40
  #RSPEC <1.2.9 params_from(:get, '/catalog/666').should == {:controller => 'catalog', :action => 'show', :id => '666'}
53
41
  { :get => "/catalog/666" }.should route_to(:controller => 'catalog', :action => 'show', :id => "666")
54
42
  end
55
- it "should map /catalog/444/image to {:controller => 'catalog', :action => 'image', :id => 444}" do
56
- # params_from(:get, '/catalog/444/image').should == {:controller => 'catalog', :action => 'image', :id => '444'}
57
- { :get => "/catalog/444/image" }.should route_to(:controller => 'catalog', :action => 'image', :id => "444")
58
- end
59
- it "should map /catalog/333/status to {:controller => 'catalog', :action => 'status', :id => 333}" do
60
- #params_from(:get, '/catalog/333/status').should == {:controller => 'catalog', :action => 'status', :id => '333'}
61
- { :get => "/catalog/333/status" }.should route_to(:controller => 'catalog', :action => 'status', :id => "333")
62
- end
63
- it "should map /catalog/222/availability to {:controller => 'catalog', :action => 'availability', :id => 222}" do
64
- # params_from(:get, '/catalog/222/availability').should == {:controller => 'catalog', :action => 'availability', :id => '222'}
65
- { :get => "/catalog/222/availability" }.should route_to(:controller => 'catalog', :action => 'availability', :id => "222")
66
- end
67
43
  it "should map /catalog/111/librarian_view to {:controller => 'catalog', :action => 'librarian_view', :id => 111}" do
68
44
  # params_from(:get, '/catalog/111/librarian_view').should == {:controller => 'catalog', :action => 'librarian_view', :id => '111'}
69
45
  { :get => "/catalog/111/librarian_view" }.should route_to(:controller => 'catalog', :action => 'librarian_view', :id => "111")
@@ -1,4 +1,4 @@
1
- # -*- coding: undecided -*-
1
+ # -*- coding: UTF-8 -*-
2
2
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
3
3
  require 'marc'
4
4
  def exportable_record
@@ -419,7 +419,7 @@ describe BlacklightHelper do
419
419
  end
420
420
 
421
421
  describe "render_link_rel_alternates" do
422
- class MockDocumentAppHlper
422
+ class MockDocumentAppHelper
423
423
  include Blacklight::Solr::Document
424
424
  end
425
425
  module MockExtension
@@ -432,10 +432,10 @@ describe BlacklightHelper do
432
432
  def export_as_weirder ; "weirder" ; end
433
433
  def export_as_weird_dup ; "weird_dup" ; end
434
434
  end
435
- MockDocumentAppHlper.use_extension(MockExtension)
435
+ MockDocumentAppHelper.use_extension(MockExtension)
436
436
  before(:each) do
437
437
  @doc_id = "MOCK_ID1"
438
- @document = MockDocumentAppHlper.new(:id => @doc_id)
438
+ @document = MockDocumentAppHelper.new(:id => @doc_id)
439
439
  render_params = {:controller => "controller", :action => "action"}
440
440
  helper.stub!(:params).and_return(render_params)
441
441
  end
@@ -2,65 +2,69 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
  describe CatalogHelper do
3
3
  include CatalogHelper
4
4
 
5
- def mock_collection args
5
+ def mock_response args
6
6
  current_page = args[:current_page] || 1
7
7
  per_page = args[:per_page] || 10
8
8
  total = args[:total]
9
- arr = (1..total).to_a
9
+ start = (current_page - 1) * per_page
10
10
 
11
- page_results = WillPaginate::Collection.create(current_page, per_page, total) do |pager|
12
- pager.replace(arr.slice(pager.offset, pager.per_page))
13
- end
11
+ mock_response = mock("RSolr::Ext::Response")
12
+ mock_response.stub!(:total).and_return(total)
13
+ mock_response.stub!(:rows).and_return(per_page)
14
+ mock_response.stub!(:start).and_return(start)
15
+ mock_response.stub!(:docs).and_return((1..total).to_a.slice(start, per_page))
16
+
17
+ mock_response
14
18
  end
15
19
 
16
- describe "page_entries_info" do
20
+ describe "render_pagination_info" do
17
21
  before(:all) do
18
22
  end
19
23
 
20
24
  it "with no results" do
21
- @collection = mock_collection :total => 0
25
+ @response = mock_response :total => 0
22
26
 
23
- html = page_entries_info(@collection, { :entry_name => 'entry_name' })
27
+ html = render_pagination_info(@response, { :entry_name => 'entry_name' })
24
28
  html.should == "No entry_names found"
25
29
  html.html_safe?.should == true
26
30
  end
27
31
 
28
32
  it "with a single result" do
29
- @collection = mock_collection :total => 1
33
+ @response = mock_response :total => 1
30
34
 
31
- html = page_entries_info(@collection, { :entry_name => 'entry_name' })
35
+ html = render_pagination_info(@response, { :entry_name => 'entry_name' })
32
36
  html.should == "Displaying <b>1</b> entry_name"
33
37
  html.html_safe?.should == true
34
38
  end
35
39
 
36
40
  it "with a single page of results" do
37
- @collection = mock_collection :total => 7
41
+ @response = mock_response :total => 7
38
42
 
39
- html = page_entries_info(@collection, { :entry_name => 'entry_name' })
43
+ html = render_pagination_info(@response, { :entry_name => 'entry_name' })
40
44
  html.should == "Displaying <b>all 7</b> entry_names"
41
45
  html.html_safe?.should == true
42
46
  end
43
47
 
44
48
  it "on the first page of multiple pages of results" do
45
- @collection = mock_collection :total => 15, :per_page => 10
49
+ @response = mock_response :total => 15, :per_page => 10
46
50
 
47
- html = page_entries_info(@collection, { :entry_name => 'entry_name' })
51
+ html = render_pagination_info(@response, { :entry_name => 'entry_name' })
48
52
  html.should == "Displaying entry_names <b>1 - 10</b> of <b>15</b>"
49
53
  html.html_safe?.should == true
50
54
  end
51
55
 
52
56
  it "on the second page of multiple pages of results" do
53
- @collection = mock_collection :total => 47, :per_page => 10, :current_page => 2
57
+ @response = mock_response :total => 47, :per_page => 10, :current_page => 2
54
58
 
55
- html = page_entries_info(@collection, { :entry_name => 'entry_name' })
59
+ html = render_pagination_info(@response, { :entry_name => 'entry_name' })
56
60
  html.should == "Displaying entry_names <b>11 - 20</b> of <b>47</b>"
57
61
  html.html_safe?.should == true
58
62
  end
59
63
 
60
64
  it "on the last page of results" do
61
- @collection = mock_collection :total => 47, :per_page => 10, :current_page => 5
65
+ @response = mock_response :total => 47, :per_page => 10, :current_page => 5
62
66
 
63
- html = page_entries_info(@collection, { :entry_name => 'entry_name' })
67
+ html = render_pagination_info(@response, { :entry_name => 'entry_name' })
64
68
  html.should == "Displaying entry_names <b>41 - 47</b> of <b>47</b>"
65
69
  html.html_safe?.should == true
66
70
  end
@@ -151,6 +151,8 @@ describe 'Blacklight::SolrHelper' do
151
151
  params = @solr_helper.solr_search_params(:f => @multi_facets)
152
152
 
153
153
  @multi_facets.each_pair do |facet_field, value_list|
154
+ value_list ||= []
155
+ value_list = [value_list] unless value_list.respond_to? :each
154
156
  value_list.each do |value|
155
157
  params[:fq].should include("{!raw f=#{facet_field}}#{value}" )
156
158
  end
@@ -164,6 +166,8 @@ describe 'Blacklight::SolrHelper' do
164
166
  params = @solr_helper.solr_search_params(:q => @mult_word_query, :f => @multi_facets)
165
167
 
166
168
  @multi_facets.each_pair do |facet_field, value_list|
169
+ value_list ||= []
170
+ value_list = [value_list] unless value_list.respond_to? :each
167
171
  value_list.each do |value|
168
172
  params[:fq].should include("{!raw f=#{facet_field}}#{value}" )
169
173
  end
@@ -686,7 +690,7 @@ describe 'Blacklight::SolrHelper' do
686
690
  @response2.docs.size.should == 1
687
691
  end
688
692
  it 'should have the expected value in the id field' do
689
- @document.get(:id).should == @doc_id
693
+ @document.id.should == @doc_id
690
694
  end
691
695
  it 'should have non-nil values for required fields set in initializer' do
692
696
  @document.get(Blacklight.config[:show][:html_title]).should_not == nil
@@ -699,9 +703,22 @@ describe 'Blacklight::SolrHelper' do
699
703
  Blacklight.config[:show_fields][:field_names].length.should > 0
700
704
  Blacklight.config[:show_fields][:field_names][0].should_not == nil
701
705
  end
706
+ end
702
707
 
703
-
704
-
708
+ describe "Get Document by custom unique id" do
709
+ =begin
710
+ # Can't test this properly without updating the "document" request handler in solr
711
+ it "should respect the configuration-supplied unique id" do
712
+ SolrDocument.should_receive(:unique_key).and_return("title_display")
713
+ @response, @document = @solr_helper.get_solr_response_for_doc_id('"Strong Medicine speaks"')
714
+ @document.id.should == '"Strong Medicine speaks"'
715
+ @document.get(:id).should == 2007020969
716
+ end
717
+ =end
718
+ it "should respect the configuration-supplied unique id" do
719
+ doc_params = @solr_helper.solr_doc_params('"Strong Medicine speaks"')
720
+ doc_params[:id].should == '"Strong Medicine speaks"'
721
+ end
705
722
  end
706
723
 
707
724
  # NOTE: some of these repeated fields could be in a shared behavior, but the
@@ -731,7 +748,7 @@ describe 'Blacklight::SolrHelper' do
731
748
  =end
732
749
 
733
750
  it 'should have a doc id field' do
734
- @doc.get(:id).should_not == nil
751
+ @doc.id.should_not == nil
735
752
  end
736
753
 
737
754
  it 'should have non-nil values for required fields set in initializer' do
@@ -742,7 +759,7 @@ describe 'Blacklight::SolrHelper' do
742
759
 
743
760
  it "should limit search result by facets when supplied" do
744
761
  doc2 = @solr_helper.get_single_doc_via_search(@doc_row , :q => @all_docs_query, :f => @multi_facets)
745
- doc2.get(:id).should_not == nil
762
+ doc2.id.should_not == nil
746
763
  end
747
764
 
748
765
  end
@@ -18,6 +18,13 @@ describe "Blacklight::Solr::Document" do
18
18
  end
19
19
  end
20
20
 
21
+ context "Unique Key" do
22
+ it "should use a configuration-defined document unique key" do
23
+ MockDocument.should_receive(:unique_key).and_return(:my_unique_key)
24
+ @document = MockDocument.new :id => 'asdf', :my_unique_key => '1234'
25
+ @document.id.should == '1234'
26
+ end
27
+ end
21
28
 
22
29
  context "Extendability" do
23
30
  before(:each) do
@@ -27,7 +34,7 @@ describe "Blacklight::Solr::Document" do
27
34
 
28
35
  it "should let you register an extension" do
29
36
  MockDocument.use_extension(MockExtension) { |doc| true }
30
-
37
+
31
38
  MockDocument.registered_extensions.find {|a| a[:module_obj] == MockExtension}.should_not be_nil
32
39
  end
33
40
  it "should let you register an extension with a nil condition proc" do
@@ -37,39 +44,39 @@ describe "Blacklight::Solr::Document" do
37
44
  it "should apply an extension whose condition is met" do
38
45
  MockDocument.use_extension(MockExtension) {|doc| true}
39
46
  doc = MockDocument.new()
40
-
41
- doc.methods.find {|name| name =="my_extension_method"}.should_not be_nil
42
- doc.my_extension_method.should == "my_extension_results"
47
+
48
+ doc.methods.find {|name| name.to_s == "my_extension_method"}.should_not be_nil
49
+ doc.my_extension_method.to_s.should == "my_extension_results"
43
50
  end
44
51
  it "should apply an extension based on a Solr field" do
45
52
  MockDocument.use_extension(MockExtension) {|doc| doc.key?(:required_key)}
46
53
 
47
54
  with_extension = MockDocument.new(:required_key => "value")
48
- with_extension.my_extension_method.should == "my_extension_results"
55
+ with_extension.my_extension_method.to_s.should == "my_extension_results"
49
56
 
50
57
  without_extension = MockDocument.new(:other_key => "value")
51
- without_extension.methods.find {|name| name == "my_extension_method"}.should be_nil
58
+ without_extension.methods.find {|name| name.to_s == "my_extension_method"}.should be_nil
52
59
 
53
60
  end
54
61
  it "should not apply an extension whose condition is not met" do
55
62
  MockDocument.use_extension(MockExtension) {|doc| false}
56
63
  doc = MockDocument.new()
57
64
 
58
- doc.methods.find {|name| name == "my_extension_method"}.should be_nil
65
+ doc.methods.find {|name| name.to_s == "my_extension_method"}.should be_nil
59
66
  end
60
67
  it "should treat a nil condition as always applyable" do
61
68
  MockDocument.use_extension(MockExtension)
62
69
 
63
70
  doc = MockDocument.new()
64
71
 
65
- doc.methods.find {|name | name=="my_extension_method"}.should_not be_nil
72
+ doc.methods.find {|name | name.to_s =="my_extension_method"}.should_not be_nil
66
73
  doc.my_extension_method.should == "my_extension_results"
67
74
  end
68
75
  it "should let last extension applied override earlier extensions" do
69
76
  MockDocument.use_extension(MockExtension)
70
77
  MockDocument.use_extension(MockSecondExtension)
71
78
 
72
- MockDocument.new().my_extension_method.should == "override"
79
+ MockDocument.new().my_extension_method.to_s.should == "override"
73
80
  end
74
81
 
75
82
  describe "extension_parameters class-level hash" do