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
@@ -60,13 +60,14 @@ describe API::ZoteroController, type: :controller do
60
60
 
61
61
  let(:token) { object_double(OAuth::RequestToken.new(client), authorize_url: 'https://www.zotero.org/oauth/authorize?identity=1&oauth_callback=http%3A%2F%2Ftest.host%2Fapi%2Fzotero%2Fcallback&oauth_token=bc2502f2750983c57224') }
62
62
  let(:client) do
63
- OAuth::Consumer.new(Sufia::Zotero.config['client_key'], Sufia::Zotero.config['client_secret'], {
64
- site: 'https://www.zotero.org',
65
- scheme: :query_string,
66
- http_method: :get,
67
- request_token_path: '/oauth/request',
68
- access_token_path: '/oauth/access',
69
- authorize_path: '/oauth/authorize'})
63
+ OAuth::Consumer.new(Sufia::Zotero.config['client_key'],
64
+ Sufia::Zotero.config['client_secret'],
65
+ site: 'https://www.zotero.org',
66
+ scheme: :query_string,
67
+ http_method: :get,
68
+ request_token_path: '/oauth/request',
69
+ access_token_path: '/oauth/access',
70
+ authorize_path: '/oauth/authorize')
70
71
  end
71
72
 
72
73
  subject { response }
@@ -151,8 +152,8 @@ describe API::ZoteroController, type: :controller do
151
152
  let(:pin) { '12345' }
152
153
  let(:user_token) do
153
154
  double('token',
154
- params: { oauth_token: token_string },
155
- get_access_token: access_token)
155
+ params: { oauth_token: token_string },
156
+ get_access_token: access_token)
156
157
  end
157
158
  let(:zuserid) { 'myzuser' }
158
159
  let(:access_token) do
@@ -1,14 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe AuthoritiesController, :type => :controller do
3
+ describe AuthoritiesController, type: :controller do
4
4
  describe "#query" do
5
- it "should return an array of hashes" do
6
- mock_hits = [{label: "English", uri: "http://example.org/eng"},
7
- {label: "Environment", uri: "http://example.org/env"},
8
- {label: "Edge", uri: "http://example.org/edge"},
9
- {label: "Edgar", uri: "http://example.org/edga"},
10
- {label: "Eddie", uri: "http://example.org/edd"},
11
- {label: "Economics", uri: "http://example.org/eco"}]
5
+ it "returns an array of hashes" do
6
+ mock_hits = [{ label: "English", uri: "http://example.org/eng" },
7
+ { label: "Environment", uri: "http://example.org/env" },
8
+ { label: "Edge", uri: "http://example.org/edge" },
9
+ { label: "Edgar", uri: "http://example.org/edga" },
10
+ { label: "Eddie", uri: "http://example.org/edd" },
11
+ { label: "Economics", uri: "http://example.org/eco" }]
12
12
  expect(LocalAuthority).to receive(:entries_by_term).and_return(mock_hits)
13
13
  xhr :get, :query, model: "generic_files", term: "subject", q: "E"
14
14
  expect(response).to be_success
@@ -11,64 +11,63 @@ describe BatchController do
11
11
  let(:batch) { Batch.create }
12
12
  context "enquing a batch job" do
13
13
  before do
14
- allow(BatchUpdateJob).to receive(:new).with(user.user_key, batch.id, {'1' => 'foo'},
15
- { tag: [] }, 'open').and_return(batch_update_message)
14
+ allow(BatchUpdateJob).to receive(:new).with(user.user_key, batch.id, { '1' => 'foo' },
15
+ { tag: [] }, 'open').and_return(batch_update_message)
16
16
  end
17
- it "should be successful" do
17
+ it "is successful" do
18
18
  expect(Sufia.queue).to receive(:push).with(batch_update_message).once
19
- post :update, id: batch.id, title: {'1' => 'foo'}, visibility: 'open', generic_file: { tag: [""] }
19
+ post :update, id: batch.id, title: { '1' => 'foo' }, visibility: 'open', generic_file: { tag: [""] }
20
20
  expect(response).to redirect_to routes.url_helpers.dashboard_files_path
21
21
  expect(flash[:notice]).to include("Your files are being processed")
22
22
  end
23
23
  end
24
24
 
25
25
  describe "when submiting files on behalf of another user" do
26
- let(:somebody_else_file) do
26
+ let(:somebody_else_file) do
27
27
  f = GenericFile.create(title: ['Original Title']) { |gf| gf.apply_depositor_metadata('current_user') }
28
28
  f.on_behalf_of = 'somebody@else.org'
29
29
  f.save!
30
30
  f
31
- end
31
+ end
32
32
  let(:batch) { Batch.create { |b| b.generic_files.push(somebody_else_file) } }
33
- it "should go to my shares page" do
34
- post :update, id: batch, "generic_file"=>{"permissions_attributes"=>[{"type" => "group", "name" => "public", "access" => "read"}]}
33
+ it "goes to my shares page" do
34
+ post :update, id: batch, "generic_file" => { "permissions_attributes" => [{ "type" => "group", "name" => "public", "access" => "read" }] }
35
35
  expect(response).to redirect_to routes.url_helpers.dashboard_shares_path
36
36
  end
37
37
  end
38
38
 
39
-
40
39
  describe "when user has edit permissions on a file" do
41
- # TODO all these tests could move to batch_update_job_spec.rb
40
+ # TODO: all these tests could move to batch_update_job_spec.rb
42
41
  let!(:file) { GenericFile.create(batch: batch) { |f| f.apply_depositor_metadata(user) } }
43
42
 
44
- it "should set the groups" do
45
- post :update, id: batch, "generic_file"=>{"permissions_attributes"=>[{"type" => "group", "name" => "public", "access" => "read"}]}
43
+ it "sets the groups" do
44
+ post :update, id: batch, "generic_file" => { "permissions_attributes" => [{ "type" => "group", "name" => "public", "access" => "read" }] }
46
45
  file.reload
47
46
  expect(file.read_groups).to include "public"
48
47
  expect(response).to redirect_to routes.url_helpers.dashboard_files_path
49
48
  end
50
49
 
51
- it "should set public read access" do
50
+ it "sets public read access" do
52
51
  post :update, id: batch, visibility: "open", generic_file: { tag: [""] }
53
52
  expect(file.reload.read_groups).to eq ['public']
54
53
  end
55
54
 
56
- it "should set metadata like title" do
55
+ it "sets metadata like title" do
57
56
  post :update, id: batch, generic_file: { tag: ["footag", "bartag"] }, title: { file.id => ["New Title"] }
58
57
  file.reload
59
58
  expect(file.title).to eq ["New Title"]
60
- # TODO is order important?
59
+ # TODO: is order important?
61
60
  expect(file.tag).to include("footag", "bartag")
62
61
  end
63
62
 
64
- it "should not set any tags" do
63
+ it "does not set any tags" do
65
64
  post :update, id: batch, generic_file: { tag: [""] }
66
65
  expect(file.reload.tag).to be_empty
67
66
  end
68
67
  end
69
68
 
70
69
  describe "when user does not have edit permissions on a file" do
71
- # TODO all these tests could move to batch_update_job_spec.rb
70
+ # TODO: all these tests could move to batch_update_job_spec.rb
72
71
  let(:file) do
73
72
  GenericFile.new(batch: batch, title: ['Original Title']).tap do |f|
74
73
  f.apply_depositor_metadata('someone_else')
@@ -76,8 +75,8 @@ describe BatchController do
76
75
  end
77
76
  end
78
77
 
79
- it "should not modify the object" do
80
- post :update, id: batch, "generic_file"=>{"read_groups_string"=>"group1, group2", "read_users_string"=>"", "tag"=>[""]}, "title"=>{file.id=>"Title Wont Change"}
78
+ it "does not modify the object" do
79
+ post :update, id: batch, "generic_file" => { "read_groups_string" => "group1, group2", "read_users_string" => "", "tag" => [""] }, "title" => { file.id => "Title Wont Change" }
81
80
  file.reload
82
81
  expect(file.title).to eq ["Original Title"]
83
82
  expect(file.read_groups).to eq []
@@ -93,7 +92,7 @@ describe BatchController do
93
92
  let!(:file) { GenericFile.create(batch: b1, label: 'f1') { |f| f.apply_depositor_metadata(user) } }
94
93
  let!(:file2) { GenericFile.create(batch: b1, label: 'f2') { |f| f.apply_depositor_metadata(user) } }
95
94
 
96
- it "should default creator" do
95
+ it "defaults creator" do
97
96
  get :edit, id: b1
98
97
  expect(assigns[:form]).not_to be_persisted
99
98
  expect(assigns[:form].creator[0]).to eq user.display_name
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe BatchEditsController, :type => :controller do
3
+ describe BatchEditsController, type: :controller do
4
4
  before do
5
5
  sign_in FactoryGirl.find_or_create(:jill)
6
6
  allow_any_instance_of(User).to receive(:groups).and_return([])
@@ -22,17 +22,17 @@ describe BatchEditsController, :type => :controller do
22
22
  expect(controller).to receive(:can?).with(:edit, @two.id).and_return(true)
23
23
  end
24
24
 
25
- it "should be successful" do
25
+ it "is successful" do
26
26
  get :edit
27
27
  expect(response).to be_successful
28
28
  expect(assigns[:terms]).to eq [:creator, :contributor, :description, :tag, :rights, :publisher,
29
- :date_created, :subject, :language, :identifier, :based_near, :related_url]
29
+ :date_created, :subject, :language, :identifier, :based_near, :related_url]
30
30
  expect(assigns[:generic_file].creator).to eq ["Fred", "Wilma"]
31
31
  expect(assigns[:generic_file].publisher).to eq ["Rand McNally"]
32
32
  expect(assigns[:generic_file].language).to eq ["en"]
33
33
  end
34
34
 
35
- it "should set the breadcrumb trail" do
35
+ it "sets the breadcrumb trail" do
36
36
  expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.title'), Sufia::Engine.routes.url_helpers.dashboard_index_path)
37
37
  expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.my.files'), Sufia::Engine.routes.url_helpers.dashboard_files_path)
38
38
  get :edit
@@ -60,31 +60,30 @@ describe BatchEditsController, :type => :controller do
60
60
 
61
61
  let(:mycontroller) { "my/files" }
62
62
 
63
- it "should be successful" do
63
+ it "is successful" do
64
64
  put :update, update_type: "delete_all"
65
65
  expect(response).to redirect_to(Sufia::Engine.routes.url_for(controller: "dashboard", only_path: true))
66
66
  expect { GenericFile.find(one.id) }.to raise_error(Ldp::Gone)
67
67
  expect { GenericFile.find(two.id) }.to raise_error(Ldp::Gone)
68
68
  end
69
69
 
70
- it "should redirect to the return controller" do
70
+ it "redirects to the return controller" do
71
71
  put :update, update_type: "delete_all", return_controller: mycontroller
72
72
  expect(response).to redirect_to(Sufia::Engine.routes.url_for(controller: mycontroller, only_path: true))
73
73
  end
74
74
 
75
- it "should update the records" do
75
+ it "updates the records" do
76
76
  put :update, update_type: "update", generic_file: { subject: ["zzz"] }
77
77
  expect(response).to be_redirect
78
78
  expect(GenericFile.find(one.id).subject).to eq ["zzz"]
79
79
  expect(GenericFile.find(two.id).subject).to eq ["zzz"]
80
80
  end
81
81
 
82
- it "should update permissions" do
82
+ it "updates permissions" do
83
83
  put :update, update_type: "update", visibility: "authenticated"
84
84
  expect(response).to be_redirect
85
85
  expect(GenericFile.find(one.id).visibility).to eq "authenticated"
86
86
  expect(GenericFile.find(two.id).visibility).to eq "authenticated"
87
87
  end
88
88
  end
89
-
90
89
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe CatalogController, :type => :controller do
3
+ describe CatalogController, type: :controller do
4
4
  routes { Rails.application.class.routes }
5
5
 
6
6
  let(:user) { FactoryGirl.find_or_create(:jill) }
@@ -40,7 +40,7 @@ describe CatalogController, :type => :controller do
40
40
  end
41
41
 
42
42
  describe "term search" do
43
- it "should find records" do
43
+ it "finds records" do
44
44
  get :index, q: "pdf", owner: 'all'
45
45
  expect(response).to be_success
46
46
  expect(response).to render_template('catalog/index')
@@ -55,7 +55,7 @@ describe CatalogController, :type => :controller do
55
55
  # TODO: this is not how a facet query is done.
56
56
  get :index, q: "{f=contributor_tesim}Contrib1"
57
57
  end
58
- it "should find facet files" do
58
+ it "finds facet files" do
59
59
  expect(response).to be_success
60
60
  expect(response).to render_template('catalog/index')
61
61
  expect(assigns(:document_list).count).to eq 1
@@ -64,10 +64,10 @@ describe CatalogController, :type => :controller do
64
64
 
65
65
  context "with collections" do
66
66
  before do
67
- @collection = Collection.new(title:"my collection", tag: ['rocks'], read_groups: ['public']).tap do |c|
68
- c.apply_depositor_metadata('mjg36')
69
- c.save!
70
- end
67
+ @collection = Collection.new(title: "my collection", tag: ['rocks'], read_groups: ['public']).tap do |c|
68
+ c.apply_depositor_metadata('mjg36')
69
+ c.save!
70
+ end
71
71
  end
72
72
 
73
73
  it "finds collections and files" do
@@ -76,8 +76,6 @@ describe CatalogController, :type => :controller do
76
76
  doc_list = assigns(:document_list)
77
77
  expect(doc_list.map(&:id)).to match_array [@collection.id, @gf1.id]
78
78
  end
79
-
80
79
  end
81
-
82
80
  end
83
81
  end
@@ -13,7 +13,7 @@ describe CollectionsController do
13
13
  sign_in user
14
14
  end
15
15
 
16
- it 'should assign @collection' do
16
+ it 'assigns @collection' do
17
17
  get :new
18
18
  expect(assigns(:collection)).to be_kind_of(Collection)
19
19
  end
@@ -24,54 +24,53 @@ describe CollectionsController do
24
24
  sign_in user
25
25
  end
26
26
 
27
- it "should create a Collection" do
28
- expect {
29
- post :create, collection: {title: "My First Collection ", description: "The Description\r\n\r\nand more"}
30
- }.to change{ Collection.count }.by(1)
27
+ it "creates a Collection" do
28
+ expect do
29
+ post :create, collection: { title: "My First Collection ", description: "The Description\r\n\r\nand more" }
30
+ end.to change { Collection.count }.by(1)
31
31
  end
32
32
 
33
- it "should remove blank strings from params before creating Collection" do
34
- expect {
33
+ it "removes blank strings from params before creating Collection" do
34
+ expect do
35
35
  post :create, collection: {
36
36
  title: "My First Collection ", creator: [""] }
37
- }.to change{ Collection.count }.by(1)
37
+ end.to change { Collection.count }.by(1)
38
38
  expect(assigns[:collection].title).to eq("My First Collection ")
39
39
  expect(assigns[:collection].creator).to eq([])
40
40
  end
41
41
 
42
- it "should create a Collection with files I can access" do
42
+ it "creates a Collection with files I can access" do
43
43
  @asset1 = GenericFile.new(title: ["First of the Assets"])
44
44
  @asset1.apply_depositor_metadata(user.user_key)
45
45
  @asset1.save
46
46
  @asset2 = GenericFile.new(title: ["Second of the Assets"], depositor: user.user_key)
47
47
  @asset2.apply_depositor_metadata(user.user_key)
48
48
  @asset2.save
49
- @asset3 = GenericFile.new(title: ["Third of the Assets"], depositor:'abc')
49
+ @asset3 = GenericFile.new(title: ["Third of the Assets"], depositor: 'abc')
50
50
  @asset3.apply_depositor_metadata('abc')
51
51
  @asset3.save
52
- expect {
52
+ expect do
53
53
  post :create, collection: { title: "My own Collection", description: "The Description\r\n\r\nand more" },
54
- batch_document_ids: [@asset1.id, @asset2.id, @asset3.id]
55
- }.to change{ Collection.count }.by(1)
54
+ batch_document_ids: [@asset1.id, @asset2.id, @asset3.id]
55
+ end.to change { Collection.count }.by(1)
56
56
  collection = assigns(:collection)
57
57
  expect(collection.members).to match_array [@asset1, @asset2]
58
58
  end
59
59
 
60
- it "should add docs to the collection if a batch id is provided and add the collection id to the documents in the collection" do
60
+ it "adds docs to the collection if a batch id is provided and add the collection id to the documents in the collection" do
61
61
  @asset1 = GenericFile.new(title: ["First of the Assets"])
62
62
  @asset1.apply_depositor_metadata(user.user_key)
63
63
  @asset1.save
64
64
  post :create, batch_document_ids: [@asset1.id],
65
- collection: { title: "My Second Collection ", description: "The Description\r\n\r\nand more" }
65
+ collection: { title: "My Second Collection ", description: "The Description\r\n\r\nand more" }
66
66
  expect(assigns[:collection].members).to eq [@asset1]
67
- asset_results = ActiveFedora::SolrService.instance.conn.get "select", params:{fq:["id:\"#{@asset1.id}\""],fl:['id',Solrizer.solr_name(:collection)]}
67
+ asset_results = ActiveFedora::SolrService.instance.conn.get "select", params: { fq: ["id:\"#{@asset1.id}\""], fl: ['id', Solrizer.solr_name(:collection)] }
68
68
  expect(asset_results["response"]["numFound"]).to eq 1
69
69
  doc = asset_results["response"]["docs"].first
70
70
  expect(doc["id"]).to eq @asset1.id
71
71
  afterupdate = GenericFile.find(@asset1.id)
72
72
  expect(doc[Solrizer.solr_name(:collection)]).to eq afterupdate.to_solr[Solrizer.solr_name(:collection)]
73
73
  end
74
-
75
74
  end
76
75
 
77
76
  describe "#update" do
@@ -91,23 +90,23 @@ describe CollectionsController do
91
90
  @asset2 = GenericFile.new(title: ["Second of the Assets"], depositor: user.user_key)
92
91
  @asset2.apply_depositor_metadata(user.user_key)
93
92
  @asset2.save
94
- @asset3 = GenericFile.new(title: ["Third of the Assets"], depositor:'abc')
93
+ @asset3 = GenericFile.new(title: ["Third of the Assets"], depositor: 'abc')
95
94
  @asset3.apply_depositor_metadata(user.user_key)
96
95
  @asset3.save
97
96
  end
98
97
 
99
- it "should set collection on members" do
100
- put :update, id: collection, collection: {members:"add"}, batch_document_ids: [@asset3.id, @asset1.id, @asset2.id]
98
+ it "sets collection on members" do
99
+ put :update, id: collection, collection: { members: "add" }, batch_document_ids: [@asset3.id, @asset1.id, @asset2.id]
101
100
  expect(response).to redirect_to routes.url_helpers.collection_path(collection)
102
101
  expect(assigns[:collection].members).to match_array [@asset2, @asset3, @asset1]
103
- asset_results = ActiveFedora::SolrService.instance.conn.get "select", params:{fq:["id:\"#{@asset2.id}\""],fl:['id',Solrizer.solr_name(:collection)]}
102
+ asset_results = ActiveFedora::SolrService.instance.conn.get "select", params: { fq: ["id:\"#{@asset2.id}\""], fl: ['id', Solrizer.solr_name(:collection)] }
104
103
  expect(asset_results["response"]["numFound"]).to eq 1
105
104
  doc = asset_results["response"]["docs"].first
106
105
  expect(doc["id"]).to eq @asset2.id
107
106
  afterupdate = GenericFile.find(@asset2.id)
108
107
  expect(doc[Solrizer.solr_name(:collection)]).to eq afterupdate.to_solr[Solrizer.solr_name(:collection)]
109
- put :update, id: collection, collection: {members:"remove"}, batch_document_ids: [@asset2]
110
- asset_results = ActiveFedora::SolrService.instance.conn.get "select", params:{fq:["id:\"#{@asset2.id}\""],fl:['id',Solrizer.solr_name(:collection)]}
108
+ put :update, id: collection, collection: { members: "remove" }, batch_document_ids: [@asset2]
109
+ asset_results = ActiveFedora::SolrService.instance.conn.get "select", params: { fq: ["id:\"#{@asset2.id}\""], fl: ['id', Solrizer.solr_name(:collection)] }
111
110
  expect(asset_results["response"]["numFound"]).to eq 1
112
111
  doc = asset_results["response"]["docs"].first
113
112
  expect(doc["id"]).to eq @asset2.id
@@ -117,19 +116,18 @@ describe CollectionsController do
117
116
  end
118
117
 
119
118
  context "updating a collections metadata" do
120
- it "should save the metadata" do
119
+ it "saves the metadata" do
121
120
  put :update, id: collection, collection: { creator: ['Emily'] }
122
121
  collection.reload
123
122
  expect(collection.creator).to eq ['Emily']
124
123
  end
125
124
 
126
- it "should remove blank strings from params before updating Collection metadata" do
125
+ it "removes blank strings from params before updating Collection metadata" do
127
126
  put :update, id: collection, collection: {
128
127
  title: "My Next Collection ", creator: [""] }
129
128
  expect(assigns[:collection].title).to eq("My Next Collection ")
130
129
  expect(assigns[:collection].creator).to eq([])
131
130
  end
132
-
133
131
  end
134
132
  end
135
133
 
@@ -152,14 +150,14 @@ describe CollectionsController do
152
150
 
153
151
  let(:collection) do
154
152
  Collection.create(title: "My collection",
155
- description: "My incredibly detailed description of the collection",
156
- members: [asset1, asset2, asset3]) { |c| c.apply_depositor_metadata(user) }
153
+ description: "My incredibly detailed description of the collection",
154
+ members: [asset1, asset2, asset3]) { |c| c.apply_depositor_metadata(user) }
157
155
  end
158
156
 
159
157
  context "when signed in" do
160
158
  before { sign_in user }
161
159
 
162
- it "should return the collection and its members" do
160
+ it "returns the collection and its members" do
163
161
  expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.title'), Sufia::Engine.routes.url_helpers.dashboard_index_path)
164
162
  get :show, id: collection
165
163
  expect(response).to be_successful
@@ -170,7 +168,7 @@ describe CollectionsController do
170
168
  end
171
169
 
172
170
  context "not signed in" do
173
- it "should not show me files in the collection" do
171
+ it "does not show me files in the collection" do
174
172
  get :show, id: collection
175
173
  expect(assigns[:member_docs].count).to eq 0
176
174
  end
@@ -180,14 +178,14 @@ describe CollectionsController do
180
178
  describe "#edit" do
181
179
  let(:collection) do
182
180
  Collection.create(title: "My collection",
183
- description: "My incredibly detailed description of the collection") do |c|
181
+ description: "My incredibly detailed description of the collection") do |c|
184
182
  c.apply_depositor_metadata(user)
185
183
  end
186
184
  end
187
185
 
188
186
  before { sign_in user }
189
187
 
190
- it "should not show flash" do
188
+ it "does not show flash" do
191
189
  get :edit, id: collection
192
190
  expect(flash[:notice]).to be_nil
193
191
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ContentBlocksController, :type => :controller do
3
+ describe ContentBlocksController, type: :controller do
4
4
  describe "#update" do
5
5
  let(:content_block) { FactoryGirl.create(:content_block) }
6
6
  before { request.env["HTTP_REFERER"] = "whence_i_came" }
@@ -36,7 +36,7 @@ describe ContentBlocksController, :type => :controller do
36
36
  before { allow(controller).to receive_messages(current_user: user) }
37
37
 
38
38
  context "as a user in the admin group" do
39
- before { expect(user).to receive(:groups).and_return( ['admin', 'registered']) }
39
+ before { expect(user).to receive(:groups).and_return(['admin', 'registered']) }
40
40
 
41
41
  it "UPDATE should save" do
42
42
  patch :update, id: content_block, content_block: { value: 'foo' }
@@ -45,9 +45,9 @@ describe ContentBlocksController, :type => :controller do
45
45
  end
46
46
 
47
47
  it "CREATE should save" do
48
- expect {
48
+ expect do
49
49
  post :create, content_block: { name: 'NNN', value: 'VVV', external_key: 'key' }
50
- }.to change { ContentBlock.count}.by(1)
50
+ end.to change { ContentBlock.count }.by(1)
51
51
  expect(response).to redirect_to "whence_i_came"
52
52
  expect(assigns[:content_block].name).to eq 'NNN'
53
53
  expect(assigns[:content_block].value).to eq 'VVV'