hydra-head 3.0.1 → 3.1.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/Gemfile.lock +54 -20
  2. data/HISTORY.textile +0 -7
  3. data/app/controllers/assets_controller.rb +1 -2
  4. data/app/controllers/contributors_controller.rb +2 -2
  5. data/app/controllers/downloads_controller.rb +1 -3
  6. data/app/controllers/file_assets_controller.rb +2 -4
  7. data/app/controllers/generic_content_objects_controller.rb +1 -2
  8. data/app/controllers/get_controller.rb +1 -3
  9. data/app/controllers/permissions_controller.rb +14 -28
  10. data/app/models/file_asset.rb +6 -2
  11. data/app/views/catalog/_edit_partials/_default.html.erb +5 -5
  12. data/app/views/contributors/_index.html.erb +1 -1
  13. data/app/views/generic_content_objects/_show_description.html.erb +3 -3
  14. data/app/views/mods_assets/_publication_form.html.erb +2 -2
  15. data/app/views/mods_assets/_show_contributors.html.erb +4 -4
  16. data/app/views/mods_assets/_show_description.html.erb +4 -4
  17. data/app/views/mods_assets/_show_publication.html.erb +2 -2
  18. data/app/views/permissions/_edit_person_permissions.html.erb +1 -1
  19. data/app/views/permissions/_index.html.erb +2 -2
  20. data/hydra-head.gemspec +3 -4
  21. data/lib/generators/hydra/head_generator.rb +2 -3
  22. data/lib/generators/hydra/templates/config/initializers/action_dispatch_http_upload_monkey_patch.rb +12 -0
  23. data/lib/generators/hydra/templates/config/initializers/blacklight_config.rb +0 -7
  24. data/lib/generators/hydra/templates/solr_conf/conf/schema.xml +1 -7
  25. data/lib/generators/hydra/templates/solr_conf/conf/solrconfig.xml +55 -117
  26. data/lib/hydra/access_controls_enforcement.rb +5 -47
  27. data/lib/hydra/catalog.rb +1 -1
  28. data/lib/hydra/common_mods_index_methods.rb +0 -1
  29. data/lib/hydra/file_assets_helper.rb +0 -1
  30. data/lib/hydra/generic_content.rb +7 -6
  31. data/lib/hydra/model_methods.rb +7 -6
  32. data/lib/hydra/rights_metadata.rb +2 -2
  33. data/lib/hydra-head/version.rb +1 -1
  34. data/lib/mediashelf/active_fedora_helper.rb +0 -10
  35. data/lib/railties/hydra-fixtures.rake +14 -18
  36. data/lib/railties/hyhead_rspec.rake +0 -10
  37. data/solr_conf/conf/schema.xml +0 -2
  38. data/solr_conf/conf/solrconfig.xml +29 -116
  39. data/tasks/hydra-head.rake +6 -6
  40. data/test_support/features/absent_model_search_result.feature +8 -2
  41. data/test_support/features/step_definitions/edit_metadata_steps.rb +1 -1
  42. data/test_support/fixtures/small_file.txt +1 -0
  43. data/test_support/spec/controllers/catalog_controller_spec.rb +16 -15
  44. data/test_support/spec/controllers/file_assets_controller_spec.rb +7 -14
  45. data/test_support/spec/controllers/permissions_controller_spec.rb +12 -4
  46. data/test_support/spec/helpers/access_controls_enforcement_spec.rb +0 -77
  47. data/test_support/spec/helpers/hydra_model_methods_spec.rb +9 -4
  48. data/test_support/spec/integration/file_asset_spec.rb +115 -102
  49. data/test_support/spec/lib/active_fedora_helper_spec.rb +1 -1
  50. data/test_support/spec/models/audio_asset_spec.rb +3 -3
  51. data/test_support/spec/models/file_asset_spec.rb +6 -5
  52. data/test_support/spec/models/generic_content_spec.rb +1 -2
  53. data/test_support/spec/models/generic_image_spec.rb +1 -1
  54. data/test_support/spec/models/hydra_rights_metadata_spec.rb +8 -3
  55. data/test_support/spec/models/image_asset_spec.rb +3 -3
  56. data/test_support/spec/models/mods_asset_spec.rb +3 -3
  57. data/test_support/spec/models/video_asset_spec.rb +3 -3
  58. data/vendor/cache/{active-fedora-3.0.7.gem → active-fedora-3.1.0.rc1.gem} +0 -0
  59. data/vendor/cache/akami-1.0.0.gem +0 -0
  60. data/vendor/cache/factory_girl-2.2.0.gem +0 -0
  61. data/vendor/cache/ffi-1.0.10.gem +0 -0
  62. data/vendor/cache/gherkin-2.5.4.gem +0 -0
  63. data/vendor/cache/gyoku-0.4.4.gem +0 -0
  64. data/vendor/cache/httpi-0.9.5.gem +0 -0
  65. data/vendor/cache/jettywrapper-1.0.1.gem +0 -0
  66. data/vendor/cache/nori-1.0.2.gem +0 -0
  67. data/vendor/cache/rdf-0.3.4.1.gem +0 -0
  68. data/vendor/cache/rdf-rdfxml-0.3.5.gem +0 -0
  69. data/vendor/cache/rdoc-3.11.gem +0 -0
  70. data/vendor/cache/rspec-2.7.0.gem +0 -0
  71. data/vendor/cache/rspec-core-2.7.1.gem +0 -0
  72. data/vendor/cache/rspec-expectations-2.7.0.gem +0 -0
  73. data/vendor/cache/rspec-mocks-2.7.0.gem +0 -0
  74. data/vendor/cache/rspec-rails-2.7.0.gem +0 -0
  75. data/vendor/cache/rubydora-0.1.9.gem +0 -0
  76. data/vendor/cache/savon-0.9.7.gem +0 -0
  77. data/vendor/cache/wasabi-2.0.0.gem +0 -0
  78. metadata +94 -93
  79. data/RELEASE_NOTES.textile +0 -8
  80. data/vendor/cache/factory_girl-2.1.2.gem +0 -0
  81. data/vendor/cache/ffi-1.0.9.gem +0 -0
  82. data/vendor/cache/gherkin-2.5.2.gem +0 -0
  83. data/vendor/cache/jettywrapper-0.0.10.gem +0 -0
  84. data/vendor/cache/rcov-0.9.11.gem +0 -0
  85. data/vendor/cache/rdoc-3.10.gem +0 -0
  86. data/vendor/cache/rspec-2.6.0.gem +0 -0
  87. data/vendor/cache/rspec-core-2.6.4.gem +0 -0
  88. data/vendor/cache/rspec-expectations-2.6.0.gem +0 -0
  89. data/vendor/cache/rspec-mocks-2.6.0.gem +0 -0
  90. data/vendor/cache/rspec-rails-2.6.1.gem +0 -0
@@ -82,121 +82,36 @@
82
82
  </lst>
83
83
  </requestHandler>
84
84
 
85
- <!-- Searching ("All Fields") -->
86
- <requestHandler name="search" class="solr.SearchHandler" default="true">
87
- <lst name="defaults">
88
- <str name="defType">dismax</str>
89
- <str name="echoParams">explicit</str>
90
- <str name="q.alt">*:*</str>
91
- <str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str>
92
- <!-- this qf and pf are used by default, if not otherwise specified by
93
- client. The default blacklight_config will use these for the
94
- "keywords" search. See the author_qf/author_pf, title_qf, etc
95
- below, which the default blacklight_config will specify for
96
- those searches. You may also be interested in:
97
- http://wiki.apache.org/solr/LocalParams
98
- -->
99
- <str name="qf">
100
- id
101
- title_t^25000
102
- text
103
- active_fedora_model_s
104
- object_type_facet
105
- </str>
106
- <str name="pf">
107
- id
108
- title_t^250000
109
- text^10
110
- active_fedora_model_s
111
- object_type_facet
112
- </str>
113
- <str name="author_qf">
114
- author_unstem_search^200
115
- author_addl_unstem_search^50
116
- author_t^20
117
- author_addl_t
118
- </str>
119
- <str name="author_pf">
120
- author_unstem_search^2000
121
- author_addl_unstem_search^500
122
- author_t^200
123
- author_addl_t^10
124
- </str>
125
- <str name="title_qf">
126
- title_unstem_search^50000
127
- subtitle_unstem_search^25000
128
- title_addl_unstem_search^10000
129
- title_t^5000
130
- subtitle_t^2500
131
- title_addl_t^100
132
- title_added_entry_unstem_search^50
133
- title_added_entry_t^10
134
- title_series_unstem_search^5
135
- title_series_t
136
- </str>
137
- <str name="title_pf">
138
- title_unstem_search^500000
139
- subtitle_unstem_search^250000
140
- title_addl_unstem_search^100000
141
- title_t^50000
142
- subtitle_t^25000
143
- title_addl_t^1000
144
- title_added_entry_unstem_search^500
145
- title_added_entry_t^100
146
- title_series_t^50
147
- title_series_unstem_search^10
148
- </str>
149
- <str name="subject_qf">
150
- subject_topic_unstem_search^200
151
- subject_unstem_search^125
152
- subject_topic_facet^100
153
- subject_t^50
154
- subject_addl_unstem_search^10
155
- subject_addl_t
156
- </str>
157
- <str name="subject_pf">
158
- subject_topic_unstem_search^2000
159
- subject_unstem_search^1250
160
- subject_t^1000
161
- subject_topic_facet^500
162
- subject_addl_unstem_search^100
163
- subject_addl_t^10
164
- </str>
165
-
166
-
167
- <int name="ps">3</int>
168
- <float name="tie">0.01</float>
169
-
170
- <!-- NOT using marc_display because it is large and will slow things down for search results -->
171
- <str name="fl">
172
- *,score
173
- </str>
174
-
175
- <str name="facet">true</str>
176
- <str name="facet.mincount">1</str>
177
- <str name="facet.limit">10</str>
178
- <str name="facet.field">format</str>
179
- <str name="facet.field">lc_1letter_facet</str>
180
- <str name="facet.field">lc_alpha_facet</str>
181
- <str name="facet.field">lc_b4cutter_facet</str>
182
- <str name="facet.field">language_facet</str>
183
- <str name="facet.field">pub_date</str>
184
- <str name="facet.field">subject_era_facet</str>
185
- <str name="facet.field">subject_geo_facet</str>
186
- <str name="facet.field">subject_topic_facet</str>
85
+ <!-- For complete comments from the Solr project example solrconfig.xml:
86
+ http://svn.apache.org/repos/asf/lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml
87
+ See also:
88
+ http://wiki.apache.org/solr/SolrConfigXml
89
+ -->
187
90
 
188
- <str name="spellcheck">true</str>
189
- <str name="spellcheck.dictionary">default</str>
190
- <str name="spellcheck.onlyMorePopular">true</str>
191
- <str name="spellcheck.extendedResults">true</str>
192
- <str name="spellcheck.collate">false</str>
193
- <str name="spellcheck.count">5</str>
194
- </lst>
195
- <arr name="last-components">
196
- <str>spellcheck</str>
197
- </arr>
198
- </requestHandler>
199
-
91
+ <requestHandler name="search" class="solr.SearchHandler" default="true">
92
+ <lst name="defaults">
93
+ <!-- Making defType lucene to exclude file assets -->
94
+ <str name="defType">lucene</str>
95
+ <!-- lucene params -->
96
+ <str name="df">has_model_s</str>
97
+ <str name="q.op">AND</str>
98
+ <!-- dismax params -->
99
+ <str name="mm"> 2&lt;-1 5&lt;-2 6&lt;90% </str>
100
+ <str name="q.alt">*:*</str>
101
+ <str name="qf_dismax">id^0.8 id_t^0.8 title_t^0.3 mods_t^0.2</str>
102
+ <str name="pf_dismax">id^0.9 id_t^0.9 title_t^0.5 mods_t^0.2</str>
103
+ <int name="ps">100</int>
104
+ <float name="tie">0.01</float>
105
+ <!-- general -->
106
+ <str name="facet">on</str>
107
+ <str name="facet.mincount">1</str>
108
+ <str name="echoParams">explicit</str>
109
+ <str name="fl">
110
+ *,score
111
+ </str>
112
+ </lst>
113
+ </requestHandler>
114
+
200
115
  <requestHandler name="public_search" class="solr.SearchHandler" >
201
116
  <lst name="defaults">
202
117
  <!-- Making defType lucene to exclude file assets -->
@@ -207,8 +122,6 @@
207
122
  <!-- dismax params -->
208
123
  <str name="mm"> 2&lt;-1 5&lt;-2 6&lt;90% </str>
209
124
  <str name="q.alt">*:*</str>
210
- <str name="qf">id^0.8 id_t^0.8 format text^0.3 journal_issn_t</str>
211
- <str name="pf">id^0.9 id_t^0.9 text^0.5 journal_issn_t</str>
212
125
  <str name="qf_dismax">id^0.8 id_t^0.8 format text^0.3</str>
213
126
  <str name="pf_dismax">id^0.9 id_t^0.9 text^0.5</str>
214
127
  <int name="ps">100</int>
@@ -180,19 +180,19 @@ namespace :hyhead do
180
180
  FileUtils.cp_r(File.join('..','..','test_support','fixtures'), File.join('.','test_support','fixtures'))
181
181
 
182
182
  puts "Executing bundle install --local"
183
- %x[bundle install --local]
183
+ puts %x[bundle install --local]
184
184
  errors << 'Error running bundle install in test app' unless $?.success?
185
185
 
186
186
  puts "Installing cucumber in test app"
187
- %x[rails g cucumber:install]
187
+ puts %x[rails g cucumber:install]
188
188
  errors << 'Error installing cucumber in test app' unless $?.success?
189
189
 
190
190
  puts "generating default blacklight install"
191
- %x[rails generate blacklight --devise]
191
+ puts %x[rails generate blacklight --devise]
192
192
  errors << 'Error generating default blacklight install' unless $?.success?
193
193
 
194
194
  puts "generating default hydra-head install"
195
- %x[rails generate hydra:head -df] # using -f to force overwriting of solr.yml
195
+ puts %x[rails generate hydra:head -df] # using -f to force overwriting of solr.yml
196
196
  errors << 'Error generating default hydra-head install' unless $?.success?
197
197
 
198
198
  # set log_level to :warn in the test app's test environment. (:debug is too verbose)
@@ -201,7 +201,7 @@ namespace :hyhead do
201
201
 
202
202
  puts "Running rake db:migrate"
203
203
  %x[rake db:migrate]
204
- %x[rake db:migrate RAILS_ENV=test]
204
+ %x[rake db:test:prepare]
205
205
  raise "Errors: #{errors.join("; ")}" unless errors.empty?
206
206
 
207
207
 
@@ -223,7 +223,7 @@ namespace :hyhead do
223
223
  task :test => [:use_test_app] do
224
224
 
225
225
  puts "Running rspec tests"
226
- puts %x[rake hyhead:spec:rcov]
226
+ puts %x[rake hyhead:spec]
227
227
  rspec_success = $?.success?
228
228
 
229
229
  puts "Running cucumber tests"
@@ -1,8 +1,14 @@
1
1
  Feature: Objects Without Models - Search Results
2
2
  I want to see appropriate information in search results for objects without an (active)fedora model
3
3
 
4
- # Objects without a model, are not ever displayed because they don't have rightsMetadata
5
-
4
+ Scenario: Have a Search Result that is an Object Without a Model
5
+ Given I am logged in as "archivist1@example.com"
6
+ And I am on the home page
7
+ And I fill in "q" with "test"
8
+ When I press "submit"
9
+ Then I should see a link to "the show document page for hydra:test_no_model"
10
+
11
+ # you can't see this object unless you are an editor
6
12
  Scenario: html5 valid - unauthenticated
7
13
  When I am on the home page
8
14
  And I fill in "q" with "test"
@@ -48,7 +48,7 @@ Then /^I should see a "([^"]*)" button(?: within "([^"]*)")?$/ do |button_locato
48
48
  end
49
49
 
50
50
  Given /^that "([^"]*)" has been loaded into fedora$/ do |pid|
51
- Hydra::FixtureLoader.new('test_support/fixtures').reload(pid)
51
+ ActiveFedora::FixtureLoader.new('test_support/fixtures').reload(pid)
52
52
 
53
53
  end
54
54
 
@@ -0,0 +1 @@
1
+ small
@@ -60,10 +60,8 @@ describe CatalogController do
60
60
 
61
61
  describe "access controls" do
62
62
  before(:all) do
63
- @public_only_results = Blacklight.solr.find Hash[:fq=>"access_t:public"]
64
- # @public_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"public"}]
65
- # @private_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"private"}]
66
- @private_only_results = Blacklight.solr.find Hash[:fq=>"access_t:private"]
63
+ @public_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"public"}]
64
+ @private_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"private"}]
67
65
  end
68
66
 
69
67
  it "should only return public documents if role does not have permissions" do
@@ -74,8 +72,7 @@ describe CatalogController do
74
72
  it "should return all documents if role does have permissions" do
75
73
  User.any_instance.stubs(:login).returns("BigWig")
76
74
  mock_user = User.new
77
- # session[:superuser_mode] = true
78
- mock_user.stubs(:is_being_superuser?).returns(true)
75
+ session[:superuser_mode] = true
79
76
  controller.stubs(:current_user).returns(mock_user)
80
77
  get :index
81
78
  assigns(:document_list).count.should > @public_only_results.docs.count
@@ -87,24 +84,28 @@ describe CatalogController do
87
84
  describe "load_fedora_document" do
88
85
 
89
86
  it "should load @document_fedora and @file_assets" do
90
- controller.stubs(:params).returns({:id=>"foo:id"})
91
- stub_base_object = stub("Base Object")
92
- ActiveFedora::ContentModel.expects(:known_models_for).with( stub_base_object ).returns( [ModsAsset] )
93
- stub_mods_asset = stub("MODS Asset")
94
- stub_mods_asset.expects(:file_objects).with(:response_format=>:solr).returns("file assets response")
87
+ # controller.stubs(:params).returns({:id=>"foo:id"})
88
+ # stub_base_object = stub("Base Object")
89
+ # ActiveFedora::ContentModel.expects(:known_models_for).with( stub_base_object ).returns( [ModsAsset] )
90
+ # stub_mods_asset = stub("MODS Asset")
91
+ # stub_mods_asset.expects(:file_objects).with(:response_format=>:solr).returns("file assets response")
95
92
 
96
93
  # Note: Had to stub Fedora::Repository.instance.find_model rather than stubbing ActiveFedora::Base.load_instance and ModsAsset.load_instance because
97
94
  # Mocha was not unstubbing the ModsAsset class
98
95
  #
99
96
  # ActiveFedora::Base.stubs(:load_instance).with("foo:id").returns( stub_base_object )
100
97
  # ModsAsset.stubs(:load_instance).with("foo:id").returns( stub_mods_asset )
101
- Fedora::Repository.instance.expects(:find_model).with("foo:id", ActiveFedora::Base).returns( stub_base_object )
102
- Fedora::Repository.instance.expects(:find_model).with("foo:id", ModsAsset).returns( stub_mods_asset )
98
+ # Fedora::Repository.instance.expects(:find_model).with("foo:id", ActiveFedora::Base).returns( stub_base_object )
99
+ # Fedora::Repository.instance.expects(:find_model).with("foo:id", ModsAsset).returns( stub_mods_asset )
103
100
 
101
+ controller.params[:id]='hydrangea:fixture_mods_article1'
104
102
  controller.load_fedora_document
105
103
 
106
- assigns[:document_fedora].should == stub_mods_asset
107
- assigns[:file_assets].should == "file assets response"
104
+ assigns[:document_fedora].class.should == ModsAsset
105
+ assigns[:document_fedora].pid.should == 'hydrangea:fixture_mods_article1'
106
+ assigns[:file_assets].class.should == Solr::Response::Standard
107
+ assigns[:file_assets].hits.size.should == 1
108
+ assigns[:file_assets].hits.first["id"].should == "hydrangea:fixture_uploaded_svg1"
108
109
  end
109
110
  end
110
111
 
@@ -65,12 +65,7 @@ describe FileAssetsController do
65
65
  end
66
66
 
67
67
  describe "index" do
68
- before(:each) do
69
- Fedora::Repository.stubs(:instance).returns(stub_everything)
70
- end
71
-
72
68
  it "should be refined further!"
73
-
74
69
  end
75
70
  describe "new" do
76
71
  it "should return the file uploader view"
@@ -117,11 +112,11 @@ describe FileAssetsController do
117
112
  controller.expects(:model_config).at_least_once.returns(controller.workflow_config[:mods_assets])
118
113
  xhr :post, :create, :container_id=>"_PID_", :wf_step=>"files"
119
114
  response.should redirect_to(:controller=>"catalog", :id=>"_PID_", :action => 'edit', :wf_step=>"permissions")
120
- response.flash[:notice].should == "You must specify a file to upload."
115
+ request.flash[:notice].should == "You must specify a file to upload."
121
116
  end
122
117
  it "should display a message that you need to select a file to upload if no Filedata is provided" do
123
118
  xhr :post, :create
124
- response.flash[:notice].include?("You must specify a file to upload.").should be_true
119
+ request.flash[:notice].include?("You must specify a file to upload.").should be_true
125
120
  end
126
121
 
127
122
  end
@@ -144,11 +139,10 @@ describe FileAssetsController do
144
139
 
145
140
  describe "integration tests - " do
146
141
  before(:all) do
147
- Fedora::Repository.register(ActiveFedora.fedora_config[:url])
148
142
  ActiveFedora::SolrService.register(ActiveFedora.solr_config[:url])
149
143
  @test_container = ActiveFedora::Base.new
150
- @test_container.add_relationship(:is_member_of, "foo:1")
151
- @test_container.add_relationship(:has_collection_member, "foo:2")
144
+ @test_container.add_relationship(:is_member_of, "info:fedora/foo:1")
145
+ @test_container.add_relationship(:has_collection_member, "info:fedora/foo:2")
152
146
  @test_container.save
153
147
 
154
148
  @test_fa = FileAsset.new
@@ -182,13 +176,12 @@ describe FileAssetsController do
182
176
  end
183
177
 
184
178
  it "should set is_part_of relationship on the new File Asset pointing back at the container" do
185
-
186
- test_file = fixture("empty_file.txt")
179
+ test_file = fixture("small_file.txt")
187
180
  filename = "My File Name"
188
181
  test_file.expects(:original_filename).twice.returns("My File Name")
189
182
  post :create, {:Filedata=>[test_file], :Filename=>filename, :container_id=>@test_container.pid}
190
- assigns(:file_asset).relationships[:self][:is_part_of].should == ["info:fedora/#{@test_container.pid}"]
191
- retrieved_fa = FileAsset.load_instance(@test_fa.pid).relationships[:self][:is_part_of].should == ["info:fedora/#{@test_container.pid}"]
183
+ assigns(:file_asset).ids_for_outbound(:is_part_of).should == [@test_container.pid]
184
+ retrieved_fa = FileAsset.load_instance(@test_fa.pid).ids_for_outbound(:is_part_of).should == [@test_container.pid]
192
185
  end
193
186
  end
194
187
  end
@@ -30,15 +30,19 @@ describe PermissionsController do
30
30
  stub_solrizer = stub("solrizer", :solrize)
31
31
  Solrizer::Fedora::Solrizer.stubs(:new).returns(stub_solrizer)
32
32
  mock_ds = mock("Datastream")
33
- Hydra::RightsMetadata.stubs(:from_xml).returns(mock_ds)
33
+ Hydra::RightsMetadata.stubs(:from_xml)
34
+ Hydra::RightsMetadata.stubs(:new).returns(mock_ds)
34
35
  mock_ds.expects(:permissions).with({"person" => "_person_id_"}, "read")
35
36
  # mock_ds.expects(:update_permissions).with({"person"=>{"_person_id_"=>"read"}})
36
37
  mock_ds.stubs(:content)
37
38
  mock_ds.stubs(:pid=)
38
39
  mock_ds.stubs(:dsid=)
39
40
  mock_ds.stubs(:save)
41
+ mock_ds.stubs(:serialize!)
40
42
  mock_object = mock("object")
41
- mock_object.stubs(:datastreams_in_memory).returns({"rightsMetadata"=>mock_ds})
43
+ mock_object.stubs(:datastreams).returns({"rightsMetadata"=>mock_ds})
44
+ mock_inner = mock('Mock Inner')
45
+ mock_object.stubs(:inner_object).returns(mock_inner)
42
46
 
43
47
  ActiveFedora::Base.expects(:load_instance).with("_pid_").returns(mock_object)
44
48
 
@@ -52,14 +56,18 @@ describe PermissionsController do
52
56
  stub_solrizer = stub("solrizer", :solrize)
53
57
  Solrizer::Fedora::Solrizer.stubs(:new).returns(stub_solrizer)
54
58
  mock_ds = mock("Datastream")
55
- Hydra::RightsMetadata.stubs(:from_xml).returns(mock_ds)
59
+ Hydra::RightsMetadata.stubs(:from_xml)
60
+ Hydra::RightsMetadata.stubs(:new).returns(mock_ds)
56
61
  mock_ds.expects(:update_permissions).with({"group" => {"_group_id_"=>"discover"}})
57
62
  mock_ds.stubs(:content)
58
63
  mock_ds.stubs(:pid=)
59
64
  mock_ds.stubs(:dsid=)
65
+ mock_ds.stubs(:serialize!)
60
66
  mock_ds.stubs(:save)
61
67
  mock_object = mock("object")
62
- mock_object.stubs(:datastreams_in_memory).returns({"rightsMetadata"=>mock_ds})
68
+ mock_object.stubs(:datastreams).returns({"rightsMetadata"=>mock_ds})
69
+ mock_inner = mock('Mock Inner')
70
+ mock_object.stubs(:inner_object).returns(mock_inner)
63
71
 
64
72
  ActiveFedora::Base.expects(:load_instance).with("_pid_").returns(mock_object)
65
73
  # must define new routes that can handle url like this
@@ -2,83 +2,6 @@
2
2
  require File.expand_path( File.join( File.dirname(__FILE__),'..','spec_helper') )
3
3
 
4
4
  describe Hydra::AccessControlsEnforcement do
5
-
6
- describe "apply_gated_discovery" do
7
- before(:each) do
8
- @stub_user = User.new :email=>'archivist1@example.com'
9
- @stub_user.stubs(:is_being_superuser?).returns false
10
- @stub_user.stubs(:login).returns "fred"
11
- RoleMapper.stubs(:roles).with(@stub_user.login).returns(["archivist","researcher"])
12
- helper.stubs(:current_user).returns(@stub_user)
13
- @solr_parameters = {}
14
- @user_parameters = {}
15
- end
16
- it "should set query fields for the user id checking against the discover, access, read fields" do
17
- helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
18
- ["discover","edit","read"].each do |type|
19
- @solr_parameters[:fq].first.should match(/#{type}_access_person_t\:#{@stub_user.login}/)
20
- end
21
- end
22
- it "should set query fields for all roles the user is a member of checking against the discover, access, read fields" do
23
- helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
24
- ["discover","edit","read"].each do |type|
25
- @solr_parameters[:fq].first.should match(/#{type}_access_group_t\:archivist/)
26
- @solr_parameters[:fq].first.should match(/#{type}_access_group_t\:researcher/)
27
- end
28
- end
29
- # it "should filter out any content whose embargo date is in the future" do
30
- # helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
31
- # @solr_parameters[:fq].should include("-embargo_release_date_dt:[NOW TO *]")
32
- # end
33
- it "should allow content owners access to their embargoed content" do
34
- pending
35
- helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
36
- @solr_parameters[:fq].should include("(NOT embargo_release_date_dt:[NOW TO *]) OR depositor_t:#{@stub_user.login}")
37
-
38
- # @solr_parameters[:fq].should include("embargo_release_date_dt:[NOW TO *] AND depositor_t:#{current_user.login}) AND NOT (NOT depositor_t:#{current_user.login} AND embargo_release_date_dt:[NOW TO *]")
39
- end
40
-
41
- describe "for superusers" do
42
- it "should return superuser access level" do
43
- stub_user = User.new
44
- stub_user.stubs(:login).returns "suzie"
45
- stub_user.stubs(:is_being_superuser?).returns true
46
- RoleMapper.stubs(:roles).with(stub_user.login).returns(["archivist","researcher"])
47
- helper.stubs(:current_user).returns(stub_user)
48
- helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
49
- ["discover","edit","read"].each do |type|
50
- @solr_parameters[:fq].first.should match(/#{type}_access_person_t\:\[\* TO \*\]/)
51
- end
52
- end
53
- it "should not return superuser access to non-superusers" do
54
- stub_user = User.new
55
- stub_user.stubs(:login).returns "suzie"
56
- stub_user.stubs(:is_being_superuser?).returns false
57
- RoleMapper.stubs(:roles).with(stub_user.login).returns(["archivist","researcher"])
58
- helper.stubs(:current_user).returns(stub_user)
59
- helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
60
- ["discover","edit","read"].each do |type|
61
- @solr_parameters[:fq].should_not include("#{type}_access_person_t\:\[\* TO \*\]")
62
- end
63
- end
64
- end
65
-
66
- end
67
-
68
- describe "exclude_unwanted_models" do
69
- before(:each) do
70
- stub_user = User.new :email=>'archivist1@example.com'
71
- stub_user.stubs(:is_being_superuser?).returns false
72
- helper.stubs(:current_user).returns(stub_user)
73
- @solr_parameters = {}
74
- @user_parameters = {}
75
- end
76
- it "should set solr query parameters to filter out FileAssets" do
77
- helper.send(:exclude_unwanted_models, @solr_parameters, @user_parameters)
78
- @solr_parameters[:fq].should include("-has_model_s:\"info:fedora/afmodel:FileAsset\"")
79
- end
80
- end
81
-
82
5
  describe "build_lucene_query" do
83
6
 
84
7
  it "should return fields for all roles the user is a member of checking against the discover, access, read fields" do
@@ -10,7 +10,7 @@ describe Hydra::ModelMethods do
10
10
  prop_ds.expects(:depositor_values=).with("foouser")
11
11
  rights_ds.expects(:update_indexed_attributes).with([:edit_access, :person]=>"foouser")
12
12
 
13
- helper.stubs(:datastreams_in_memory).returns({"rightsMetadata"=>rights_ds,"properties"=>prop_ds})
13
+ helper.stubs(:datastreams).returns({"rightsMetadata"=>rights_ds,"properties"=>prop_ds})
14
14
  helper.apply_depositor_metadata("foouser")
15
15
  end
16
16
  end
@@ -36,13 +36,18 @@ describe Hydra::ModelMethods do
36
36
 
37
37
  describe "set_title" do
38
38
  it "should set the title if the descMetadata is a NokogiriDatastream that responds to :title term" do
39
- dm = Hydra::ModsArticle.new
39
+ obj = ActiveFedora::Base.new
40
+ dm = Hydra::ModsArticle.new(obj.inner_object, nil)
41
+ dm.stubs(:content).returns('')
40
42
  helper.stubs(:datastreams).returns("descMetadata"=>dm)
41
43
  helper.set_title("My title")
42
44
  dm.term_values(:title).should == ["My title"]
43
45
  end
44
46
  it "should set the title if the descMetadata is a MetadataDatastream with a title field defined" do
45
- dm = ActiveFedora::QualifiedDublinCoreDatastream.new
47
+ obj = ActiveFedora::Base.new
48
+ dm = ActiveFedora::QualifiedDublinCoreDatastream.new(obj.inner_object, nil)
49
+ dm.stubs(:content).returns('')
50
+ #dm = ActiveFedora::QualifiedDublinCoreDatastream.new nil, nil
46
51
  helper.stubs(:datastreams).returns("descMetadata"=>dm)
47
52
  helper.set_title("My title")
48
53
  dm.title_values.should == ["My title"]
@@ -55,7 +60,7 @@ describe Hydra::ModelMethods do
55
60
  prop_ds.expects(:respond_to?).with(:collection_values).returns(true)
56
61
  prop_ds.expects(:collection_values=).with("mods_asset")
57
62
 
58
- helper.stubs(:datastreams_in_memory).returns({"properties"=>prop_ds})
63
+ helper.stubs(:datastreams).returns({"properties"=>prop_ds})
59
64
  helper.set_collection_type("mods_asset")
60
65
  end
61
66
  end