sufia 6.2.0 → 6.3.0

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 (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
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe TrophyHelper, :type => :helper do
3
+ describe TrophyHelper, type: :helper do
4
4
  describe "#display_trophy_link" do
5
5
  let(:user) { FactoryGirl.create(:user) }
6
6
  let(:id) { '9999' }
@@ -9,7 +9,7 @@ describe TrophyHelper, :type => :helper do
9
9
  let(:url_attribute) { "[data-url=\"/users/#{user.to_param}/trophy?file_id=#{id}\"]" }
10
10
 
11
11
  context "when there is no trophy" do
12
- it "should have a link for highlighting" do
12
+ it "has a link for highlighting" do
13
13
  out = helper.display_trophy_link(user, id) { |text| "foo #{text} bar" }
14
14
  node = Capybara::Node::Simple.new(out)
15
15
  expect(node).to have_selector("a.trophy-class.trophy-off#{text_attributes}#{url_attribute}")
@@ -22,15 +22,15 @@ describe TrophyHelper, :type => :helper do
22
22
  user.trophies.create(generic_file_id: id)
23
23
  end
24
24
 
25
- it "should have a link for highlighting" do
25
+ it "has a link for highlighting" do
26
26
  out = helper.display_trophy_link(user, id) { |text| "foo #{text} bar" }
27
27
  node = Capybara::Node::Simple.new(out)
28
28
  expect(node).to have_selector("a.trophy-class.trophy-on#{text_attributes}#{url_attribute}")
29
29
  expect(node).to have_link 'foo Unhighlight File bar', href: '#'
30
30
  end
31
31
 
32
- it "should allow removerow to be passed" do
33
- out = helper.display_trophy_link(user, id, data: {removerow: true}) { |text| "foo #{text} bar" }
32
+ it "allows removerow to be passed" do
33
+ out = helper.display_trophy_link(user, id, data: { removerow: true }) { |text| "foo #{text} bar" }
34
34
  node = Capybara::Node::Simple.new(out)
35
35
  expect(node).to have_selector("a.trophy-class.trophy-on[data-removerow=\"true\"]#{text_attributes}#{url_attribute}")
36
36
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'MultiValueWithHelpInput', type: :input do
4
- subject { input_for file, field, { as: :multi_value_with_help, required: true } }
4
+ subject { input_for file, field, as: :multi_value_with_help, required: true }
5
5
  let(:file) { GenericFile.new }
6
6
 
7
7
  context "when the field has a translation" do
@@ -21,5 +21,4 @@ describe 'MultiValueWithHelpInput', type: :input do
21
21
  expect(subject).to have_selector('i.help-icon')
22
22
  end
23
23
  end
24
-
25
24
  end
@@ -4,28 +4,32 @@ describe 'SelectWithHelpInput', type: :input do
4
4
  subject { input_for form, :resource_type, options }
5
5
  let(:file) { GenericFile.new }
6
6
  let(:form) { Sufia::Forms::BatchEditForm.new(file) }
7
- let(:base_options) { { as: :select_with_help, collection: Sufia.config.resource_types,
8
- input_html: { class: 'form-control', multiple: true } } }
7
+ let(:base_options) do
8
+ { as: :select_with_help, collection: Sufia.config.resource_types,
9
+ input_html: { class: 'form-control', multiple: true } }
10
+ end
9
11
  let(:options) { base_options }
10
12
 
11
- it "should not be required by default" do
12
- expect(subject).to have_selector 'select'
13
- expect(subject).not_to match(/required/)
13
+ it "is not required by default" do
14
+ expect(subject).to have_selector 'select'
15
+ expect(subject).not_to match(/required/)
14
16
  end
15
- end
16
17
 
17
- describe 'SelectWithHelpInput File Edit', type: :input do
18
- let(:user) { FactoryGirl.find_or_create(:jill) }
19
- let(:file) { GenericFile.create(batch: Batch.create, label: 'f1') { |f| f.apply_depositor_metadata(user) } }
20
- let(:form) { Sufia::Forms::GenericFileEditForm.new(file) }
21
- let(:base_options) { { as: :select_with_help, collection: Sufia.config.resource_types,
22
- input_html: { class: 'form-control', multiple: true } } }
23
- let(:options) { base_options }
18
+ context 'with File Edit', type: :input do
19
+ let(:user) { FactoryGirl.find_or_create(:jill) }
20
+ let(:file) { GenericFile.create(batch: Batch.create, label: 'f1') { |f| f.apply_depositor_metadata(user) } }
21
+ let(:form) { Sufia::Forms::GenericFileEditForm.new(file) }
22
+ let(:base_options) do
23
+ { as: :select_with_help, collection: Sufia.config.resource_types,
24
+ input_html: { class: 'form-control', multiple: true } }
25
+ end
26
+ let(:options) { base_options }
24
27
 
25
- subject { input_for form, :resource_type, options }
28
+ subject { input_for form, :resource_type, options }
26
29
 
27
- it "should not be required by default" do
30
+ it "is not required by default" do
28
31
  expect(subject).to have_selector 'select'
29
32
  expect(subject).not_to match(/required/)
33
+ end
30
34
  end
31
35
  end
@@ -12,18 +12,17 @@ describe "Jasmine" do
12
12
  it "expects all jasmine tests to pass" do
13
13
  load_rake_environment ["#{jasmine_path}/lib/jasmine/tasks/jasmine.rake"]
14
14
  jasmine_out = run_task 'jasmine:ci'
15
- unless jasmine_out.include? "0 failures"
15
+ if jasmine_out.include? "0 failures"
16
+ js_specs_count = Dir['spec/javascripts/**/*_spec.js*'].count
17
+ puts "#{jasmine_out.match(/\n(.+) specs/)[1]} jasmine specs run (in #{js_specs_count} jasmine test files)"
18
+ else
16
19
  puts "\n\n************************ Jasmine Output *************"
17
20
  puts jasmine_out
18
21
  puts "************************ Jasmine Output *************\n\n"
19
- else
20
- js_specs_count = Dir['spec/javascripts/**/*_spec.js*'].count
21
- puts "#{jasmine_out.match(/\n(.+) specs/)[1]} jasmine specs run (in #{js_specs_count} jasmine test files)"
22
22
  end
23
23
  expect(jasmine_out).to include "0 failures"
24
24
  expect(jasmine_out).to_not include "\n0 specs"
25
25
  end
26
-
27
26
  end
28
27
 
29
28
  def jasmine_path
@@ -1,15 +1,15 @@
1
- #Use this file to set/override Jasmine configuration options
2
- #You can remove it if you don't need it.
3
- #This file is loaded *after* jasmine.yml is interpreted.
1
+ # Use this file to set/override Jasmine configuration options
2
+ # You can remove it if you don't need it.
3
+ # This file is loaded *after* jasmine.yml is interpreted.
4
4
  #
5
- #Example: using a different boot file.
6
- #Jasmine.configure do |config|
5
+ # Example: using a different boot file.
6
+ # Jasmine.configure do |config|
7
7
  # config.boot_dir = '/absolute/path/to/boot_dir'
8
8
  # config.boot_files = lambda { ['/absolute/path/to/boot_dir/file.js'] }
9
- #end
9
+ # end
10
10
  #
11
- #Example: prevent PhantomJS auto install, uses PhantomJS already on your path.
12
- #Jasmine.configure do |config|
11
+ # Example: prevent PhantomJS auto install, uses PhantomJS already on your path.
12
+ # Jasmine.configure do |config|
13
13
  # config.prevent_phantom_js_auto_install = true
14
- #end
14
+ # end
15
15
  #
@@ -2,13 +2,15 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveFedoraIdBasedJob do
4
4
  let(:user) { FactoryGirl.find_or_create(:jill) }
5
- let(:file) { GenericFile.new.tap do |gf|
6
- gf.apply_depositor_metadata(user)
7
- gf.save!
8
- end }
5
+ let(:file) do
6
+ GenericFile.new.tap do |gf|
7
+ gf.apply_depositor_metadata(user)
8
+ gf.save!
9
+ end
10
+ end
9
11
 
10
12
  it "finds object" do
11
- job = ActiveFedoraIdBasedJob.new(file.id)
13
+ job = described_class.new(file.id)
12
14
  expect(job.generic_file).to_not be_nil
13
15
  end
14
16
  end
@@ -10,25 +10,25 @@ describe AuditJob do
10
10
  end
11
11
  end
12
12
 
13
- let(:job) { AuditJob.new(file.id, 'content', uri) }
13
+ let(:job) { described_class.new(file.id, 'content', uri) }
14
14
 
15
15
  describe "audit on content" do
16
16
  let(:uri) { file.content.uri }
17
- it "should pass" do
17
+ it "passes" do
18
18
  expect(job.run).to eq(true)
19
19
  end
20
20
  end
21
21
 
22
22
  describe "audit on a version of the content" do
23
23
  let(:uri) { file.content.versions.first.uri }
24
- it "should pass" do
24
+ it "passes" do
25
25
  expect(job.run).to eq(true)
26
26
  end
27
27
  end
28
28
 
29
29
  describe "audit on an invalid version of the content" do
30
30
  let(:uri) { file.content.versions.first.uri + "bogus" }
31
- it "should fail" do
31
+ it "fails" do
32
32
  expect(job.run).to eq(false)
33
33
  end
34
34
  end
@@ -44,13 +44,13 @@ describe AuditJob do
44
44
 
45
45
  context "when the audit passes" do
46
46
  let(:result) { true }
47
- it "should not send mail" do
47
+ it "does not send mail" do
48
48
  expect(inbox.count).to eq(0)
49
49
  end
50
50
  end
51
51
  context "when the audit fails" do
52
52
  let(:result) { false }
53
- it "should send failing mail" do
53
+ it "sends failing mail" do
54
54
  expect(inbox.count).to eq(1)
55
55
  inbox.each { |msg| expect(msg.last_message.subject).to eq(AuditJob::FAIL) }
56
56
  end
@@ -68,7 +68,7 @@ describe AuditJob do
68
68
  allow(mock_service).to receive(:check).and_return(true, false, false, true, false)
69
69
  end
70
70
 
71
- it "should not prune failed audits" do
71
+ it "does not prune failed audits" do
72
72
  5.times { job.send(:run_audit) }
73
73
  expect(ChecksumAuditLog.logs_for(file.id, 'content').map(&:pass)).to eq [0, 1, 0, 0, 1, 0, 1]
74
74
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe BatchUpdateJob do
4
-
5
4
  let(:user) { FactoryGirl.find_or_create(:jill) }
6
5
  let(:batch) { Batch.create }
7
6
 
@@ -20,7 +19,7 @@ describe BatchUpdateJob do
20
19
  end
21
20
 
22
21
  describe "#run" do
23
- let(:title) { { file.id => ['File One'], file2.id => ['File Two'] }}
22
+ let(:title) { { file.id => ['File One'], file2.id => ['File Two'] } }
24
23
  let(:metadata) do
25
24
  { read_groups_string: '', read_users_string: 'archivist1, archivist2',
26
25
  tag: [''] }.with_indifferent_access
@@ -28,10 +27,10 @@ describe BatchUpdateJob do
28
27
 
29
28
  let(:visibility) { nil }
30
29
 
31
- let(:job) { BatchUpdateJob.new(user.user_key, batch.id, title, metadata, visibility) }
30
+ let(:job) { described_class.new(user.user_key, batch.id, title, metadata, visibility) }
32
31
 
33
32
  context "with a failing update" do
34
- it "should check permissions for each file before updating" do
33
+ it "checks permissions for each file before updating" do
35
34
  expect_any_instance_of(User).to receive(:can?).with(:edit, file).and_return(false)
36
35
  expect_any_instance_of(User).to receive(:can?).with(:edit, file2).and_return(false)
37
36
  job.run
@@ -44,7 +43,7 @@ describe BatchUpdateJob do
44
43
  describe "sends events" do
45
44
  let(:s1) { double('one') }
46
45
  let(:s2) { double('two') }
47
- it "should log a content update event" do
46
+ it "logs a content update event" do
48
47
  expect_any_instance_of(User).to receive(:can?).with(:edit, file).and_return(true)
49
48
  expect_any_instance_of(User).to receive(:can?).with(:edit, file2).and_return(true)
50
49
  expect(ContentUpdateEventJob).to receive(:new).with(file.id, user.user_key).and_return(s1)
@@ -64,7 +63,7 @@ describe BatchUpdateJob do
64
63
  job.run
65
64
  end
66
65
 
67
- it "should update the titles" do
66
+ it "updates the titles" do
68
67
  expect(file.reload.title).to eq ['File One']
69
68
  end
70
69
  end
@@ -11,7 +11,7 @@ describe CharacterizeJob do
11
11
  end
12
12
  end
13
13
 
14
- subject { CharacterizeJob.new(@generic_file.id)}
14
+ subject { described_class.new(@generic_file.id) }
15
15
 
16
16
  it 'spawns a CreateDerivatives job' do
17
17
  expect(CreateDerivativesJob).to receive(:new).with(@generic_file.id).once.and_call_original
@@ -8,7 +8,7 @@ describe ContentDepositorChangeEventJob do
8
8
  gf.apply_depositor_metadata(@depositor.user_key)
9
9
  gf.save!
10
10
  end
11
- ContentDepositorChangeEventJob.new(@file.id, @receiver.user_key).run
11
+ described_class.new(@file.id, @receiver.user_key).run
12
12
  end
13
13
 
14
14
  it "changes the depositor and records an original depositor" do
@@ -11,7 +11,7 @@ describe CreateDerivativesJob do
11
11
  Sufia.config.enable_ffmpeg = @ffmpeg_enabled
12
12
  end
13
13
 
14
- subject { CreateDerivativesJob.new(@generic_file.id) }
14
+ subject { described_class.new(@generic_file.id) }
15
15
 
16
16
  describe 'thumbnail generation' do
17
17
  before do
@@ -134,8 +134,8 @@ describe CreateDerivativesJob do
134
134
  # @generic_file.save!
135
135
  # end
136
136
 
137
- #Need a way to do this in hydra-derivatives
138
- it 'should copy the content to the mp3 datastream and transcode to ogg', skip: true do
137
+ # Need a way to do this in hydra-derivatives
138
+ it 'copies the content to the mp3 datastream and transcode to ogg', skip: true do
139
139
  subject.run
140
140
  reloaded = @generic_file.reload
141
141
  derivative = reloaded.attached_files['mp3']
@@ -155,8 +155,8 @@ describe CreateDerivativesJob do
155
155
  # @generic_file.save!
156
156
  # end
157
157
 
158
- #Need a way to do this in hydra-derivatives
159
- it 'should copy the content to the ogg datastream and transcode to mp3', skip: true do
158
+ # Need a way to do this in hydra-derivatives
159
+ it 'copies the content to the ogg datastream and transcode to mp3', skip: true do
160
160
  subject.run
161
161
  reloaded = @generic_file.reload
162
162
  derivative = reloaded.attached_files['mp3']
@@ -15,7 +15,7 @@ describe 'event jobs' do
15
15
  $redis.keys('User:*').each { |key| $redis.del key }
16
16
  $redis.keys('GenericFile:*').each { |key| $redis.del key }
17
17
  end
18
- it "should log user edit profile events" do
18
+ it "logs user edit profile events" do
19
19
  # UserEditProfile should log the event to the editor's dashboard and his/her followers' dashboards
20
20
  @another_user.follow(@user)
21
21
  count_user = @user.events.length
@@ -28,7 +28,7 @@ describe 'event jobs' do
28
28
  expect(@another_user.events.length).to eq(count_another + 1)
29
29
  expect(@another_user.events.first).to eq(event)
30
30
  end
31
- it "should log user follow events" do
31
+ it "logs user follow events" do
32
32
  # UserFollow should log the event to the follower's dashboard, the followee's dashboard, and followers' dashboards
33
33
  @third_user.follow(@user)
34
34
  expect(@user.events.length).to eq(0)
@@ -44,7 +44,7 @@ describe 'event jobs' do
44
44
  expect(@third_user.events.length).to eq(1)
45
45
  expect(@third_user.events.first).to eq(event)
46
46
  end
47
- it "should log user unfollow events" do
47
+ it "logs user unfollow events" do
48
48
  # UserUnfollow should log the event to the unfollower's dashboard, the unfollowee's dashboard, and followers' dashboards
49
49
  @third_user.follow(@user)
50
50
  @user.follow(@another_user)
@@ -61,7 +61,7 @@ describe 'event jobs' do
61
61
  expect(@third_user.events.length).to eq(1)
62
62
  expect(@third_user.events.first).to eq(event)
63
63
  end
64
- it "should log content deposit events" do
64
+ it "logs content deposit events" do
65
65
  # ContentDeposit should log the event to the depositor's profile, followers' dashboards, and the GF
66
66
  @another_user.follow(@user)
67
67
  @third_user.follow(@user)
@@ -71,7 +71,7 @@ describe 'event jobs' do
71
71
  expect(@third_user.events.length).to eq(0)
72
72
  expect(@gf.events.length).to eq(0)
73
73
  expect(Time).to receive(:now).at_least(:once).and_return(1)
74
- event = {action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has deposited <a href="/files/test-123">Hamlet</a>', timestamp: '1' }
74
+ event = { action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has deposited <a href="/files/test-123">Hamlet</a>', timestamp: '1' }
75
75
  ContentDepositEventJob.new('test-123', @user.user_key).run
76
76
  expect(@user.profile_events.length).to eq(1)
77
77
  expect(@user.profile_events.first).to eq(event)
@@ -87,7 +87,7 @@ describe 'event jobs' do
87
87
  @third_user.follow(@another_user)
88
88
  allow_any_instance_of(User).to receive(:can?).and_return(true)
89
89
  allow(Time).to receive(:now).at_least(:once).and_return(1)
90
- event = {action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has transferred <a href="/files/test-123">Hamlet</a> to user <a href="/users/archivist1@example-dot-com">archivist1@example.com</a>', timestamp: '1' }
90
+ event = { action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has transferred <a href="/files/test-123">Hamlet</a> to user <a href="/users/archivist1@example-dot-com">archivist1@example.com</a>', timestamp: '1' }
91
91
  ContentDepositorChangeEventJob.new('test-123', @another_user.user_key).run
92
92
  expect(@user.profile_events.length).to eq(1)
93
93
  expect(@user.profile_events.first).to eq(event)
@@ -98,7 +98,7 @@ describe 'event jobs' do
98
98
  expect(@gf.events.length).to eq(1)
99
99
  expect(@gf.events.first).to eq(event)
100
100
  end
101
- it "should log content update events" do
101
+ it "logs content update events" do
102
102
  # ContentUpdate should log the event to the depositor's profile, followers' dashboards, and the GF
103
103
  @another_user.follow(@user)
104
104
  @third_user.follow(@user)
@@ -108,7 +108,7 @@ describe 'event jobs' do
108
108
  expect(@third_user.events.length).to eq(0)
109
109
  expect(@gf.events.length).to eq(0)
110
110
  expect(Time).to receive(:now).at_least(:once).and_return(1)
111
- event = {action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has updated <a href="/files/test-123">Hamlet</a>', timestamp: '1' }
111
+ event = { action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has updated <a href="/files/test-123">Hamlet</a>', timestamp: '1' }
112
112
  ContentUpdateEventJob.new('test-123', @user.user_key).run
113
113
  expect(@user.profile_events.length).to eq(1)
114
114
  expect(@user.profile_events.first).to eq(event)
@@ -119,7 +119,7 @@ describe 'event jobs' do
119
119
  expect(@gf.events.length).to eq(1)
120
120
  expect(@gf.events.first).to eq(event)
121
121
  end
122
- it "should log content new version events" do
122
+ it "logs content new version events" do
123
123
  # ContentNewVersion should log the event to the depositor's profile, followers' dashboards, and the GF
124
124
  @another_user.follow(@user)
125
125
  @third_user.follow(@user)
@@ -129,7 +129,7 @@ describe 'event jobs' do
129
129
  expect(@third_user.events.length).to eq(0)
130
130
  expect(@gf.events.length).to eq(0)
131
131
  expect(Time).to receive(:now).at_least(:once).and_return(1)
132
- event = {action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has added a new version of <a href="/files/test-123">Hamlet</a>', timestamp: '1' }
132
+ event = { action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has added a new version of <a href="/files/test-123">Hamlet</a>', timestamp: '1' }
133
133
  ContentNewVersionEventJob.new('test-123', @user.user_key).run
134
134
  expect(@user.profile_events.length).to eq(1)
135
135
  expect(@user.profile_events.first).to eq(event)
@@ -140,7 +140,7 @@ describe 'event jobs' do
140
140
  expect(@gf.events.length).to eq(1)
141
141
  expect(@gf.events.first).to eq(event)
142
142
  end
143
- it "should log content restored version events" do
143
+ it "logs content restored version events" do
144
144
  # ContentRestoredVersion should log the event to the depositor's profile, followers' dashboards, and the GF
145
145
  @another_user.follow(@user)
146
146
  @third_user.follow(@user)
@@ -150,7 +150,7 @@ describe 'event jobs' do
150
150
  expect(@third_user.events.length).to eq(0)
151
151
  expect(@gf.events.length).to eq(0)
152
152
  expect(Time).to receive(:now).at_least(:once).and_return(1)
153
- event = {action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has restored a version \'content.0\' of <a href="/files/test-123">Hamlet</a>', timestamp: '1' }
153
+ event = { action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has restored a version \'content.0\' of <a href="/files/test-123">Hamlet</a>', timestamp: '1' }
154
154
  ContentRestoredVersionEventJob.new('test-123', @user.user_key, 'content.0').run
155
155
  expect(@user.profile_events.length).to eq(1)
156
156
  expect(@user.profile_events.first).to eq(event)
@@ -161,7 +161,7 @@ describe 'event jobs' do
161
161
  expect(@gf.events.length).to eq(1)
162
162
  expect(@gf.events.first).to eq(event)
163
163
  end
164
- it "should log content delete events" do
164
+ it "logs content delete events" do
165
165
  # ContentDelete should log the event to the depositor's profile and followers' dashboards
166
166
  @another_user.follow(@user)
167
167
  @third_user.follow(@user)
@@ -169,7 +169,7 @@ describe 'event jobs' do
169
169
  expect(@another_user.events.length).to eq(0)
170
170
  expect(@third_user.events.length).to eq(0)
171
171
  expect(Time).to receive(:now).at_least(:once).and_return(1)
172
- event = {action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has deleted file \'test-123\'', timestamp: '1' }
172
+ event = { action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has deleted file \'test-123\'', timestamp: '1' }
173
173
  ContentDeleteEventJob.new('test-123', @user.user_key).run
174
174
  expect(@user.profile_events.length).to eq(1)
175
175
  expect(@user.profile_events.first).to eq(event)
@@ -178,7 +178,7 @@ describe 'event jobs' do
178
178
  expect(@third_user.events.length).to eq(1)
179
179
  expect(@third_user.events.first).to eq(event)
180
180
  end
181
- it "should not log content-related jobs to followers who lack access" do
181
+ it "does not log content-related jobs to followers who lack access" do
182
182
  # No Content-related eventjobs should log an event to a follower who does not have access to the GF
183
183
  @another_user.follow(@user)
184
184
  @third_user.follow(@user)
@@ -188,7 +188,7 @@ describe 'event jobs' do
188
188
  expect(@gf.events.length).to eq(0)
189
189
  @now = Time.now
190
190
  expect(Time).to receive(:now).at_least(:once).and_return(@now)
191
- event = {action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has updated <a href="/files/test-123">Hamlet</a>', timestamp: @now.to_i.to_s }
191
+ event = { action: 'User <a href="/users/jilluser@example-dot-com">jilluser@example.com</a> has updated <a href="/files/test-123">Hamlet</a>', timestamp: @now.to_i.to_s }
192
192
  ContentUpdateEventJob.new('test-123', @user.user_key).run
193
193
  expect(@user.profile_events.length).to eq(1)
194
194
  expect(@user.profile_events.first).to eq(event)