sufia 6.2.0 → 6.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (269) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +146 -0
  3. data/.travis.yml +4 -7
  4. data/Gemfile +2 -0
  5. data/History.md +29 -1
  6. data/README.md +25 -9
  7. data/SUFIA_VERSION +1 -1
  8. data/app/assets/stylesheets/sufia/_collections.scss +15 -0
  9. data/app/assets/stylesheets/sufia/_file-listing.scss +7 -0
  10. data/app/assets/stylesheets/sufia/_home-page.scss +10 -0
  11. data/app/builders/sufia/bootstrap_breadcrumbs_builder.rb +3 -5
  12. data/app/controllers/admin/stats_controller.rb +1 -76
  13. data/app/controllers/api/items_controller.rb +4 -6
  14. data/app/controllers/api/zotero_controller.rb +5 -5
  15. data/app/controllers/authorities_controller.rb +5 -1
  16. data/app/controllers/batch_edits_controller.rb +3 -3
  17. data/app/controllers/concerns/sufia/admin/depositor_stats.rb +41 -0
  18. data/app/controllers/concerns/sufia/admin/stats_behavior.rb +94 -0
  19. data/app/controllers/concerns/sufia/batch_controller_behavior.rb +16 -18
  20. data/app/controllers/concerns/sufia/batch_edits_controller_behavior.rb +54 -56
  21. data/app/controllers/concerns/sufia/breadcrumbs.rb +3 -6
  22. data/app/controllers/concerns/sufia/collections_controller_behavior.rb +39 -39
  23. data/app/controllers/concerns/sufia/controller.rb +10 -10
  24. data/app/controllers/concerns/sufia/dashboard_controller_behavior.rb +17 -18
  25. data/app/controllers/concerns/sufia/depositors_controller_behavior.rb +9 -12
  26. data/app/controllers/concerns/sufia/files_controller/browse_everything.rb +6 -7
  27. data/app/controllers/concerns/sufia/files_controller/local_ingest_behavior.rb +39 -40
  28. data/app/controllers/concerns/sufia/files_controller/upload_complete_behavior.rb +1 -1
  29. data/app/controllers/concerns/sufia/files_controller_behavior.rb +109 -110
  30. data/app/controllers/concerns/sufia/homepage_controller.rb +8 -8
  31. data/app/controllers/concerns/sufia/my_controller_behavior.rb +13 -10
  32. data/app/controllers/concerns/sufia/single_use_links_controller_behavior.rb +11 -14
  33. data/app/controllers/concerns/sufia/single_use_links_viewer_controller_behavior.rb +27 -21
  34. data/app/controllers/concerns/sufia/transfers_controller_behavior.rb +17 -17
  35. data/app/controllers/concerns/sufia/users_controller_behavior.rb +54 -54
  36. data/app/controllers/contact_form_controller.rb +1 -1
  37. data/app/controllers/content_blocks_controller.rb +11 -12
  38. data/app/controllers/directory_controller.rb +2 -3
  39. data/app/controllers/featured_work_lists_controller.rb +1 -1
  40. data/app/controllers/featured_works_controller.rb +2 -4
  41. data/app/controllers/homepage_controller.rb +1 -2
  42. data/app/controllers/mailbox_controller.rb +12 -32
  43. data/app/controllers/my/collections_controller.rb +3 -4
  44. data/app/controllers/my/files_controller.rb +4 -6
  45. data/app/controllers/my/highlights_controller.rb +4 -6
  46. data/app/controllers/my/shares_controller.rb +3 -5
  47. data/app/controllers/pages_controller.rb +1 -3
  48. data/app/controllers/single_use_links_controller.rb +0 -1
  49. data/app/controllers/single_use_links_viewer_controller.rb +0 -1
  50. data/app/controllers/static_controller.rb +1 -0
  51. data/app/forms/sufia/forms/collection_edit_form.rb +2 -2
  52. data/app/helpers/batch_edits_helper.rb +1 -3
  53. data/app/helpers/content_block_helper.rb +7 -8
  54. data/app/helpers/generic_file_helper.rb +23 -24
  55. data/app/helpers/sufia/blacklight_override.rb +6 -7
  56. data/app/helpers/sufia/dashboard_helper_behavior.rb +4 -7
  57. data/app/helpers/sufia/permissions_helper.rb +3 -4
  58. data/app/helpers/sufia/sufia_helper_behavior.rb +30 -29
  59. data/app/helpers/trophy_helper.rb +15 -15
  60. data/app/inputs/select_with_modal_help_input.rb +3 -3
  61. data/app/inputs/with_help_icon.rb +4 -4
  62. data/app/jobs/content_delete_event_job.rb +0 -1
  63. data/app/jobs/content_depositor_change_event_job.rb +1 -2
  64. data/app/jobs/event_job.rb +0 -1
  65. data/app/jobs/user_unfollow_event_job.rb +1 -0
  66. data/app/models/concerns/sufia/solr_document_behavior.rb +1 -2
  67. data/app/models/contact_form.rb +6 -6
  68. data/app/models/content_block.rb +1 -2
  69. data/app/models/featured_work_list.rb +3 -5
  70. data/app/models/user_mailbox.rb +44 -0
  71. data/app/presenters/sufia/collection_presenter.rb +6 -8
  72. data/app/presenters/sufia/generic_file_presenter.rb +2 -2
  73. data/app/presenters/sufia/presenter_renderer.rb +2 -2
  74. data/app/presenters/sufia/version_list_presenter.rb +1 -1
  75. data/app/presenters/sufia/version_presenter.rb +3 -6
  76. data/app/search_builders/deposit_search_builder.rb +19 -0
  77. data/app/search_builders/sufia/my_search_builder_behavior.rb +1 -2
  78. data/app/search_builders/sufia/search_builder.rb +1 -3
  79. data/app/uploaders/tinymce_asset_uploader.rb +0 -2
  80. data/app/views/_controls.html.erb +5 -5
  81. data/app/views/admin/stats/_deposits.html.erb +19 -0
  82. data/app/views/admin/stats/index.html.erb +2 -0
  83. data/app/views/batch_edits/edit.html.erb +2 -2
  84. data/app/views/collections/_edit_actions.html.erb +3 -3
  85. data/app/views/collections/_form_for_select_collection.html.erb +2 -2
  86. data/app/views/collections/_sort_and_per_page.html.erb +12 -9
  87. data/app/views/collections/_view_type_group.html.erb +1 -1
  88. data/app/views/collections/edit.html.erb +5 -5
  89. data/app/views/collections/show.html.erb +7 -6
  90. data/app/views/homepage/_announcement.html.erb +5 -0
  91. data/app/views/homepage/_home.html.erb +1 -0
  92. data/app/views/my/_sort_and_per_page.html.erb +14 -10
  93. data/app/views/my/index.html.erb +1 -1
  94. data/app/views/pages/show.html.erb +0 -2
  95. data/app/views/single_use_links/new_download.html.erb +1 -1
  96. data/app/views/single_use_links_viewer/show.html.erb +1 -1
  97. data/app/views/users/_notify_link.html.erb +1 -1
  98. data/app/views/users/_notify_number.html.erb +2 -2
  99. data/config/initializers/simple_form.rb +1 -1
  100. data/config/initializers/simple_form_bootstrap.rb +1 -1
  101. data/config/locales/sufia.en.yml +4 -0
  102. data/config/routes.rb +2 -3
  103. data/lib/generators/sufia/admin_stat_generator.rb +0 -3
  104. data/lib/generators/sufia/install_generator.rb +8 -9
  105. data/lib/generators/sufia/templates/catalog_controller.rb +2 -3
  106. data/lib/generators/sufia/templates/config/action_dispatch_http_upload_monkey_patch.rb +1 -0
  107. data/lib/generators/sufia/upgrade400_generator.rb +9 -9
  108. data/lib/generators/sufia/upgrade600_generator.rb +1 -4
  109. data/lib/sufia.rb +2 -2
  110. data/lib/sufia/arkivo/actor.rb +1 -1
  111. data/lib/sufia/arkivo/create_subscription_job.rb +30 -30
  112. data/lib/sufia/arkivo/metadata_munger.rb +7 -7
  113. data/lib/sufia/arkivo/schema_validator.rb +1 -1
  114. data/lib/sufia/single_use_error.rb +0 -1
  115. data/lib/sufia/version.rb +1 -1
  116. data/lib/sufia/zotero/config.rb +13 -13
  117. data/spec/actors/generic_file/actor_spec.rb +17 -18
  118. data/spec/controllers/admin_stats_controller_spec.rb +56 -5
  119. data/spec/controllers/api/zotero_controller_spec.rb +10 -9
  120. data/spec/controllers/authorities_controller_spec.rb +8 -8
  121. data/spec/controllers/batch_controller_spec.rb +19 -20
  122. data/spec/controllers/batch_edits_controller_spec.rb +8 -9
  123. data/spec/controllers/catalog_controller_spec.rb +7 -9
  124. data/spec/controllers/collections_controller_spec.rb +30 -32
  125. data/spec/controllers/content_blocks_controller_spec.rb +4 -4
  126. data/spec/controllers/dashboard_controller_spec.rb +12 -12
  127. data/spec/controllers/depositors_controller_spec.rb +8 -8
  128. data/spec/controllers/downloads_controller_spec.rb +10 -11
  129. data/spec/controllers/featured_work_lists_controller_spec.rb +4 -4
  130. data/spec/controllers/featured_works_controller_spec.rb +11 -12
  131. data/spec/controllers/generic_files_controller_spec.rb +154 -125
  132. data/spec/controllers/homepage_controller_spec.rb +22 -15
  133. data/spec/controllers/mailbox_controller_spec.rb +20 -36
  134. data/spec/controllers/my/collections_controller_spec.rb +4 -5
  135. data/spec/controllers/my/files_controller_spec.rb +10 -11
  136. data/spec/controllers/my/highlights_controller_spec.rb +4 -5
  137. data/spec/controllers/my/shares_controller_spec.rb +12 -14
  138. data/spec/controllers/my_controller_spec.rb +1 -3
  139. data/spec/controllers/pages_controller_spec.rb +4 -4
  140. data/spec/controllers/single_use_links_controller_spec.rb +1 -3
  141. data/spec/controllers/single_use_links_viewer_controller_spec.rb +1 -2
  142. data/spec/controllers/static_controller_spec.rb +1 -1
  143. data/spec/controllers/tinymce_assets_controller_spec.rb +8 -9
  144. data/spec/controllers/transfers_controller_spec.rb +19 -19
  145. data/spec/controllers/users_controller_spec.rb +33 -35
  146. data/spec/factories/api_items.rb +2 -2
  147. data/spec/factories/content_blocks.rb +1 -1
  148. data/spec/factories/featured_works.rb +1 -1
  149. data/spec/factories/generic_files.rb +3 -3
  150. data/spec/factories/users.rb +7 -8
  151. data/spec/features/browse_dashboard_files_spec.rb +14 -18
  152. data/spec/features/browse_files_spec.rb +3 -4
  153. data/spec/features/catalog_search_spec.rb +3 -5
  154. data/spec/features/cloud_upload_spec.rb +2 -2
  155. data/spec/features/collection_spec.rb +21 -21
  156. data/spec/features/contact_form_spec.rb +10 -11
  157. data/spec/features/display_dashboard_spec.rb +5 -9
  158. data/spec/features/edit_file_spec.rb +8 -9
  159. data/spec/features/featured_item_spec.rb +1 -1
  160. data/spec/features/ingest_upload_files_spec.rb +5 -5
  161. data/spec/features/notifications_spec.rb +2 -6
  162. data/spec/features/ownership_transfer_spec.rb +2 -2
  163. data/spec/features/proxy_spec.rb +2 -2
  164. data/spec/features/search_spec.rb +3 -4
  165. data/spec/features/single_use_links_spec.rb +1 -1
  166. data/spec/features/users_spec.rb +4 -5
  167. data/spec/forms/collection_edit_form_spec.rb +2 -2
  168. data/spec/forms/generic_file_edit_form_spec.rb +6 -7
  169. data/spec/helpers/batch_edits_helper_spec.rb +9 -13
  170. data/spec/helpers/content_block_helper_spec.rb +3 -3
  171. data/spec/helpers/dashboard_helper_spec.rb +19 -24
  172. data/spec/helpers/generic_file_helper_spec.rb +5 -7
  173. data/spec/helpers/sufia_helper_spec.rb +43 -54
  174. data/spec/helpers/trophy_helper_spec.rb +5 -5
  175. data/spec/inputs/multi_value_with_help_input_spec.rb +1 -2
  176. data/spec/inputs/select_with_help_input_spec.rb +19 -15
  177. data/spec/javascripts/jasmine_spec.rb +4 -5
  178. data/spec/javascripts/support/jasmine_helper.rb +9 -9
  179. data/spec/jobs/active_fedora_id_based_job_spec.rb +7 -5
  180. data/spec/jobs/audit_job_spec.rb +7 -7
  181. data/spec/jobs/batch_update_job_spec.rb +5 -6
  182. data/spec/jobs/characterize_job_spec.rb +1 -1
  183. data/spec/jobs/content_depositor_change_event_job_spec.rb +1 -1
  184. data/spec/jobs/create_derivatives_job_spec.rb +5 -5
  185. data/spec/jobs/event_jobs_spec.rb +16 -16
  186. data/spec/jobs/import_url_job_spec.rb +36 -5
  187. data/spec/jobs/ingest_local_file_job_spec.rb +31 -20
  188. data/spec/jobs/sufia_resque_queue_spec.rb +1 -1
  189. data/spec/lib/sufia/analytics_spec.rb +0 -1
  190. data/spec/lib/sufia/arkivo/actor_spec.rb +6 -6
  191. data/spec/lib/sufia/arkivo/schema_validator_spec.rb +18 -18
  192. data/spec/lib/sufia/breadcrumbs_spec.rb +5 -6
  193. data/spec/lib/sufia/messages_spec.rb +11 -12
  194. data/spec/lib/sufia/readable_permissions_spec.rb +8 -10
  195. data/spec/lib/sufia/upload_complete_behavior_spec.rb +6 -7
  196. data/spec/lib/sufia/user_stat_importer_spec.rb +30 -33
  197. data/spec/lib/sufia/writable_permissions_spec.rb +1 -3
  198. data/spec/lib/sufia/zotero/config_spec.rb +4 -6
  199. data/spec/models/ability_spec.rb +11 -9
  200. data/spec/models/batch_spec.rb +13 -13
  201. data/spec/models/characterization_spec.rb +2 -3
  202. data/spec/models/checksum_audit_log_spec.rb +18 -19
  203. data/spec/models/collection_spec.rb +11 -12
  204. data/spec/models/content_block_spec.rb +33 -22
  205. data/spec/models/download_spec.rb +3 -5
  206. data/spec/models/featured_work_list_spec.rb +3 -3
  207. data/spec/models/featured_work_spec.rb +12 -14
  208. data/spec/models/file_content_datastream_spec.rb +9 -7
  209. data/spec/models/file_download_stat_spec.rb +34 -40
  210. data/spec/models/file_usage_spec.rb +46 -52
  211. data/spec/models/file_view_stat_spec.rb +35 -41
  212. data/spec/models/fits_datastream_spec.rb +23 -25
  213. data/spec/models/generic_file/visibility_spec.rb +10 -5
  214. data/spec/models/generic_file_spec.rb +86 -88
  215. data/spec/models/geo_names_resource_spec.rb +3 -5
  216. data/spec/models/local_authority_spec.rb +30 -33
  217. data/spec/models/pageview_spec.rb +3 -3
  218. data/spec/models/proxy_deposit_request_spec.rb +3 -3
  219. data/spec/models/single_use_link_spec.rb +36 -36
  220. data/spec/models/solr_document_spec.rb +3 -6
  221. data/spec/models/trophy_spec.rb +8 -9
  222. data/spec/models/user_mailbox_spec.rb +62 -0
  223. data/spec/models/user_spec.rb +28 -29
  224. data/spec/presenters/presenter_renderer_spec.rb +1 -1
  225. data/spec/presenters/sufia/generic_file_presenter_spec.rb +5 -5
  226. data/spec/presenters/sufia/version_list_presenter_spec.rb +2 -2
  227. data/spec/presenters/sufia/version_presenter_spec.rb +1 -1
  228. data/spec/routing/featured_works_route_spec.rb +4 -4
  229. data/spec/routing/ownership_transfers_route_spec.rb +1 -1
  230. data/spec/routing/route_spec.rb +89 -89
  231. data/spec/services/generic_file_audit_service_spec.rb +8 -8
  232. data/spec/services/repository_audit_service_spec.rb +7 -3
  233. data/spec/spec_helper.rb +5 -4
  234. data/spec/support/features/session_helpers.rb +1 -1
  235. data/spec/support/input_support.rb +1 -2
  236. data/spec/support/rake.rb +1 -1
  237. data/spec/support/selectors.rb +1 -6
  238. data/spec/support/statistic_helper.rb +1 -1
  239. data/spec/support/uploaded_file_monkeypatch.rb +1 -1
  240. data/spec/tasks/rake_spec.rb +3 -5
  241. data/spec/views/admin/stats/index.html.erb_spec.rb +16 -16
  242. data/spec/views/batch/edit.html.erb_spec.rb +1 -3
  243. data/spec/views/batch_edits/check_all_spec.rb +5 -5
  244. data/spec/views/batch_edits/edit.html.erb_spec.rb +1 -3
  245. data/spec/views/catalog/index.html.erb_spec.rb +1 -3
  246. data/spec/views/catalog/sort_and_per_page.html.erb_spec.rb +4 -5
  247. data/spec/views/collections/_form.html.erb_spec.rb +5 -3
  248. data/spec/views/collections/_show_descriptions.html.erb_spec.rb +7 -8
  249. data/spec/views/collections/_show_document_list.erb_spec.rb +4 -6
  250. data/spec/views/dashboard/index_spec.rb +14 -21
  251. data/spec/views/generic_file/_browse_everything.html.erb_spec.rb +2 -2
  252. data/spec/views/generic_file/_permission_form.html.erb_spec.rb +8 -9
  253. data/spec/views/generic_file/edit.html.erb_spec.rb +7 -7
  254. data/spec/views/generic_file/show.html.erb_spec.rb +24 -25
  255. data/spec/views/generic_file/stats.html.erb_spec.rb +19 -19
  256. data/spec/views/homepage/_announcement.html.erb_spec.rb +51 -0
  257. data/spec/views/homepage/_featured_works.html.erb_spec.rb +5 -9
  258. data/spec/views/homepage/_home_header.html.erb_spec.rb +2 -2
  259. data/spec/views/my/facet.html.erb_spec.rb +4 -4
  260. data/spec/views/single_use_links/new_download.html.erb_spec.rb +28 -0
  261. data/spec/views/single_use_links_viewer/show.html.erb_spec.rb +29 -0
  262. data/spec/views/users/_follower_modal.html.erb_spec.rb +7 -8
  263. data/spec/views/users/_following_modal.html.erb_spec.rb +4 -5
  264. data/spec/views/users/_notify_number.html.erb_spec.rb +2 -5
  265. data/spec/views/users/_user_util_links.html.erb_spec.rb +5 -8
  266. data/spec/views/users/index.html.erb_spec.rb +4 -6
  267. data/spec/views/users/show.html.erb_spec.rb +4 -7
  268. data/tasks/sufia-dev.rake +19 -3
  269. metadata +20 -5
@@ -4,7 +4,7 @@ describe ImportUrlJob do
4
4
  let(:user) { FactoryGirl.find_or_create(:jill) }
5
5
 
6
6
  let(:file_path) { '/world.png' }
7
- let(:file_hash) {'/673467823498723948237462429793840923582'}
7
+ let(:file_hash) { '/673467823498723948237462429793840923582' }
8
8
 
9
9
  let(:generic_file) do
10
10
  GenericFile.create do |f|
@@ -22,9 +22,9 @@ describe ImportUrlJob do
22
22
  end
23
23
  end
24
24
 
25
- subject(:job) { ImportUrlJob.new(generic_file.id) }
25
+ subject(:job) { described_class.new(generic_file.id) }
26
26
 
27
- it "should have no content at the outset" do
27
+ it "has no content at the outset" do
28
28
  expect(generic_file.content.size).to be_nil
29
29
  end
30
30
 
@@ -41,7 +41,7 @@ describe ImportUrlJob do
41
41
  expect(Sufia::GenericFile::Actor).to receive(:virus_check).and_return(false)
42
42
  end
43
43
 
44
- it "should create a content datastream" do
44
+ it "creates a content datastream" do
45
45
  expect_any_instance_of(Net::HTTP).to receive(:request_get).with(file_hash).and_yield(mock_response)
46
46
  job.run
47
47
  expect(generic_file.reload.content.size).to eq 4218
@@ -55,10 +55,41 @@ describe ImportUrlJob do
55
55
 
56
56
  allow(CharacterizeJob).to receive(:new).with(generic_file.id).never
57
57
  end
58
- it "should abort if virus check fails" do
58
+ it "aborts if virus check fails" do
59
59
  allow(Sufia::GenericFile::Actor).to receive(:virus_check).and_raise(Sufia::VirusFoundError.new('A virus was found'))
60
60
  job.run
61
61
  expect(user.mailbox.inbox.first.subject).to eq("File Import Error")
62
62
  end
63
63
  end
64
+
65
+ context "when a batch update job is running too" do
66
+ let(:title) { { generic_file.id => ['File One'] } }
67
+ let(:metadata) { {} }
68
+ let(:visibility) { nil }
69
+
70
+ let(:batch) { Batch.create }
71
+ let(:batch_job) { BatchUpdateJob.new(user.user_key, batch.id, title, metadata, visibility) }
72
+
73
+ before do
74
+ generic_file.batch = batch
75
+ generic_file.save
76
+ allow_any_instance_of(Ability).to receive(:can?).and_return(true)
77
+ expect_any_instance_of(Net::HTTP).to receive(:request_get).with(file_hash).and_yield(mock_response)
78
+ end
79
+
80
+ it "does not kill all the metadata set by other jobs" do
81
+ # load the object before running the batch job
82
+ gf = job.object
83
+
84
+ # runthe batch job to set the title
85
+ batch_job.run
86
+
87
+ # run the import job
88
+ job.run
89
+
90
+ # import job should not override the title set by the batch job
91
+ file = GenericFile.find(gf.id)
92
+ expect(file.title).to eq(['File One'])
93
+ end
94
+ end
64
95
  end
@@ -1,32 +1,43 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe IngestLocalFileJob do
4
- let(:user) { FactoryGirl.find_or_create(:jill) }
4
+ context "with valid data to run" do
5
+ let(:user) { FactoryGirl.find_or_create(:jill) }
5
6
 
6
- let(:generic_file) { create :generic_file, depositor: user }
7
+ let(:generic_file) { create :generic_file, depositor: user }
7
8
 
8
- let(:job) { IngestLocalFileJob.new(generic_file.id, mock_upload_directory, "world.png", user.user_key) }
9
- let(:mock_upload_directory) { 'spec/mock_upload_directory' }
9
+ let(:job) { described_class.new(generic_file.id, mock_upload_directory, "world.png", user.user_key) }
10
+ let(:mock_upload_directory) { 'spec/mock_upload_directory' }
10
11
 
11
- before do
12
- Dir.mkdir mock_upload_directory unless File.exists? mock_upload_directory
13
- FileUtils.copy(File.expand_path('../../fixtures/world.png', __FILE__), mock_upload_directory)
14
- end
15
-
16
- it "should have attached a file" do
17
- job.run
18
- expect(generic_file.reload.content.size).to eq(4218)
19
- end
12
+ before do
13
+ Dir.mkdir mock_upload_directory unless File.exist? mock_upload_directory
14
+ FileUtils.copy(File.expand_path('../../fixtures/world.png', __FILE__), mock_upload_directory)
15
+ end
20
16
 
21
- describe "virus checking" do
22
- it "should run virus check" do
23
- expect(Sufia::GenericFile::Actor).to receive(:virus_check).and_return(0)
17
+ it "has attached a file" do
24
18
  job.run
19
+ expect(generic_file.reload.content.size).to eq(4218)
20
+ expect(File).not_to exist("#{mock_upload_directory}/world.png")
25
21
  end
26
- it "should abort if virus check fails" do
27
- allow(Sufia::GenericFile::Actor).to receive(:virus_check).and_raise(Sufia::VirusFoundError.new('A virus was found'))
28
- job.run
29
- expect(user.mailbox.inbox.first.subject).to eq("Local file ingest error")
22
+
23
+ describe "virus checking" do
24
+ it "runs virus check" do
25
+ expect(Sufia::GenericFile::Actor).to receive(:virus_check).and_return(0)
26
+ job.run
27
+ end
28
+ it "aborts if virus check fails" do
29
+ allow(Sufia::GenericFile::Actor).to receive(:virus_check).and_raise(Sufia::VirusFoundError.new('A virus was found'))
30
+ job.run
31
+ expect(user.mailbox.inbox.first.subject).to eq("Local file ingest error")
32
+ end
33
+ end
34
+ end
35
+
36
+ context "empty job" do
37
+ let(:job) { described_class.new(nil, nil, nil, nil) }
38
+
39
+ it "has the correct queue name" do
40
+ expect(job.queue_name).to eq(:ingest)
30
41
  end
31
42
  end
32
43
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Sufia::Resque::Queue do
4
- let(:subject) { Sufia::Resque::Queue.new "test_queue" }
4
+ let(:subject) { described_class.new "test_queue" }
5
5
  let(:job) { double('job') }
6
6
 
7
7
  context "with no retries" do
@@ -25,5 +25,4 @@ describe Sufia::Analytics do
25
25
  it 'responds to :profile' do
26
26
  expect(subject).to respond_to(:profile)
27
27
  end
28
-
29
28
  end
@@ -100,9 +100,9 @@ describe Sufia::Arkivo::Actor do
100
100
  end
101
101
 
102
102
  it 'changes the arkivo checksum' do
103
- expect {
103
+ expect do
104
104
  subject.update_file_from_item(gf)
105
- }.to change { gf.arkivo_checksum }.from(checksum).to(item['file']['md5'])
105
+ end.to change { gf.arkivo_checksum }.from(checksum).to(item['file']['md5'])
106
106
  end
107
107
 
108
108
  it 'calls update_content' do
@@ -111,9 +111,9 @@ describe Sufia::Arkivo::Actor do
111
111
  end
112
112
 
113
113
  it 'extracts a file from the item' do
114
- expect {
114
+ expect do
115
115
  subject.update_file_from_item(gf)
116
- }.to change { gf.content.content }.to("# HEADER\n\nThis is a paragraph!\n")
116
+ end.to change { gf.content.content }.to("# HEADER\n\nThis is a paragraph!\n")
117
117
  end
118
118
 
119
119
  it 'returns a GF instance' do
@@ -131,9 +131,9 @@ describe Sufia::Arkivo::Actor do
131
131
  it { is_expected.to respond_to(:destroy_file) }
132
132
 
133
133
  it 'deletes the file' do
134
- expect {
134
+ expect do
135
135
  subject.destroy_file(gf)
136
- }.to change { gf.destroyed? }.from(nil).to(true)
136
+ end.to change { gf.destroyed? }.from(nil).to(true)
137
137
  end
138
138
  end
139
139
  end
@@ -4,62 +4,62 @@ describe Sufia::Arkivo::SchemaValidator do
4
4
  let(:item) { JSON.parse(FactoryGirl.json(:post_item)) }
5
5
 
6
6
  it 'ensures a token is included' do
7
- expect {
7
+ expect do
8
8
  described_class.new(item.except('token')).call
9
- }.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'token'/)
9
+ end.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'token'/)
10
10
  end
11
11
 
12
12
  it 'ensures a metadata section is included' do
13
- expect {
13
+ expect do
14
14
  described_class.new(item.except('metadata')).call
15
- }.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'metadata'/)
15
+ end.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'metadata'/)
16
16
  end
17
17
 
18
18
  it 'ensures a file section is included' do
19
- expect {
19
+ expect do
20
20
  described_class.new(item.except('file')).call
21
- }.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'file'/)
21
+ end.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'file'/)
22
22
  end
23
23
 
24
24
  it 'ensures the metadata has a title' do
25
25
  item['metadata'].delete('title')
26
- expect {
26
+ expect do
27
27
  described_class.new(item).call
28
- }.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'title'/)
28
+ end.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'title'/)
29
29
  end
30
30
 
31
31
  it 'ensures the metadata has rights' do
32
32
  item['metadata'].delete('rights')
33
- expect {
33
+ expect do
34
34
  described_class.new(item).call
35
- }.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'rights'/)
35
+ end.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'rights'/)
36
36
  end
37
37
 
38
38
  it 'ensures the file has a b64-encoded content' do
39
39
  item['file'].delete('base64')
40
- expect {
40
+ expect do
41
41
  described_class.new(item).call
42
- }.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'base64'/)
42
+ end.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'base64'/)
43
43
  end
44
44
 
45
45
  it 'ensures the file has a checksum' do
46
46
  item['file'].delete('md5')
47
- expect {
47
+ expect do
48
48
  described_class.new(item).call
49
- }.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'md5'/)
49
+ end.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'md5'/)
50
50
  end
51
51
 
52
52
  it 'ensures the file has a filename' do
53
53
  item['file'].delete('filename')
54
- expect {
54
+ expect do
55
55
  described_class.new(item).call
56
- }.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'filename'/)
56
+ end.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'filename'/)
57
57
  end
58
58
 
59
59
  it 'ensures the file has a content type' do
60
60
  item['file'].delete('contentType')
61
- expect {
61
+ expect do
62
62
  described_class.new(item).call
63
- }.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'contentType'/)
63
+ end.to raise_error(Sufia::Arkivo::InvalidItem, /required property of 'contentType'/)
64
64
  end
65
65
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Sufia::Breadcrumbs do
4
-
3
+ describe Sufia::Breadcrumbs do
5
4
  let(:crumbs) do
6
5
  TestClass.new
7
6
  end
@@ -18,7 +17,8 @@ describe Sufia::Breadcrumbs do
18
17
  @trail = []
19
18
  @request = true # avoids the allow_message_expectations_on_nil warning
20
19
  end
21
- def add_breadcrumb text, link
20
+
21
+ def add_breadcrumb(text, link)
22
22
  @trail << [text, link]
23
23
  end
24
24
  end
@@ -85,7 +85,7 @@ describe Sufia::Breadcrumbs do
85
85
  allow(crumbs.request).to receive(:referer).and_return("http://...blargh/")
86
86
  allow(crumbs).to receive(:user_signed_in?) { true }
87
87
  allow(crumbs).to receive(:action_name).and_return("edit")
88
- allow(crumbs).to receive(:params).and_return({"id" => "abc123"})
88
+ allow(crumbs).to receive(:params).and_return("id" => "abc123")
89
89
  allow(crumbs).to receive(:controller_name).and_return("generic_files")
90
90
  end
91
91
 
@@ -102,7 +102,7 @@ describe Sufia::Breadcrumbs do
102
102
  allow(crumbs.request).to receive(:referer).and_return("http://...blargh/")
103
103
  allow(crumbs).to receive(:user_signed_in?) { true }
104
104
  allow(crumbs).to receive(:action_name).and_return("stats")
105
- allow(crumbs).to receive(:params).and_return({"id" => "abc123"})
105
+ allow(crumbs).to receive(:params).and_return("id" => "abc123")
106
106
  allow(crumbs).to receive(:controller_name).and_return("generic_files")
107
107
  end
108
108
 
@@ -114,5 +114,4 @@ describe Sufia::Breadcrumbs do
114
114
  end
115
115
  end
116
116
  end
117
-
118
117
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Sufia::Messages do
4
-
5
4
  let(:message) do
6
5
  TestClass.new
7
6
  end
@@ -22,48 +21,48 @@ describe Sufia::Messages do
22
21
  let(:file_list) { "<a href='/files/1'>File 1</a>, <a href='/files/2'>File 2</a>, <a href='/files/3'>File 3</a>" }
23
22
 
24
23
  describe "message subjects" do
25
- it "should provide a subject for a success message" do
24
+ it "provides a subject for a success message" do
26
25
  expect(message.success_subject).to eq("Batch upload complete")
27
26
  end
28
- it "should provide a subject for a failure message" do
27
+ it "provides a subject for a failure message" do
29
28
  expect(message.failure_subject).to eq("Batch upload permission denied")
30
29
  end
31
30
  end
32
31
 
33
32
  describe "#single_success" do
34
- it "should render a success message for a single file" do
33
+ it "renders a success message for a single file" do
35
34
  node = Capybara::Node::Simple.new(message.single_success(batch_id, single))
36
- expect(node).to have_selector("span[id=\"ss-1\"]", text:"File 1 has been saved.")
35
+ expect(node).to have_selector("span[id=\"ss-1\"]", text: "File 1 has been saved.")
37
36
  expect(node).to have_selector("a[href=\"/files/1\"]")
38
37
  end
39
38
  end
40
39
 
41
40
  describe "#multiple_success" do
42
- it "should render a success message for multiple files" do
41
+ it "renders a success message for multiple files" do
43
42
  node = Capybara::Node::Simple.new(message.multiple_success(batch_id, multiple))
44
- expect(node).to have_selector("span[id=\"ss-1\"]", text:"These files have been saved.")
43
+ expect(node).to have_selector("span[id=\"ss-1\"]", text: "These files have been saved.")
45
44
  expect(node).to have_selector("a[data-content=\"#{file_list}\"][rel=\"popover\"][data-title=\"Files uploaded successfully\"]")
46
45
  end
47
46
  end
48
47
 
49
48
  describe "#single_failure" do
50
- it "should render a failure message for a single file" do
49
+ it "renders a failure message for a single file" do
51
50
  node = Capybara::Node::Simple.new(message.single_failure(batch_id, single))
52
- expect(node).to have_selector("span[id=\"ss-1\"]", text:"File 1 could not be updated. You do not have sufficient privileges to edit it.")
51
+ expect(node).to have_selector("span[id=\"ss-1\"]", text: "File 1 could not be updated. You do not have sufficient privileges to edit it.")
53
52
  expect(node).to have_selector("a[href=\"/files/1\"]")
54
53
  end
55
54
  end
56
55
 
57
56
  describe "#multiple_failure" do
58
- it "should render a failure message for multiple files" do
57
+ it "renders a failure message for multiple files" do
59
58
  node = Capybara::Node::Simple.new(message.multiple_failure(batch_id, multiple))
60
- expect(node).to have_selector("span[id=\"ss-1\"]", text:"These files could not be updated. You do not have sufficient privileges to edit them.")
59
+ expect(node).to have_selector("span[id=\"ss-1\"]", text: "These files could not be updated. You do not have sufficient privileges to edit them.")
61
60
  expect(node).to have_selector("a[data-content=\"#{file_list}\"][rel=\"popover\"][data-title=\"Files failed\"]")
62
61
  end
63
62
  end
64
63
 
65
64
  describe "#file_list" do
66
- it "should replace double-quotes with single quotes" do
65
+ it "replaces double-quotes with single quotes" do
67
66
  expect(message.file_list(multiple)).to eq(file_list)
68
67
  end
69
68
  end
@@ -1,30 +1,29 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Sufia::Permissions::Readable do
4
-
5
4
  class SubjectClass
6
5
  include Sufia::Permissions::Readable
7
- attr_accessor :read_groups
6
+ attr_accessor :read_groups
8
7
  end
9
8
  let(:subject) { SubjectClass.new }
10
9
 
11
10
  describe "#public?" do
12
- it "should return true for public items" do
13
- subject.read_groups = ["public","othergroup"]
11
+ it "returns true for public items" do
12
+ subject.read_groups = ["public", "othergroup"]
14
13
  expect(subject).to be_public
15
14
  end
16
- it "should return fale for non-public items" do
17
- subject.read_groups = ["notpublic","othergroup"]
15
+ it "returns fale for non-public items" do
16
+ subject.read_groups = ["notpublic", "othergroup"]
18
17
  expect(subject).to_not be_public
19
18
  end
20
19
  end
21
20
 
22
21
  describe "#registered?" do
23
- it "should return true for registered items" do
24
- subject.read_groups = ["registered","othergroup"]
22
+ it "returns true for registered items" do
23
+ subject.read_groups = ["registered", "othergroup"]
25
24
  expect(subject).to be_registered
26
25
  end
27
- it "should return fale for non-registered items" do
26
+ it "returns fale for non-registered items" do
28
27
  subject.read_groups = ["othergroup"]
29
28
  expect(subject).to_not be_registered
30
29
  end
@@ -52,5 +51,4 @@ describe Sufia::Permissions::Readable do
52
51
  end
53
52
  end
54
53
  end
55
-
56
54
  end
@@ -5,18 +5,17 @@ end
5
5
 
6
6
  class UploadThingRedefine
7
7
  extend Sufia::FilesController::UploadCompleteBehavior
8
- def self.upload_complete_path(id)
9
- return "example.com"
8
+ def self.upload_complete_path(_id)
9
+ "example.com"
10
10
  end
11
11
 
12
- def self.destroy_complete_path(id)
13
- return "destroy.com"
12
+ def self.destroy_complete_path(_id)
13
+ "destroy.com"
14
14
  end
15
-
16
15
  end
17
16
 
18
17
  describe Sufia::FilesController::UploadCompleteBehavior do
19
- let(:test_id) {"123abc"}
18
+ let(:test_id) { "123abc" }
20
19
  context "Not overridden" do
21
20
  it "respond with the batch edit path" do
22
21
  expect(UploadThing.upload_complete_path(test_id)).to eq(Sufia::Engine.routes.url_helpers.batch_edit_path(test_id))
@@ -33,4 +32,4 @@ describe Sufia::FilesController::UploadCompleteBehavior do
33
32
  expect(UploadThingRedefine.destroy_complete_path(test_id)).to eq("destroy.com")
34
33
  end
35
34
  end
36
- end
35
+ end