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
@@ -28,7 +28,7 @@ class CatalogController < ApplicationController
28
28
  end
29
29
 
30
30
  configure_blacklight do |config|
31
- #Show gallery view
31
+ # Show gallery view
32
32
  config.view.gallery.partials = [:index_header, :index]
33
33
  config.view.slideshow.partials = [:index]
34
34
 
@@ -119,7 +119,7 @@ class CatalogController < ApplicationController
119
119
  # solr request handler? The one set in config[:default_solr_parameters][:qt],
120
120
  # since we aren't specifying it otherwise.
121
121
  config.add_search_field('all_fields', label: 'All Fields', include_in_advanced_search: false) do |field|
122
- all_names = config.show_fields.values.map{|val| val.field}.join(" ")
122
+ all_names = config.show_fields.values.map(&:field).join(" ")
123
123
  title_name = solr_name("title", :stored_searchable)
124
124
  field.solr_parameters = {
125
125
  qf: "#{all_names} file_format_tesim all_text_timv",
@@ -312,5 +312,4 @@ class CatalogController < ApplicationController
312
312
  # mean") suggestion is offered.
313
313
  config.spell_max = 5
314
314
  end
315
-
316
315
  end
@@ -4,6 +4,7 @@ module ActionDispatch
4
4
  def closed?
5
5
  @tempfile.closed?
6
6
  end
7
+
7
8
  def close
8
9
  @tempfile.close
9
10
  end
@@ -7,7 +7,7 @@ class Sufia::Upgrade400Generator < Rails::Generators::Base
7
7
 
8
8
  source_root File.expand_path('../templates', __FILE__)
9
9
 
10
- argument :model_name, type: :string , default: "user"
10
+ argument :model_name, type: :string, default: "user"
11
11
  desc """
12
12
  This generator for upgrading sufia from 3.7.2 to 4.0 makes the following changes to your application:
13
13
  1. Updates the root route
@@ -40,9 +40,9 @@ This generator for upgrading sufia from 3.7.2 to 4.0 makes the following changes
40
40
  def inject_sufia_controller_behavior
41
41
  controller_name = "CatalogController"
42
42
  file_path = "app/controllers/catalog_controller.rb"
43
- if File.exists?(file_path)
43
+ if File.exist?(file_path)
44
44
  insert_into_file file_path, after: 'include Hydra::Controller::ControllerBehavior' do
45
- "\n # Adds Sufia behaviors to the catalog controller (#{controller_name})\n" +
45
+ "\n # Adds Sufia behaviors to the catalog controller (#{controller_name})\n" \
46
46
  " include Sufia::Catalog\n"
47
47
  end
48
48
  else
@@ -68,9 +68,9 @@ This generator for upgrading sufia from 3.7.2 to 4.0 makes the following changes
68
68
 
69
69
  def blacklight_marc
70
70
  file_path = 'app/models/solr_document.rb'
71
- return unless File.exists?(file_path) &&
72
- file_contains?('app/models/solr_document.rb', 'Blacklight::Solr::Document::Marc') &&
73
- !file_contains?('Gemfile', 'blacklight-marc')
71
+ return unless File.exist?(file_path) &&
72
+ file_contains?('app/models/solr_document.rb', 'Blacklight::Solr::Document::Marc') &&
73
+ !file_contains?('Gemfile', 'blacklight-marc')
74
74
  insert_into_file 'Gemfile', after: /gem 'sufia'.*$/ do
75
75
  "\ngem 'blacklight-marc'"
76
76
  end
@@ -85,7 +85,7 @@ This generator for upgrading sufia from 3.7.2 to 4.0 makes the following changes
85
85
 
86
86
  private
87
87
 
88
- def file_contains?(path, string)
89
- File.readlines(path).grep(/#{string}/).any?
90
- end
88
+ def file_contains?(path, string)
89
+ File.readlines(path).grep(/#{string}/).any?
90
+ end
91
91
  end
@@ -2,7 +2,6 @@
2
2
  require 'rails/generators'
3
3
 
4
4
  class Sufia::Upgrade600Generator < Rails::Generators::Base
5
-
6
5
  source_root File.expand_path('../templates', __FILE__)
7
6
 
8
7
  desc """
@@ -13,7 +12,7 @@ This generator for upgrading sufia to 6.0 makes the following changes to your ap
13
12
  def insert_builder
14
13
  insert_into_file 'app/models/search_builder.rb', after: /include Blacklight::Solr::SearchBuilderBehavior/ do
15
14
  # First line should be generated by Hydra. projecthydra/hydra-head#255
16
- "\n include Hydra::AccessControlsEnforcement" +
15
+ "\n include Hydra::AccessControlsEnforcement" \
17
16
  "\n include Sufia::SearchBuilder\n"
18
17
  end
19
18
  end
@@ -21,6 +20,4 @@ This generator for upgrading sufia to 6.0 makes the following changes to your ap
21
20
  def migrations
22
21
  generate "sufia:models:upgrade600"
23
22
  end
24
-
25
23
  end
26
-
@@ -37,8 +37,8 @@ module Sufia
37
37
  )
38
38
 
39
39
  config.assets.paths << config.root.join('vendor', 'assets', 'fonts')
40
- config.assets.precompile << %r(vjs\.(?:eot|ttf|woff)$)
41
- config.assets.precompile << %r(fontawesome-webfont\.(?:svg|ttf|woff)$)
40
+ config.assets.precompile << /vjs\.(?:eot|ttf|woff)$/
41
+ config.assets.precompile << /fontawesome-webfont\.(?:svg|ttf|woff)$/
42
42
  config.assets.precompile += %w( ZeroClipboard.swf )
43
43
  end
44
44
  end
@@ -82,7 +82,7 @@ module Sufia
82
82
  def extract_file_from_item
83
83
  encoded = item['file']['base64']
84
84
  content = Base64.decode64(encoded)
85
- tmp = Tempfile.new(item['file']['md5'], { encoding: Encoding::UTF_8 })
85
+ tmp = Tempfile.new(item['file']['md5'], encoding: Encoding::UTF_8)
86
86
  tmp.binmode
87
87
  tmp.original_filename = item['file']['filename']
88
88
  tmp.content_type = item['file']['contentType']
@@ -27,41 +27,41 @@ module Sufia
27
27
 
28
28
  private
29
29
 
30
- def logger
31
- ActiveFedora::Base.logger
32
- end
30
+ def logger
31
+ ActiveFedora::Base.logger
32
+ end
33
33
 
34
- def validate_user!
35
- log_and_raise('User not found') if user.blank?
36
- log_and_raise('User does not have an Arkivo token') if user.arkivo_token.blank?
37
- log_and_raise('User has not yet connected with Zotero') if user.zotero_userid.blank?
38
- log_and_raise('User already has a subscription') if user.arkivo_subscription.present?
39
- end
34
+ def validate_user!
35
+ log_and_raise('User not found') if user.blank?
36
+ log_and_raise('User does not have an Arkivo token') if user.arkivo_token.blank?
37
+ log_and_raise('User has not yet connected with Zotero') if user.zotero_userid.blank?
38
+ log_and_raise('User already has a subscription') if user.arkivo_subscription.present?
39
+ end
40
40
 
41
- def log_and_raise(message)
42
- logger.error "*** Arkivo error: #{message}: #{user}"
43
- raise SubscriptionError.new(message)
44
- end
41
+ def log_and_raise(message)
42
+ logger.error "*** Arkivo error: #{message}: #{user}"
43
+ raise SubscriptionError, message
44
+ end
45
45
 
46
- def post_to_api
47
- Faraday.new(url: Sufia::Arkivo.config[:url]).post do |request|
48
- request.url Sufia::Arkivo.new_subscription_url
49
- request.headers['Content-Type'] = 'application/json'
50
- request.body = new_subscription_json
46
+ def post_to_api
47
+ Faraday.new(url: Sufia::Arkivo.config[:url]).post do |request|
48
+ request.url Sufia::Arkivo.new_subscription_url
49
+ request.headers['Content-Type'] = 'application/json'
50
+ request.body = new_subscription_json
51
+ end
51
52
  end
52
- end
53
53
 
54
- def new_subscription_json
55
- {
56
- url: Sufia::Zotero.publications_url(@user.zotero_userid),
57
- plugins: [
58
- {
59
- name: "sufia",
60
- options: { token: @user.arkivo_token }
61
- }
62
- ]
63
- }.to_json
64
- end
54
+ def new_subscription_json
55
+ {
56
+ url: Sufia::Zotero.publications_url(@user.zotero_userid),
57
+ plugins: [
58
+ {
59
+ name: "sufia",
60
+ options: { token: @user.arkivo_token }
61
+ }
62
+ ]
63
+ }.to_json
64
+ end
65
65
  end
66
66
  end
67
67
  end
@@ -1,15 +1,15 @@
1
1
  module Sufia
2
2
  module Arkivo
3
3
  CREATOR_TYPES = ['author', 'interviewer', 'director', 'scriptwriter',
4
- 'inventor', 'composer', 'cartographer', 'programmer', 'artist',
5
- 'bookAuthor'
6
- ]
4
+ 'inventor', 'composer', 'cartographer', 'programmer', 'artist',
5
+ 'bookAuthor'
6
+ ]
7
7
 
8
8
  CONTRIBUTOR_TYPES = ['contributor', 'editor', 'translator', 'seriesEditor',
9
- 'interviewee', 'producer', 'castMember', 'sponsor', 'counsel',
10
- 'attorneyAgent', 'recipient', 'performer', 'wordsBy', 'commenter',
11
- 'presenter', 'guest', 'podcaster', 'reviewedAuthor', 'cosponsor'
12
- ]
9
+ 'interviewee', 'producer', 'castMember', 'sponsor', 'counsel',
10
+ 'attorneyAgent', 'recipient', 'performer', 'wordsBy', 'commenter',
11
+ 'presenter', 'guest', 'podcaster', 'reviewedAuthor', 'cosponsor'
12
+ ]
13
13
 
14
14
  class MetadataMunger
15
15
  def initialize(metadata)
@@ -48,7 +48,7 @@ module Sufia
48
48
  def call
49
49
  JSON::Validator.validate!(Sufia::Arkivo::ITEM_SCHEMA, item, version: :draft3)
50
50
  rescue JSON::Schema::ValidationError => exception
51
- raise Sufia::Arkivo::InvalidItem.new(exception.message)
51
+ raise Sufia::Arkivo::InvalidItem, exception.message
52
52
  end
53
53
  end
54
54
  end
@@ -1,4 +1,3 @@
1
1
  module Sufia
2
2
  class SingleUseError < StandardError; end
3
3
  end
4
-
@@ -1,3 +1,3 @@
1
1
  module Sufia
2
- VERSION = "6.2.0"
2
+ VERSION = "6.3.0"
3
3
  end
@@ -1,15 +1,15 @@
1
- module Sufia
2
- module Zotero
3
- def self.config
4
- @config ||= reload_config!
5
- end
1
+ module Sufia
2
+ module Zotero
3
+ def self.config
4
+ @config ||= reload_config!
5
+ end
6
6
 
7
- def self.reload_config!
8
- @config = YAML.load(ERB.new(IO.read(File.join(Rails.root, 'config', 'zotero.yml'))).result)['zotero']
9
- end
7
+ def self.reload_config!
8
+ @config = YAML.load(ERB.new(IO.read(File.join(Rails.root, 'config', 'zotero.yml'))).result)['zotero']
9
+ end
10
10
 
11
- def self.publications_url(zotero_userid)
12
- "/users/#{zotero_userid}/publications/items"
13
- end
14
- end
15
- end
11
+ def self.publications_url(zotero_userid)
12
+ "/users/#{zotero_userid}/publications/items"
13
+ end
14
+ end
15
+ end
@@ -5,14 +5,14 @@ describe Sufia::GenericFile::Actor do
5
5
 
6
6
  let(:user) { FactoryGirl.create(:user) }
7
7
  let(:generic_file) { FactoryGirl.create(:generic_file) }
8
- let(:actor) { Sufia::GenericFile::Actor.new(generic_file, user) }
9
- let(:uploaded_file) { fixture_file_upload('/world.png','image/png') }
8
+ let(:actor) { described_class.new(generic_file, user) }
9
+ let(:uploaded_file) { fixture_file_upload('/world.png', 'image/png') }
10
10
 
11
11
  describe "#create_content" do
12
12
  let(:deposit_message) { double('deposit message') }
13
13
  let(:characterize_message) { double('characterize message') }
14
14
 
15
- it "should enqueue deposit and characterize messages" do
15
+ it "enqueues deposit and characterize messages" do
16
16
  allow(ContentDepositEventJob).to receive(:new).with(generic_file.id, user.user_key).and_return(deposit_message)
17
17
  allow(CharacterizeJob).to receive(:new).with(generic_file.id).and_return(characterize_message)
18
18
  expect(Sufia.queue).to receive(:push).with(deposit_message)
@@ -24,25 +24,24 @@ describe Sufia::GenericFile::Actor do
24
24
  let(:file) { "world.png" }
25
25
  let(:long_name) { "an absurdly long title that goes on way to long and messes up the display of the page which should not need to be this big in order to show this impossibly long, long, long, oh so long string" }
26
26
  let(:short_name) { "Nice Short Name" }
27
- let(:actor) { Sufia::GenericFile::Actor.new(generic_file, user) }
27
+ let(:actor) { described_class.new(generic_file, user) }
28
28
  before do
29
29
  allow(generic_file).to receive(:label).and_return(short_name)
30
30
  allow(Sufia.queue).to receive(:push)
31
31
  actor.create_content(fixture_file_upload(file), long_name, 'content', 'image/png')
32
- end
32
+ end
33
33
  subject { generic_file.title }
34
34
  it { is_expected.to eql [short_name] }
35
35
  end
36
36
 
37
37
  context "with two existing versions from different users" do
38
-
39
38
  let(:file1) { "world.png" }
40
39
  let(:file2) { "image.jpg" }
41
- let(:actor1) { Sufia::GenericFile::Actor.new(generic_file, user) }
42
- let(:actor2) { Sufia::GenericFile::Actor.new(generic_file, second_user) }
40
+ let(:actor1) { described_class.new(generic_file, user) }
41
+ let(:actor2) { described_class.new(generic_file, second_user) }
43
42
 
44
43
  let(:second_user) { FactoryGirl.find_or_create(:archivist) }
45
- let(:versions) { generic_file.content.versions }
44
+ let(:versions) { generic_file.content.versions }
46
45
 
47
46
  before do
48
47
  allow(Sufia.queue).to receive(:push)
@@ -50,22 +49,22 @@ describe Sufia::GenericFile::Actor do
50
49
  actor2.create_content(fixture_file_upload(file2), file2, 'content', 'image/jpeg')
51
50
  end
52
51
 
53
- it "should have two versions" do
52
+ it "has two versions" do
54
53
  expect(versions.all.count).to eq 2
55
54
  end
56
55
 
57
- it "should have the current version" do
56
+ it "has the current version" do
58
57
  expect(generic_file.content.latest_version.label).to eq 'version2'
59
58
  expect(generic_file.content.mime_type).to eq "image/jpeg"
60
59
  expect(generic_file.content.original_name).to eq file2
61
60
  end
62
61
 
63
- it "should use the first version for the object's title and label" do
62
+ it "uses the first version for the object's title and label" do
64
63
  expect(generic_file.label).to eql(file1)
65
64
  expect(generic_file.title.first).to eql(file1)
66
65
  end
67
66
 
68
- it "should note the user for each version" do
67
+ it "notes the user for each version" do
69
68
  expect(VersionCommitter.where(version_id: versions.first.uri).pluck(:committer_login)).to eq [user.user_key]
70
69
  expect(VersionCommitter.where(version_id: versions.last.uri).pluck(:committer_login)).to eq [second_user.user_key]
71
70
  end
@@ -73,19 +72,19 @@ describe Sufia::GenericFile::Actor do
73
72
  end
74
73
 
75
74
  describe "#virus_check" do
76
- it "should return the results of running ClamAV scanfile method" do
75
+ it "returns the results of running ClamAV scanfile method" do
77
76
  expect(ClamAV.instance).to receive(:scanfile).and_return(1)
78
- expect { Sufia::GenericFile::Actor.virus_check(File.new(fixture_path + '/world.png')) }.to raise_error(Sufia::VirusFoundError)
77
+ expect { described_class.virus_check(File.new(fixture_path + '/world.png')) }.to raise_error(Sufia::VirusFoundError)
79
78
  end
80
79
  end
81
80
 
82
81
  describe "#featured_work" do
83
82
  let(:gf) { FactoryGirl.create(:generic_file, visibility: 'open') }
84
- let(:actor) { Sufia::GenericFile::Actor.new(gf, user)}
83
+ let(:actor) { described_class.new(gf, user) }
85
84
 
86
85
  before { FeaturedWork.create(generic_file_id: gf.id) }
87
86
 
88
- it "should be removed if document is not public" do
87
+ it "is removed if document is not public" do
89
88
  # Switch document from public to restricted
90
89
  expect { actor.update_metadata({}, 'restricted') }.to change { FeaturedWork.count }.by(-1)
91
90
  end
@@ -100,7 +99,7 @@ describe Sufia::GenericFile::Actor do
100
99
  f.label = label
101
100
  end
102
101
  end
103
- let(:actor) { Sufia::GenericFile::Actor.new(generic_file_with_label, user)}
102
+ let(:actor) { described_class.new(generic_file_with_label, user) }
104
103
 
105
104
  before do
106
105
  allow(actor).to receive(:save_characterize_and_record_committer).and_return("true")
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Admin::StatsController, type: :controller do
4
4
  let(:user1) { FactoryGirl.find_or_create(:user) }
5
5
  let(:user2) { FactoryGirl.find_or_create(:archivist) }
6
-
6
+
7
7
  before do
8
8
  allow(user1).to receive(:groups).and_return(['admin'])
9
9
  allow(user2).to receive(:groups).and_return(['not-admin'])
@@ -54,7 +54,7 @@ describe Admin::StatsController, type: :controller do
54
54
  ActiveFedora::SolrService.instance.conn.delete_by_id(poltergeist.id)
55
55
  original_files_count
56
56
  end
57
- it "should provide accurate files_count, ensuring that solr deletes have been expunged first" do
57
+ it "provides accurate files_count, ensuring that solr deletes have been expunged first" do
58
58
  get :index
59
59
  expect(assigns[:files_count][:total]).to eq(original_files_count - 1)
60
60
  end
@@ -63,9 +63,9 @@ describe Admin::StatsController, type: :controller do
63
63
  describe "counts" do
64
64
  context "when date range not set" do
65
65
  before do
66
- FactoryGirl.create(:generic_file, depositor: user1)
67
- FactoryGirl.create(:public_file, depositor: user1)
68
- FactoryGirl.create(:registered_file, depositor: user1)
66
+ FactoryGirl.build(:generic_file, depositor: user1, id: "abc1223").update_index
67
+ FactoryGirl.build(:public_file, depositor: user1, id: "bbb1223").update_index
68
+ FactoryGirl.build(:registered_file, depositor: user1, id: "ccc1223").update_index
69
69
  Collection.create(title: "test") do |c|
70
70
  c.apply_depositor_metadata(user1.user_key)
71
71
  end
@@ -98,5 +98,56 @@ describe Admin::StatsController, type: :controller do
98
98
  end
99
99
  end
100
100
 
101
+ describe "depositor counts" do
102
+ before do
103
+ GenericFile.new(id: "abc123") do |gf|
104
+ gf.apply_depositor_metadata(user1)
105
+ gf.update_index
106
+ end
107
+ GenericFile.new(id: "def123") do |gf|
108
+ gf.apply_depositor_metadata(user2)
109
+ gf.update_index
110
+ end
111
+ GenericFile.new(id: "zzz123") do |gf|
112
+ gf.create_date = [2.days.ago]
113
+ gf.apply_depositor_metadata(user1)
114
+ gf.update_index
115
+ end
116
+ Collection.new(id: "ccc123") do |c|
117
+ c.apply_depositor_metadata(user1)
118
+ c.update_index
119
+ end
120
+ end
121
+
122
+ it "gathers user deposits" do
123
+ get :index
124
+ expect(assigns[:depositors]).to include({ key: user1.user_key, deposits: 2, user: user1 }, key: user2.user_key, deposits: 1, user: user2)
125
+ end
126
+
127
+ it "gathers user deposits during a date range" do
128
+ get :index, deposit_stats: { start_date: 1.days.ago.strftime("%Y-%m-%d"), end_date: 0.days.ago.strftime("%Y-%m-%d") }
129
+ expect(assigns[:depositors]).to include({ key: user1.user_key, deposits: 1, user: user1 }, key: user2.user_key, deposits: 1, user: user2)
130
+ end
131
+
132
+ context "more than 10 users" do
133
+ let(:users) { [] }
134
+ before do
135
+ (1..12).each do |number|
136
+ luser = User.create(email: "user#{number}@blah.com", password: "blahbalh")
137
+ users << luser
138
+ GenericFile.new(id: "more#{number}") do |gf|
139
+ gf.apply_depositor_metadata(luser)
140
+ gf.update_index
141
+ end
142
+ end
143
+ end
144
+
145
+ it "gathers user deposits" do
146
+ get :index
147
+ expect(assigns[:depositors]).to include({ key: user1.user_key, deposits: 2, user: user1 }, key: user2.user_key, deposits: 1, user: user2)
148
+ users.each { |user| expect(assigns[:depositors]).to include(key: user.user_key, deposits: 1, user: user) }
149
+ end
150
+ end
151
+ end
101
152
  end
102
153
  end