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
@@ -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'