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
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'generic_files/_browse_everything.html.erb', :type => :view do
3
+ describe 'generic_files/_browse_everything.html.erb', type: :view do
4
4
  it 'shows user timing warning' do
5
5
  render
6
6
  page = Capybara::Node::Simple.new(rendered)
7
- expect(page).to have_selector('div.alert-success', text: /Please note that if you upload a large number of files/i , count: 1)
7
+ expect(page).to have_selector('div.alert-success', text: /Please note that if you upload a large number of files/i, count: 1)
8
8
  end
9
9
  end
@@ -1,11 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'generic_files/_permission_form.html.erb', :type => :view do
4
- let(:generic_file) {
3
+ describe 'generic_files/_permission_form.html.erb', type: :view do
4
+ let(:generic_file) do
5
5
  stub_model(GenericFile, id: '123',
6
- depositor: 'bob',
7
- resource_type: ['Dataset'])
8
- }
6
+ depositor: 'bob',
7
+ resource_type: ['Dataset'])
8
+ end
9
9
 
10
10
  let(:form) do
11
11
  form_for(generic_file, url: '/update') do |gf_form|
@@ -23,7 +23,7 @@ describe 'generic_files/_permission_form.html.erb', :type => :view do
23
23
  context "without additional users" do
24
24
  let(:permissions) { [] }
25
25
 
26
- it "should draw the permissions form without error" do
26
+ it "draws the permissions form without error" do
27
27
  expect(rendered).to have_css("input#new_user_name_skel")
28
28
  expect(rendered).not_to have_css("button.remove_perm")
29
29
  end
@@ -33,13 +33,12 @@ describe 'generic_files/_permission_form.html.erb', :type => :view do
33
33
  let(:depositor_permission) { Hydra::AccessControls::Permission.new(id: '123', name: 'bob', type: 'person', access: 'edit') }
34
34
  let(:public_permission) { Hydra::AccessControls::Permission.new(id: '124', name: 'public', type: 'group', access: 'read') }
35
35
  let(:other_permission) { Hydra::AccessControls::Permission.new(id: '125', name: 'joe@example.com', type: 'person', access: 'edit') }
36
- let(:permissions) { [ depositor_permission, public_permission, other_permission] }
36
+ let(:permissions) { [depositor_permission, public_permission, other_permission] }
37
37
 
38
- it "should draw the permissions form without error" do
38
+ it "draws the permissions form without error" do
39
39
  expect(rendered).to have_css("input#new_user_name_skel")
40
40
  expect(rendered).to have_css("button.remove_perm", count: 1) # depositor and public should be filtered out
41
41
  expect(rendered).to have_css("button.remove_perm[data-index='2']")
42
42
  end
43
43
  end
44
-
45
44
  end
@@ -13,15 +13,15 @@ describe 'generic_files/edit.html.erb', :no_clean do
13
13
  let(:versions_graph) { double(all: [version1]) }
14
14
  let(:content) { double('content', mimeType: 'application/pdf') }
15
15
 
16
- let(:generic_file) {
16
+ let(:generic_file) do
17
17
  stub_model(GenericFile, id: '123',
18
- depositor: 'bob',
19
- resource_type: ['Book', 'Dataset'])
20
- }
18
+ depositor: 'bob',
19
+ resource_type: ['Book', 'Dataset'])
20
+ end
21
21
 
22
- let(:form) {
22
+ let(:form) do
23
23
  Sufia::Forms::GenericFileEditForm.new(generic_file)
24
- }
24
+ end
25
25
 
26
26
  before do
27
27
  allow(generic_file).to receive(:content).and_return(content)
@@ -36,7 +36,7 @@ describe 'generic_files/edit.html.erb', :no_clean do
36
36
  Capybara::Node::Simple.new(rendered)
37
37
  end
38
38
 
39
- it "should only draw one resource_type multiselect" do
39
+ it "onlies draw one resource_type multiselect" do
40
40
  expect(page).to have_selector("select#generic_file_resource_type", count: 1)
41
41
  end
42
42
  end
@@ -1,29 +1,29 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'generic_files/show.html.erb', :type => :view do
4
- let(:depositor) {
3
+ describe 'generic_files/show.html.erb', type: :view do
4
+ let(:depositor) do
5
5
  stub_model(User,
6
- user_key: 'bob',
7
- twitter_handle: 'bot4lib')
8
- }
6
+ user_key: 'bob',
7
+ twitter_handle: 'bot4lib')
8
+ end
9
9
 
10
- let(:content){ double('content', versions: [], mimeType: 'application/pdf') }
10
+ let(:content) { double('content', versions: [], mimeType: 'application/pdf') }
11
11
 
12
12
  let(:generic_file) do
13
13
  stub_model(GenericFile, id: '123',
14
- depositor: depositor.user_key,
15
- audit_stat: 1,
16
- title: ['My Title'],
17
- description: ['Lorem ipsum lorem ipsum. http://my.link.com'],
18
- tag: ['bacon', 'sausage', 'eggs'],
19
- rights: ['http://example.org/rights/1'],
20
- based_near: ['Seattle, WA, US'],
21
- contributor: ['Tweedledee', 'Tweedledum'],
22
- creator: ['Doe, John', 'Doe, Jane'],
23
- date_created: ['1984-01-02'],
24
- language: ['Quechua'],
25
- publisher: ['Random Publishing, Inc.'],
26
- subject: ['Biology', 'Physiology', 'Ethnography'])
14
+ depositor: depositor.user_key,
15
+ audit_stat: 1,
16
+ title: ['My Title'],
17
+ description: ['Lorem ipsum lorem ipsum. http://my.link.com'],
18
+ tag: ['bacon', 'sausage', 'eggs'],
19
+ rights: ['http://example.org/rights/1'],
20
+ based_near: ['Seattle, WA, US'],
21
+ contributor: ['Tweedledee', 'Tweedledum'],
22
+ creator: ['Doe, John', 'Doe, Jane'],
23
+ date_created: ['1984-01-02'],
24
+ language: ['Quechua'],
25
+ publisher: ['Random Publishing, Inc.'],
26
+ subject: ['Biology', 'Physiology', 'Ethnography'])
27
27
  end
28
28
 
29
29
  let(:presenter) do
@@ -248,15 +248,15 @@ describe 'generic_files/show.html.erb', :type => :view do
248
248
 
249
249
  context "when the file is not featured in any collections" do
250
250
  let(:collections) { [] }
251
- it "should display the empty message" do
251
+ it "displays the empty message" do
252
252
  expect(rendered).to have_text(t('sufia.file.collections_list.empty'))
253
253
  end
254
254
  end
255
255
 
256
256
  context "when the file is featured in collections" do
257
- let(:collections) { [stub_model(Collection, title: 'collection1', id: '456') ] }
257
+ let(:collections) { [stub_model(Collection, title: 'collection1', id: '456')] }
258
258
 
259
- it "should display the header and titles of collections it belongs to" do
259
+ it "displays the header and titles of collections it belongs to" do
260
260
  expect(rendered).to have_text(t('sufia.file.collections_list.heading'))
261
261
  expect(rendered).to have_text('collection1')
262
262
  end
@@ -267,9 +267,8 @@ describe 'generic_files/show.html.erb', :type => :view do
267
267
  before do
268
268
  render
269
269
  end
270
- it "should display the visibility badge" do
271
- expect(rendered).to include('<span class="label label-danger" title="'+t('sufia.visibility.private_title_attr')+'">'+t('sufia.visibility.private')+'</span></a>')
270
+ it "displays the visibility badge" do
271
+ expect(rendered).to include('<span class="label label-danger" title="' + t('sufia.visibility.private_title_attr') + '">' + t('sufia.visibility.private') + '</span></a>')
272
272
  end
273
273
  end
274
-
275
274
  end
@@ -1,32 +1,32 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'generic_files/stats.html.erb', :type => :view do
3
+ describe 'generic_files/stats.html.erb', type: :view do
4
4
  describe 'usage statistics' do
5
- let(:generic_file) {
5
+ let(:generic_file) do
6
6
  stub_model(GenericFile, id: '123',
7
- title: ['file1.txt'])
8
- }
7
+ title: ['file1.txt'])
8
+ end
9
9
 
10
- let(:no_stats) {
10
+ let(:no_stats) do
11
11
  allow_message_expectations_on_nil
12
12
  allow(FileUsage).to receive(:new)
13
13
  stub_model(FileUsage,
14
- created: Date.parse('2014-01-01'),
15
- total_pageviews: 0,
16
- total_downloads: 0,
17
- to_flot: []
18
- )
19
- }
20
-
21
- let(:stats) {
14
+ created: Date.parse('2014-01-01'),
15
+ total_pageviews: 0,
16
+ total_downloads: 0,
17
+ to_flot: []
18
+ )
19
+ end
20
+
21
+ let(:stats) do
22
22
  allow(FileUsage).to receive(:new)
23
23
  stub_model(FileUsage,
24
- created: Date.parse('2014-01-01'),
25
- total_pageviews: 9,
26
- total_downloads: 4,
27
- to_flot: [[1396422000000,2],[1396508400000,3],[1396594800000,4]]
28
- )
29
- }
24
+ created: Date.parse('2014-01-01'),
25
+ total_pageviews: 9,
26
+ total_downloads: 4,
27
+ to_flot: [[1_396_422_000_000, 2], [1_396_508_400_000, 3], [1_396_594_800_000, 4]]
28
+ )
29
+ end
30
30
 
31
31
  before do
32
32
  assign(:generic_file, generic_file)
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe "homepage/_announcement.html.erb" do
4
+ let(:groups) { [] }
5
+ let(:ability) { instance_double("Ability") }
6
+ let(:announcement) { ContentBlock.new(name: ContentBlock::ANNOUNCEMENT, value: announcement_value) }
7
+
8
+ subject { rendered }
9
+
10
+ before do
11
+ assign(:announcement_text, announcement)
12
+ allow(controller).to receive(:current_ability).and_return(ability)
13
+ allow(ability).to receive(:can?).with(:update, ContentBlock).and_return(can_update_content_block)
14
+ render
15
+ end
16
+
17
+ context "when there is an announcement" do
18
+ let(:announcement_value) { "I have an announcement!" }
19
+
20
+ context "when the user can update content" do
21
+ let(:can_update_content_block) { true }
22
+
23
+ it { is_expected.to have_content announcement_value }
24
+ it { is_expected.to have_button("Edit") }
25
+ end
26
+
27
+ context "when the user can't update content" do
28
+ let(:can_update_content_block) { false }
29
+
30
+ it { is_expected.to have_content announcement_value }
31
+ it { is_expected.not_to have_button("Edit") }
32
+ end
33
+ end
34
+
35
+ context "when there is no announcement" do
36
+ let(:announcement_value) { "" }
37
+
38
+ context "when the user can update content" do
39
+ let(:can_update_content_block) { true }
40
+
41
+ it { is_expected.to have_selector "#announcement" }
42
+ it { is_expected.to have_button("Edit") }
43
+ end
44
+
45
+ context "when the user can't update content" do
46
+ let(:can_update_content_block) { false }
47
+
48
+ it { is_expected.not_to have_selector "#announcement" }
49
+ end
50
+ end
51
+ end
@@ -7,10 +7,8 @@ describe "homepage/_featured_works.html.erb" do
7
7
 
8
8
  context "without featured works" do
9
9
  before { render }
10
- it {
11
- is_expected.to have_content 'No works have been featured'
12
- is_expected.not_to have_selector('form')
13
- }
10
+ it { is_expected.to have_content 'No works have been featured' }
11
+ it { is_expected.not_to have_selector('form') }
14
12
  end
15
13
 
16
14
  context "with featured works" do
@@ -20,10 +18,8 @@ describe "homepage/_featured_works.html.erb" do
20
18
  render
21
19
  end
22
20
 
23
- it {
24
- is_expected.not_to have_content 'No works have been featured'
25
- is_expected.not_to have_selector('form')
26
- is_expected.to have_selector('ol#featured_works')
27
- }
21
+ it { is_expected.not_to have_content 'No works have been featured' }
22
+ it { is_expected.not_to have_selector('form') }
23
+ it { is_expected.to have_selector('ol#featured_works') }
28
24
  end
29
25
  end
@@ -12,13 +12,13 @@ describe "homepage/_home_header.html.erb" do
12
12
  end
13
13
  context "when the user can view" do
14
14
  let(:can_view_share_work) { true }
15
- it "should display" do
15
+ it "displays" do
16
16
  expect(rendered).to have_content t("sufia.share_button")
17
17
  end
18
18
  end
19
19
  context "when the user can't view" do
20
20
  let(:can_view_share_work) { false }
21
- it "should not display" do
21
+ it "does not display" do
22
22
  expect(rendered).not_to have_content t("sufia.share_button")
23
23
  end
24
24
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  # Note: this is a direct copy of the corresponding test in Blacklight
4
4
  # with changes for "views/my" instead of "views/catalog"
5
5
 
6
- describe "my/facet.html.erb", :type => :view do
6
+ describe "my/facet.html.erb", type: :view do
7
7
  let(:display_facet) { double }
8
8
  let(:blacklight_config) { Blacklight::Configuration.new }
9
9
  before do
@@ -15,19 +15,19 @@ describe "my/facet.html.erb", :type => :view do
15
15
  assign :display_facet, display_facet
16
16
  end
17
17
 
18
- it "should have the facet title" do
18
+ it "has the facet title" do
19
19
  allow(view).to receive(:render_facet_limit)
20
20
  render
21
21
  expect(rendered).to have_selector "h3", text: "Facet title"
22
22
  end
23
23
 
24
- it "should render facet pagination" do
24
+ it "renders facet pagination" do
25
25
  allow(view).to receive(:render_facet_limit)
26
26
  render
27
27
  expect(rendered).to have_content "pagination"
28
28
  end
29
29
 
30
- it "should render the facet limit" do
30
+ it "renders the facet limit" do
31
31
  expect(view).to receive(:render_facet_limit).with(display_facet, layout: false)
32
32
  render
33
33
  end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'single_use_links/new_download.html.erb' do
4
+ let(:user) { FactoryGirl.find_or_create(:jill) }
5
+ let(:file) do
6
+ GenericFile.create do |f|
7
+ f.add_file(File.open(fixture_path + '/world.png'), path: 'content', original_name: 'world.png')
8
+ f.label = 'world.png'
9
+ f.apply_depositor_metadata(user)
10
+ end
11
+ end
12
+
13
+ let(:hash) { "some-dummy-sha2-hash" }
14
+
15
+ before do
16
+ assign :asset, file
17
+ assign :link, Sufia::Engine.routes.url_helpers.download_single_use_link_path(hash)
18
+ render
19
+ end
20
+
21
+ it "has the download link" do
22
+ expect(rendered).to have_selector "a.download-link"
23
+ end
24
+
25
+ it "has turbolinks disabled in the download link" do
26
+ expect(rendered).to have_selector "a.download-link[data-no-turbolink]"
27
+ end
28
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'single_use_links_viewer/show.html.erb' do
4
+ let(:user) { FactoryGirl.find_or_create(:jill) }
5
+ let(:file) do
6
+ GenericFile.create do |f|
7
+ f.add_file(File.open(fixture_path + '/world.png'), path: 'content', original_name: 'world.png')
8
+ f.label = 'world.png'
9
+ f.apply_depositor_metadata(user)
10
+ end
11
+ end
12
+
13
+ let(:hash) { "some-dummy-sha2-hash" }
14
+
15
+ before do
16
+ assign :asset, file
17
+ assign :download_link, Sufia::Engine.routes.url_helpers.download_single_use_link_path(hash)
18
+ assign :presenter, Sufia::GenericFilePresenter.new(file)
19
+ render
20
+ end
21
+
22
+ it "contains a download link" do
23
+ expect(rendered).to have_selector "a[href^='/single_use_link/download/']"
24
+ end
25
+
26
+ it "has turbolinks disabled in the download link" do
27
+ expect(rendered).to have_selector "a[data-no-turbolink][href^='/single_use_link/download/']"
28
+ end
29
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'users/_follower_modal.html.erb', :type => :view do
3
+ describe 'users/_follower_modal.html.erb', type: :view do
4
4
  let(:frank) { FactoryGirl.create(:user, display_name: "Frank") }
5
5
  let(:page) { Capybara::Node::Simple.new(rendered) }
6
6
 
@@ -12,18 +12,17 @@ describe 'users/_follower_modal.html.erb', :type => :view do
12
12
  end
13
13
 
14
14
  context "when followers" do
15
- let(:view_user) { }
16
- let(:current_user) { }
17
- let(:followers) { [frank]}
15
+ let(:view_user) {}
16
+ let(:current_user) {}
17
+ let(:followers) { [frank] }
18
18
 
19
19
  it "draws user list" do
20
20
  expect(page).to have_link "Frank", href: "/users/#{frank.to_param}"
21
21
  end
22
22
  end
23
23
 
24
-
25
24
  context "when no followers" do
26
- let(:followers) { []}
25
+ let(:followers) { [] }
27
26
  let(:view_user) { frank }
28
27
 
29
28
  context "when logged in " do
@@ -45,11 +44,11 @@ describe 'users/_follower_modal.html.erb', :type => :view do
45
44
  end
46
45
 
47
46
  context "when not logged in" do
48
- let(:current_user) { }
47
+ let(:current_user) {}
49
48
 
50
49
  it "indicates the lack of followers for this user" do
51
50
  expect(page).to have_text "No one is following this user."
52
51
  end
53
52
  end
54
53
  end
55
- end
54
+ end