sufia 0.0.1.pre2 → 0.0.1

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 (169) hide show
  1. data/Gemfile +2 -5
  2. data/README.md +44 -12
  3. data/app/assets/javascripts/{scholarsphere.js → sufia.js} +0 -0
  4. data/app/assets/stylesheets/{scholarsphere.css → sufia.css} +0 -0
  5. data/app/controllers/batch_controller.rb +2 -3
  6. data/app/controllers/batch_edits_controller.rb +4 -4
  7. data/app/controllers/dashboard_controller.rb +5 -3
  8. data/app/controllers/generic_files_controller.rb +77 -41
  9. data/app/controllers/users_controller.rb +9 -21
  10. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +2 -2
  11. data/app/helpers/sufia_helper.rb +23 -2
  12. data/app/models/datastreams/file_content_datastream.rb +17 -9
  13. data/app/models/generic_file.rb +1 -809
  14. data/app/views/_add_assets_links.html.erb +1 -1
  15. data/app/views/_user_util_links.html.erb +2 -2
  16. data/app/views/batch/_metadata.html.erb +16 -16
  17. data/app/views/batch/edit.html.erb +16 -10
  18. data/app/views/batch_edits/_metadata.html.erb +16 -16
  19. data/app/views/catalog/_index_partials/_list_files.html.erb +2 -2
  20. data/app/views/catalog/index.html.erb +5 -0
  21. data/app/views/dashboard/_facet_limit.html.erb +1 -1
  22. data/app/views/dashboard/_facet_pagination.html.erb +4 -4
  23. data/app/views/dashboard/_facet_selected.html.erb +1 -1
  24. data/app/views/dashboard/_index_partials/_list_files.html.erb +8 -8
  25. data/app/views/dashboard/_search_form.html.erb +1 -1
  26. data/app/views/dashboard/_sort_and_per_page.html.erb +1 -1
  27. data/app/views/dashboard/index.html.erb +0 -1
  28. data/app/views/generic_files/_breadcrumbs.html.erb +1 -1
  29. data/app/views/generic_files/_descriptions.html.erb +3 -3
  30. data/app/views/generic_files/_field_form +3 -3
  31. data/app/views/generic_files/_media_display.html.erb +5 -4
  32. data/app/views/generic_files/_permission.html.erb +5 -5
  33. data/app/views/generic_files/_versioning.html.erb +1 -1
  34. data/app/views/generic_files/edit.html.erb +2 -2
  35. data/app/views/generic_files/show.html.erb +3 -3
  36. data/app/views/static/versions.html.erb +1 -1
  37. data/app/views/users/edit.html.erb +5 -3
  38. data/app/views/users/index.html.erb +3 -3
  39. data/app/views/users/show.html.erb +6 -6
  40. data/config/jetty.yml +6 -0
  41. data/config/routes.rb +8 -4
  42. data/features/browse_dashboard_files.feature +11 -1
  43. data/features/browse_files.feature +6 -5
  44. data/features/contact_form.feature +4 -0
  45. data/features/display_dashboard.feature +6 -3
  46. data/features/ingest_upload_files.feature +2 -2
  47. data/features/step_definitions/fixture_steps.rb +6 -5
  48. data/features/step_definitions/scholarsphere.rb +24 -1
  49. data/features/step_definitions/user_steps.rb +2 -2
  50. data/features/step_definitions/web_steps.rb +1 -1
  51. data/features/support/env.rb +26 -0
  52. data/features/users.feature +18 -0
  53. data/lib/active_support/core_ext/marshal.rb +22 -0
  54. data/lib/generators/sufia/sufia_generator.rb +18 -2
  55. data/lib/generators/sufia/templates/catalog_controller.rb +3 -4
  56. data/{spec/support → lib/generators/sufia/templates}/config/redis.yml +0 -0
  57. data/lib/generators/sufia/templates/config/sufia.rb +68 -0
  58. data/lib/generators/sufia/templates/migrations/add_ldap_attrs_to_user.rb +41 -0
  59. data/lib/kaminari/helpers/tag.rb +11 -0
  60. data/lib/sufia.rb +30 -7
  61. data/lib/sufia/controller.rb +1 -5
  62. data/lib/sufia/generic_file.rb +200 -0
  63. data/lib/sufia/generic_file/audit.rb +119 -0
  64. data/lib/sufia/generic_file/characterization.rb +82 -0
  65. data/lib/sufia/generic_file/export.rb +339 -0
  66. data/lib/sufia/generic_file/permissions.rb +64 -0
  67. data/lib/sufia/generic_file/thumbnail.rb +68 -0
  68. data/{app/models → lib/sufia/jobs}/audit_job.rb +13 -3
  69. data/lib/sufia/jobs/batch_update_job.rb +86 -0
  70. data/lib/sufia/jobs/characterize_job.rb +35 -0
  71. data/{app/models → lib/sufia/jobs}/content_delete_event_job.rb +3 -1
  72. data/{app/models → lib/sufia/jobs}/content_deposit_event_job.rb +1 -1
  73. data/{app/models → lib/sufia/jobs}/content_new_version_event_job.rb +1 -1
  74. data/{app/models → lib/sufia/jobs}/content_restored_version_event_job.rb +8 -0
  75. data/{app/models → lib/sufia/jobs}/content_update_event_job.rb +1 -1
  76. data/{app/models → lib/sufia/jobs}/event_job.rb +7 -3
  77. data/{app/models → lib/sufia/jobs}/resolrize_job.rb +4 -2
  78. data/lib/sufia/jobs/transcode_video_job.rb +79 -0
  79. data/{app/models → lib/sufia/jobs}/unzip_job.rb +11 -3
  80. data/{app/models → lib/sufia/jobs}/user_edit_profile_event_job.rb +6 -0
  81. data/{app/models → lib/sufia/jobs}/user_follow_event_job.rb +9 -4
  82. data/{app/models → lib/sufia/jobs}/user_unfollow_event_job.rb +6 -0
  83. data/lib/sufia/queue/resque.rb +30 -0
  84. data/lib/sufia/role_mapper.rb +0 -1
  85. data/{app/models/characterize_job.rb → lib/sufia/solr_document_behavior.rb} +6 -7
  86. data/lib/sufia/user.rb +3 -3
  87. data/lib/sufia/version.rb +1 -1
  88. data/lib/tasks/fixtures.rake +38 -38
  89. data/lib/tasks/resque.rake +1 -0
  90. data/solr_conf/conf/solrconfig.xml +32 -1615
  91. data/solr_conf/solr.xml +1 -1
  92. data/spec/active_fedora/unsaved_digital_object_spec.rb +4 -4
  93. data/spec/config/host_to_vhost_spec.rb +4 -4
  94. data/spec/controllers/authorities_controller_spec.rb +1 -1
  95. data/spec/controllers/batch_controller_spec.rb +12 -10
  96. data/spec/controllers/catalog_controller_spec.rb +13 -13
  97. data/spec/controllers/dashboard_controller_spec.rb +15 -15
  98. data/spec/controllers/downloads_controller_spec.rb +14 -14
  99. data/spec/controllers/generic_files_controller_spec.rb +88 -46
  100. data/spec/controllers/mailbox_controller_spec.rb +2 -2
  101. data/spec/controllers/sessions_controller_spec.rb +1 -1
  102. data/spec/controllers/single_use_link_controller_spec.rb +18 -18
  103. data/spec/controllers/users_controller_spec.rb +47 -31
  104. data/spec/fixtures/countdown.avi +0 -0
  105. data/spec/fixtures/sufia/.gitignore +1 -0
  106. data/spec/fixtures/{scholarsphere → sufia}/bg_header.jpg +0 -0
  107. data/spec/fixtures/sufia/sufia_test1.descMeta.txt +12 -0
  108. data/spec/fixtures/{scholarsphere → sufia}/sufia_test1.foxml.erb +2 -2
  109. data/spec/fixtures/{scholarsphere/scholarsphere_test1.txt → sufia/sufia_test1.txt} +0 -0
  110. data/spec/fixtures/sufia/sufia_test2.descMeta.txt +12 -0
  111. data/spec/fixtures/{scholarsphere/scholarsphere_test2.docx → sufia/sufia_test2.docx} +0 -0
  112. data/spec/fixtures/{scholarsphere/scholarsphere_test2.foxml.erb → sufia/sufia_test2.foxml.erb} +6 -6
  113. data/spec/fixtures/sufia/sufia_test3.descMeta.txt +12 -0
  114. data/spec/fixtures/{scholarsphere/scholarsphere_test3.foxml.erb → sufia/sufia_test3.foxml.erb} +6 -6
  115. data/spec/fixtures/{scholarsphere/scholarsphere_test3.xls → sufia/sufia_test3.xls} +0 -0
  116. data/spec/fixtures/sufia/sufia_test4.descMeta.txt +12 -0
  117. data/spec/fixtures/{scholarsphere/scholarsphere_test4.foxml.erb → sufia/sufia_test4.foxml.erb} +6 -6
  118. data/spec/fixtures/{scholarsphere/scholarsphere_test4.pdf → sufia/sufia_test4.pdf} +0 -0
  119. data/spec/fixtures/sufia/sufia_test5.descMeta.txt +19 -0
  120. data/spec/fixtures/{scholarsphere → sufia}/sufia_test5.foxml.erb +3 -3
  121. data/spec/fixtures/{scholarsphere/scholarsphere_test5.mp3 → sufia/sufia_test5.mp3} +0 -0
  122. data/spec/fixtures/sufia/sufia_test5.txt +1 -0
  123. data/spec/fixtures/sufia/sufia_test6.descMeta.txt +12 -0
  124. data/spec/fixtures/{scholarsphere/scholarsphere_test6.foxml.erb → sufia/sufia_test6.foxml.erb} +6 -6
  125. data/spec/fixtures/{scholarsphere/scholarsphere_test6.jp2 → sufia/sufia_test6.jp2} +0 -0
  126. data/spec/fixtures/sufia/sufia_test6.txt +1 -0
  127. data/spec/fixtures/sufia_generic_stub.descMeta.txt +12 -0
  128. data/spec/fixtures/{scholarsphere_generic_stub.foxml.erb → sufia_generic_stub.foxml.erb} +3 -3
  129. data/spec/fixtures/sufia_generic_stub.txt +1 -0
  130. data/spec/lib/sufia/role_mapper_spec.rb +1 -1
  131. data/spec/models/audit_job_spec.rb +8 -11
  132. data/spec/models/batch_spec.rb +5 -5
  133. data/spec/models/batch_update_job_spec.rb +18 -15
  134. data/spec/models/checksum_audit_log_spec.rb +6 -19
  135. data/spec/models/event_jobs_spec.rb +23 -23
  136. data/spec/models/file_content_datastream_spec.rb +14 -14
  137. data/spec/models/fits_datastream_spec.rb +1 -1
  138. data/spec/models/generic_file_spec.rb +88 -41
  139. data/spec/models/single_use_link_spec.rb +3 -3
  140. data/spec/models/transcode_video_job_spec.rb +30 -0
  141. data/spec/models/unzip_job_spec.rb +6 -4
  142. data/spec/rake/{scholarsphere_fixtures_spec.rb → sufia_fixtures_spec.rb} +16 -16
  143. data/spec/routing/route_spec.rb +4 -8
  144. data/spec/spec_helper.rb +0 -7
  145. data/spec/support/Gemfile +4 -2
  146. data/spec/support/fedora_conf/fedora.fcfg +953 -0
  147. data/spec/support/lib/generators/test_app_generator.rb +1 -11
  148. data/sufia.gemspec +5 -3
  149. data/tasks/{scholarsphere-db.rake → sufia-db.rake} +1 -1
  150. data/tasks/{scholarsphere-dev.rake → sufia-dev.rake} +7 -3
  151. data/tasks/{scholarsphere-fixtures.rake → sufia-fixtures.rake} +43 -43
  152. data/tasks/{scholarsphere.rake → sufia.rake} +2 -2
  153. metadata +126 -95
  154. data/app/models/batch_update_job.rb +0 -82
  155. data/app/models/solr_document.rb +0 -50
  156. data/lib/sufia/permissions.rb +0 -43
  157. data/spec/fixtures/scholarsphere/scholarsphere_test1.descMeta.txt +0 -12
  158. data/spec/fixtures/scholarsphere/scholarsphere_test2.descMeta.txt +0 -12
  159. data/spec/fixtures/scholarsphere/scholarsphere_test3.descMeta.txt +0 -12
  160. data/spec/fixtures/scholarsphere/scholarsphere_test4.descMeta.txt +0 -12
  161. data/spec/fixtures/scholarsphere/scholarsphere_test5.descMeta.txt +0 -19
  162. data/spec/fixtures/scholarsphere/scholarsphere_test5.txt +0 -1
  163. data/spec/fixtures/scholarsphere/scholarsphere_test6.descMeta.txt +0 -12
  164. data/spec/fixtures/scholarsphere/scholarsphere_test6.txt +0 -1
  165. data/spec/fixtures/scholarsphere/sufia_scholarsphere1.descMeta.txt +0 -12
  166. data/spec/fixtures/scholarsphere/sufia_scholarsphere1.foxml.erb +0 -79
  167. data/spec/fixtures/scholarsphere/sufia_scholarsphere1.txt +0 -1
  168. data/spec/fixtures/scholarsphere_generic_stub.descMeta.txt +0 -12
  169. data/spec/fixtures/scholarsphere_generic_stub.txt +0 -1
@@ -16,17 +16,17 @@ require 'spec_helper'
16
16
 
17
17
  describe FileContentDatastream do
18
18
  before do
19
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
19
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
20
20
  @subject = FileContentDatastream.new(nil, 'content')
21
- @subject.stubs(:pid=>'my_pid')
22
- @subject.stubs(:dsVersionID=>'content.7')
21
+ @subject.stub(:pid=>'my_pid')
22
+ @subject.stub(:dsVersionID=>'content.7')
23
23
  end
24
24
  describe "version control" do
25
25
  before(:all) do
26
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
26
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
27
27
  f = GenericFile.new
28
28
  f.add_file_datastream(File.new(fixture_path + '/world.png'), :dsid=>'content')
29
- f.expects(:characterize_if_changed).yields
29
+ f.should_receive(:characterize_if_changed).and_yield
30
30
  f.apply_depositor_metadata('mjg36')
31
31
  f.save
32
32
  @file = GenericFile.find(f.pid)
@@ -52,7 +52,7 @@ describe FileContentDatastream do
52
52
  describe "add a version" do
53
53
  before(:all) do
54
54
  @file.add_file_datastream(File.new(fixture_path + '/world.png'), :dsid=>'content')
55
- @file.expects(:characterize_if_changed).yields
55
+ @file.should_receive(:characterize_if_changed).and_yield
56
56
  @file.save
57
57
  end
58
58
  it "should return two versions" do
@@ -73,25 +73,25 @@ describe FileContentDatastream do
73
73
  end
74
74
  it "should return an xml document" do
75
75
  repo = mock("repo")
76
- repo.stubs(:config=>{})
76
+ repo.stub(:config=>{})
77
77
  f = File.new(fixture_path + '/world.png')
78
78
  content = mock("file")
79
- content.stubs(:read=>f.read)
80
- content.stubs(:rewind=>f.rewind)
81
- @subject.expects(:content).times(5).returns(f)
79
+ content.stub(:read=>f.read)
80
+ content.stub(:rewind=>f.rewind)
81
+ @subject.should_receive(:content).exactly(5).times.and_return(f)
82
82
  xml = @subject.extract_metadata
83
83
  doc = Nokogiri::XML.parse(xml)
84
84
  doc.root.xpath('//ns:imageWidth/text()', {'ns'=>'http://hul.harvard.edu/ois/xml/ns/fits/fits_output'}).inner_text.should == '50'
85
85
  end
86
86
  it "should return expected results when invoked via HTTP" do
87
87
  repo = mock("repo")
88
- repo.stubs(:config=>{})
88
+ repo.stub(:config=>{})
89
89
  f = ActionDispatch::Http::UploadedFile.new(:tempfile => File.new(fixture_path + '/world.png'),
90
90
  :filename => 'world.png')
91
91
  content = mock("file")
92
- content.stubs(:read=>f.read)
93
- content.stubs(:rewind=>f.rewind)
94
- @subject.expects(:content).times(5).returns(f)
92
+ content.stub(:read=>f.read)
93
+ content.stub(:rewind=>f.rewind)
94
+ @subject.should_receive(:content).exactly(5).times.and_return(f)
95
95
  xml = @subject.extract_metadata
96
96
  doc = Nokogiri::XML.parse(xml)
97
97
  doc.root.xpath('//ns:identity/@mimetype', {'ns'=>'http://hul.harvard.edu/ois/xml/ns/fits/fits_output'}).first.value.should == 'image/png'
@@ -16,7 +16,7 @@ require 'spec_helper'
16
16
 
17
17
  describe FitsDatastream do
18
18
  before(:all) do
19
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
19
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
20
20
  @file = GenericFile.new
21
21
  @file.add_file_datastream(File.new(fixture_path + '/world.png'), :dsid=>'content')
22
22
  @file.apply_depositor_metadata('mjg36')
@@ -16,7 +16,7 @@ require 'spec_helper'
16
16
 
17
17
  describe GenericFile do
18
18
  before(:each) do
19
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
19
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
20
20
  @file = GenericFile.new
21
21
  @file.apply_depositor_metadata('jcoyne')
22
22
  end
@@ -131,7 +131,7 @@ describe GenericFile do
131
131
  end
132
132
  describe "that have been saved" do
133
133
  before(:each) do
134
- Resque.expects(:enqueue).once.returns(true)
134
+ Sufia.queue.should_receive(:push).once
135
135
  end
136
136
  after(:each) do
137
137
  unless @file.inner_object.class == ActiveFedora::UnsavedDigitalObject
@@ -227,18 +227,18 @@ describe GenericFile do
227
227
  describe "with an image that doesn't get resized" do
228
228
  before do
229
229
  @f = GenericFile.new
230
- @f.stubs(:mime_type=>'image/png', :width=>['50'], :height=>['50']) #Would get set by the characterization job
230
+ @f.stub(:mime_type=>'image/png', :width=>['50'], :height=>['50']) #Would get set by the characterization job
231
231
  @f.add_file_datastream(File.new("#{fixture_path}/world.png"), :dsid=>'content')
232
232
  @f.apply_depositor_metadata('mjg36')
233
233
  @f.save
234
234
  @mock_image = mock("image", :from_blob=>true)
235
- Magick::ImageList.expects(:new).returns(@mock_image)
235
+ Magick::ImageList.should_receive(:new).and_return(@mock_image)
236
236
  end
237
237
  after do
238
238
  @f.delete
239
239
  end
240
240
  it "should scale the thumbnail to original size" do
241
- @mock_image.expects(:scale).with(50, 50).returns(stub(:to_blob=>'fake content'))
241
+ @mock_image.should_receive(:scale).with(50, 50).and_return(stub(:to_blob=>'fake content'))
242
242
  @f.create_thumbnail
243
243
  @f.content.changed?.should be_false
244
244
  @f.thumbnail.content.should == 'fake content'
@@ -246,48 +246,95 @@ describe GenericFile do
246
246
  end
247
247
  end
248
248
  describe "audit" do
249
- before(:all) do
250
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
251
- GenericFile.any_instance.stubs(:characterize).returns(true)
252
- f = GenericFile.new
249
+ before(:each) do
250
+ u = FactoryGirl.create(:user)
251
+ f = GenericFile.new(:terms_of_service=>'1')
252
+ f.stub(:characterize).and_return(true)
253
253
  f.add_file_datastream(File.new(fixture_path + '/world.png'), :dsid=>'content')
254
- f.apply_depositor_metadata('mjg36')
255
- f.save
254
+ f.apply_depositor_metadata(u.user_key)
255
+ f.save!
256
256
  @f = GenericFile.find(f.pid)
257
- @datastreams = [FileContentDatastream, ActiveFedora::RelsExtDatastream,
258
- ActiveFedora::Datastream, PropertiesDatastream,
259
- ParanoidRightsDatastream]
260
- end
261
- after(:all) do
262
- @f.delete
263
- end
264
- it "should schedule a audit job" do
265
- @datastreams.each { |ds| ds.any_instance.stubs(:dsChecksumValid).returns(false) }
266
- ChecksumAuditLog.stubs(:create!).returns(true)
267
- Resque.expects(:enqueue).times(@datastreams.count)
257
+ @f.stub(:characterize).and_return(true)
258
+ end
259
+ it "should schedule a audit job for each datastream" do
260
+ s1 = stub('one')
261
+ AuditJob.should_receive(:new).with(@f.pid, 'DC', "DC1.0").and_return(s1)
262
+ Sufia.queue.should_receive(:push).with(s1)
263
+ s2 = stub('two')
264
+ AuditJob.should_receive(:new).with(@f.pid, 'RELS-EXT', "RELS-EXT.0").and_return(s2)
265
+ Sufia.queue.should_receive(:push).with(s2)
266
+ s3 = stub('three')
267
+ AuditJob.should_receive(:new).with(@f.pid, 'rightsMetadata', "rightsMetadata.0").and_return(s3)
268
+ Sufia.queue.should_receive(:push).with(s3)
269
+ s4 = stub('four')
270
+ AuditJob.should_receive(:new).with(@f.pid, 'properties', "properties.0").and_return(s4)
271
+ Sufia.queue.should_receive(:push).with(s4)
272
+ s5 = stub('five')
273
+ AuditJob.should_receive(:new).with(@f.pid, 'content', "content.0").and_return(s5)
274
+ Sufia.queue.should_receive(:push).with(s5)
275
+ s6 = stub('six')
276
+ AuditJob.should_receive(:new).with(@f.pid, 'characterization', "characterization.0").and_return(s6)
277
+ Sufia.queue.should_receive(:push).with(s6)
278
+ s7 = stub('seven')
279
+ AuditJob.should_receive(:new).with(@f.pid, 'thumbnail', "thumbnail.0").and_return(s7)
280
+ Sufia.queue.should_receive(:push).with(s7)
268
281
  @f.audit!
269
282
  end
270
283
  it "should log a failing audit" do
271
- @datastreams.each { |ds| ds.any_instance.stubs(:dsChecksumValid).returns(false) }
284
+ @f.datastreams.each { |ds| ds.stub(:dsChecksumValid).and_return(false) }
285
+ GenericFile.stub(:run_audit).and_return(stub(:respose, :pass=>1, :created_at=>'2005-12-20', :pid=>'foo:123', :dsid=>'foo', :version=>'1'))
272
286
  @f.audit!
273
287
  ChecksumAuditLog.all.all? { |cal| cal.pass == 0 }.should be_true
274
288
  end
275
289
  it "should log a passing audit" do
276
- @datastreams.each { |ds| ds.any_instance.stubs(:dsChecksumValid).returns(true) }
290
+ GenericFile.stub(:run_audit).and_return(stub(:respose, :pass=>1, :created_at=>'2005-12-20', :pid=>'foo:123', :dsid=>'foo', :version=>'1'))
277
291
  @f.audit!
278
292
  ChecksumAuditLog.all.all? { |cal| cal.pass == 1 }.should be_true
279
293
  end
294
+
280
295
  it "should return true on audit_status" do
281
296
  @f.audit_stat.should be_true
282
297
  end
283
298
  end
299
+
300
+ describe "run_audit" do
301
+ before do
302
+ @f = GenericFile.new(:terms_of_service => '1')
303
+ @f.add_file_datastream(File.new(fixture_path + '/world.png'), :dsid=>'content')
304
+ @f.apply_depositor_metadata('mjg36')
305
+ @f.save!
306
+ @version = @f.datastreams['content'].versions.first
307
+ @old = ChecksumAuditLog.create(:pid=>@f.pid, :dsid=>@version.dsid, :version=>@version.versionID, :pass=>1, :created_at=>2.minutes.ago)
308
+ @new = ChecksumAuditLog.create(:pid=>@f.pid, :dsid=>@version.dsid, :version=>@version.versionID, :pass=>0)
309
+ end
310
+ it "should not prune failed audits" do
311
+ @version.should_receive(:dsChecksumValid).and_return(true)
312
+ GenericFile.run_audit(@version)
313
+
314
+ @version.should_receive(:dsChecksumValid).and_return(false)
315
+ GenericFile.run_audit(@version)
316
+
317
+ @version.should_receive(:dsChecksumValid).and_return(false)
318
+ GenericFile.run_audit(@version)
319
+
320
+ @version.should_receive(:dsChecksumValid).and_return(true)
321
+ GenericFile.run_audit(@version)
322
+
323
+ @version.should_receive(:dsChecksumValid).and_return(false)
324
+ GenericFile.run_audit(@version)
325
+
326
+ @f.logs(@version.dsid).map(&:pass).should == [0, 1, 0, 0, 1, 0, 1]
327
+ end
328
+
329
+ end
330
+
284
331
  describe "save" do
285
332
  after(:each) do
286
333
  @file.delete
287
334
  end
288
335
  it "should schedule a characterization job" do
289
336
  @file.add_file_datastream(File.new(fixture_path + '/world.png'), :dsid=>'content')
290
- Resque.expects(:enqueue).once
337
+ Sufia.queue.should_receive(:push).once
291
338
  @file.save
292
339
  end
293
340
  end
@@ -334,8 +381,8 @@ describe GenericFile do
334
381
  @f1.save
335
382
  @f2.save
336
383
  mock_batch = mock("batch")
337
- mock_batch.stubs(:generic_files => [@f1, @f2])
338
- @f1.expects(:batch).returns(mock_batch)
384
+ mock_batch.stub(:generic_files => [@f1, @f2])
385
+ @f1.should_receive(:batch).and_return(mock_batch)
339
386
  @f1.related_files.should == [@f2]
340
387
  end
341
388
  it "should work when batch is not defined by querying solr" do
@@ -343,7 +390,7 @@ describe GenericFile do
343
390
  @f2.add_relationship("isPartOf", "info:fedora/#{@batch_id}")
344
391
  @f1.save
345
392
  @f2.save
346
- @f1.expects(:batch).twice.raises(NoMethodError)
393
+ @f1.should_receive(:batch).twice.and_raise(NoMethodError)
347
394
  lambda { @f1.related_files }.should_not raise_error
348
395
  @f1.related_files.should == [@f2]
349
396
  end
@@ -352,7 +399,7 @@ describe GenericFile do
352
399
  @f2.add_relationship(:is_part_of, "info:fedora/#{@batch_id}")
353
400
  @f1.save
354
401
  @f2.save
355
- @f1.expects(:batch).twice.raises(NoMethodError)
402
+ @f1.should_receive(:batch).twice.and_raise(NoMethodError)
356
403
  lambda { @f1.related_files }.should_not raise_error
357
404
  @f1.related_files.should == [@f2]
358
405
  end
@@ -362,16 +409,16 @@ describe GenericFile do
362
409
  @f1.save
363
410
  @f2.save
364
411
  mock_batch = mock("batch")
365
- mock_batch.stubs(:generic_files).raises(NoMethodError)
366
- @f1.expects(:batch).twice
412
+ mock_batch.stub(:generic_files).and_raise(NoMethodError)
413
+ @f1.should_receive(:batch).twice
367
414
  lambda { @f1.related_files }.should_not raise_error
368
415
  @f1.related_files.should == [@f2]
369
416
  end
370
417
  end
371
418
  describe "noid integration" do
372
419
  before(:all) do
373
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
374
- GenericFile.any_instance.expects(:characterize_if_changed).yields
420
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
421
+ GenericFile.any_instance.should_receive(:characterize_if_changed).and_yield
375
422
  @new_file = GenericFile.new(:pid => 'ns:123')
376
423
  @new_file.apply_depositor_metadata('mjg36')
377
424
  @new_file.save
@@ -399,19 +446,19 @@ describe GenericFile do
399
446
  doc.root.xpath('//ns:imageWidth/text()', {'ns'=>'http://hul.harvard.edu/ois/xml/ns/fits/fits_output'}).inner_text.should == '50'
400
447
  end
401
448
  it "should not be triggered unless the content ds is changed" do
402
- Resque.expects(:enqueue).once
449
+ Sufia.queue.should_receive(:push).once
403
450
  @file.content.content = "hey"
404
451
  @file.save
405
452
  @file.related_url = 'http://example.com'
406
- Resque.expects(:enqueue).never
453
+ Sufia.queue.should_receive(:push).never
407
454
  @file.save
408
455
  @file.delete
409
456
  end
410
457
  describe "after job runs" do
411
458
  before(:all) do
412
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
459
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
413
460
  myfile = GenericFile.new
414
- myfile.add_file_datastream(File.new(fixture_path + '/scholarsphere/scholarsphere_test4.pdf'), :dsid=>'content')
461
+ myfile.add_file_datastream(File.new(fixture_path + '/sufia/sufia_test4.pdf'), :dsid=>'content')
415
462
  myfile.label = 'label123'
416
463
  myfile.thumbnail.size.nil?.should be_true
417
464
  myfile.apply_depositor_metadata('mjg36')
@@ -493,7 +540,7 @@ describe GenericFile do
493
540
  describe "permissions validation" do
494
541
  context "depositor must have edit access" do
495
542
  before(:each) do
496
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
543
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
497
544
  @file = GenericFile.new
498
545
  @file.apply_depositor_metadata('mjg36')
499
546
  @rightsmd = @file.rightsMetadata
@@ -593,7 +640,7 @@ describe GenericFile do
593
640
  end
594
641
  context "public must not have edit access" do
595
642
  before(:each) do
596
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
643
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
597
644
  @file = GenericFile.new
598
645
  @file.apply_depositor_metadata('mjg36')
599
646
  @file.read_groups = ['public']
@@ -694,7 +741,7 @@ describe GenericFile do
694
741
  end
695
742
  context "registered must not have edit access" do
696
743
  before(:each) do
697
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
744
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
698
745
  @file = GenericFile.new
699
746
  @file.apply_depositor_metadata('mjg36')
700
747
  @file.read_groups = ['registered']
@@ -795,7 +842,7 @@ describe GenericFile do
795
842
  end
796
843
  context "everything is copacetic" do
797
844
  before(:each) do
798
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
845
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
799
846
  @file = GenericFile.new
800
847
  @file.apply_depositor_metadata('mjg36')
801
848
  @file.read_groups = ['public']
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe SingleUseLink do
4
4
  before (:all) do
5
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
5
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
6
6
  @file = GenericFile.new
7
7
  @file.add_file_datastream(File.new(fixture_path + '/world.png'), :dsid=>'content')
8
8
  @file.apply_depositor_metadata('mjg36')
@@ -16,9 +16,9 @@ describe SingleUseLink do
16
16
  describe "create" do
17
17
  before do
18
18
  @now = DateTime.now
19
- DateTime.stubs(:now).returns(@now)
19
+ DateTime.stub(:now).and_return(@now)
20
20
  @hash = "sha2hash"+@now.to_f.to_s
21
- Digest::SHA2.expects(:new).returns(@hash)
21
+ Digest::SHA2.should_receive(:new).and_return(@hash)
22
22
 
23
23
  end
24
24
  it "should create show link" do
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe TranscodeVideoJob do
4
+ before do
5
+ @generic_file = GenericFile.new(:terms_of_service=>'1')
6
+ @generic_file.apply_depositor_metadata('jcoyne@example.com')
7
+ @generic_file.add_file_datastream(File.new(fixture_path + '/countdown.avi'), :dsid=>'content')
8
+ @generic_file.save!
9
+ end
10
+
11
+ after do
12
+ @generic_file.delete
13
+ end
14
+
15
+ subject { TranscodeVideoJob.new(@generic_file.id, 'content')}
16
+ it "should put content in datastream_out" do
17
+ subject.run
18
+ reloaded = GenericFile.find(@generic_file.pid)
19
+ derivative = reloaded.datastreams['webm']
20
+ derivative.should_not be_nil
21
+ derivative.content.should_not be_nil
22
+ derivative.mimeType.should == 'video/webm'
23
+
24
+ derivative2 = reloaded.datastreams['mp4']
25
+ derivative2.should_not be_nil
26
+ derivative2.content.should_not be_nil
27
+ derivative2.mimeType.should == 'video/mp4'
28
+ end
29
+ end
30
+
@@ -17,8 +17,7 @@ require 'spec_helper'
17
17
  describe UnzipJob do
18
18
  before(:all) do
19
19
  @batch = Batch.create
20
- GenericFile.any_instance.expects(:characterize_if_changed).at_least_once.yields
21
- GenericFile.any_instance.stubs(:terms_of_service).returns('1')
20
+ GenericFile.any_instance.stub(:terms_of_service).and_return('1')
22
21
  @generic_file = GenericFile.new(:batch=>@batch)
23
22
  @generic_file.add_file_datastream(File.new(fixture_path + '/icons.zip'), :dsid=>'content')
24
23
  @generic_file.apply_depositor_metadata('mjg36')
@@ -32,10 +31,13 @@ describe UnzipJob do
32
31
 
33
32
  it "should create GenericFiles for each file in the zipfile" do
34
33
  one = GenericFile.new
34
+ #one.should_receive(:characterize_if_changed)
35
35
  two = GenericFile.new
36
+ #two.should_receive(:characterize_if_changed)
36
37
  three = GenericFile.new
37
- GenericFile.expects(:new).times(3).returns(one, two, three)
38
- Resque.enqueue(UnzipJob, @generic_file.pid)
38
+ #three.should_receive(:characterize_if_changed)
39
+ GenericFile.should_receive(:new).exactly(3).times.and_return(one, two, three)
40
+ UnzipJob.new(@generic_file.pid).run
39
41
 
40
42
  one.content.size.should == 13024 #bread
41
43
  one.content.label.should == 'spec/fixtures/bread-icon.png'
@@ -12,15 +12,15 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- # Used to test the scholarsphere-fixtures rake task
15
+ # Used to test the sufia-fixtures rake task
16
16
  #
17
17
  require "spec_helper"
18
18
  require "rake"
19
19
 
20
- describe "scholarsphere:fixtures" do
20
+ describe "sufia:fixtures" do
21
21
 
22
22
  def loaded_files_excluding_current_rake_file
23
- $".reject { |file| file.include? "tasks/scholarsphere-fixtures" }
23
+ $".reject { |file| file.include? "tasks/sufia-fixtures" }
24
24
  end
25
25
 
26
26
  # saves original $stdout in variable
@@ -42,11 +42,11 @@ describe "scholarsphere:fixtures" do
42
42
  end
43
43
 
44
44
  def delete_fixture_files
45
- File.delete(File.join(File.expand_path("#{fixture_path}/scholarsphere"), "sufia_rspecTestFixture.txt"))
46
- File.delete(File.join(File.expand_path("#{fixture_path}/scholarsphere"), "sufia_rspecTestFixture.descMeta.txt"))
47
- File.delete(File.join(File.expand_path("#{fixture_path}/scholarsphere"), "sufia_rspecTestFixture.foxml.erb"))
45
+ File.delete(File.join(File.expand_path("#{fixture_path}/sufia"), "sufia_rspecTestFixture.txt"))
46
+ File.delete(File.join(File.expand_path("#{fixture_path}/sufia"), "sufia_rspecTestFixture.descMeta.txt"))
47
+ File.delete(File.join(File.expand_path("#{fixture_path}/sufia"), "sufia_rspecTestFixture.foxml.erb"))
48
48
  begin
49
- File.delete(File.join(File.expand_path("#{fixture_path}/scholarsphere"), "sufia_rspecTestFixture.foxml.xml"))
49
+ File.delete(File.join(File.expand_path("#{fixture_path}/sufia"), "sufia_rspecTestFixture.foxml.xml"))
50
50
  rescue
51
51
  # do nothing; this just means the generate task was not called
52
52
  end
@@ -56,7 +56,7 @@ describe "scholarsphere:fixtures" do
56
56
  before(:each) do
57
57
  @rake = Rake::Application.new
58
58
  Rake.application = @rake
59
- Rake.application.rake_require("tasks/scholarsphere-fixtures", ["."], loaded_files_excluding_current_rake_file)
59
+ Rake.application.rake_require("tasks/sufia-fixtures", ["."], loaded_files_excluding_current_rake_file)
60
60
  Rake.application.rake_require("lib/tasks/fixtures", ["."], loaded_files_excluding_current_rake_file)
61
61
  Rake.application.rake_require("lib/tasks/active_fedora", [activefedora_path], loaded_files_excluding_current_rake_file)
62
62
  Rake::Task.define_task(:environment)
@@ -72,15 +72,15 @@ describe "scholarsphere:fixtures" do
72
72
  ENV["FIXTURE_TITLE"] = "rspec Test Fixture"
73
73
  ENV["FIXTURE_USER"] = "rspec"
74
74
  o = capture_stdout do
75
- @rake['scholarsphere:fixtures:create'].invoke
76
- @rake['scholarsphere:fixtures:generate'].invoke
77
- @rake['scholarsphere:fixtures:load'].invoke
78
- @rake['scholarsphere:fixtures:delete'].invoke
75
+ @rake['sufia:fixtures:create'].invoke
76
+ @rake['sufia:fixtures:generate'].invoke
77
+ @rake['sufia:fixtures:load'].invoke
78
+ @rake['sufia:fixtures:delete'].invoke
79
79
  end
80
- Dir.glob(File.join(fixture_path, File.expand_path("/scholarsphere"), "sufia_rspecTestFixture.txt")).length.should == 1
81
- Dir.glob(File.join(fixture_path, File.expand_path("/scholarsphere"), "sufia_rspecTestFixture.foxml.erb")).length.should == 1
82
- Dir.glob(File.join(fixture_path, File.expand_path("/scholarsphere"), "sufia_rspecTestFixture.descMeta.txt")).length.should == 1
83
- Dir.glob(File.join(fixture_path, File.expand_path("/scholarsphere"), "sufia_rspecTestFixture.foxml.xml")).length.should == 1
80
+ Dir.glob(File.join(fixture_path, File.expand_path("/sufia"), "sufia_rspecTestFixture.txt")).length.should == 1
81
+ Dir.glob(File.join(fixture_path, File.expand_path("/sufia"), "sufia_rspecTestFixture.foxml.erb")).length.should == 1
82
+ Dir.glob(File.join(fixture_path, File.expand_path("/sufia"), "sufia_rspecTestFixture.descMeta.txt")).length.should == 1
83
+ Dir.glob(File.join(fixture_path, File.expand_path("/sufia"), "sufia_rspecTestFixture.foxml.xml")).length.should == 1
84
84
  o.should include "Loaded 'sufia:rspecTestFixture'"
85
85
  o.should include "Deleted 'sufia:rspecTestFixture'"
86
86
  end