sufia 4.0.1 → 4.1.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 (169) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +247 -215
  3. data/README.md +7 -3
  4. data/SUFIA_VERSION +1 -1
  5. data/app/assets/javascripts/sufia.js +5 -2
  6. data/app/assets/javascripts/sufia/proxy_rights.js +68 -0
  7. data/app/assets/javascripts/sufia/transfers.js +3 -0
  8. data/app/assets/javascripts/sufia/user_search.js +31 -0
  9. data/app/assets/stylesheets/jquery-ui.css +17 -17
  10. data/app/assets/stylesheets/sufia.css.scss +3 -2
  11. data/app/assets/stylesheets/sufia/_proxy-rights.scss +10 -0
  12. data/app/controllers/concerns/sufia/contact_form_controller_behavior.rb +22 -23
  13. data/app/controllers/concerns/sufia/depositors_controller_behavior.rb +41 -0
  14. data/app/controllers/concerns/sufia/files_controller_behavior.rb +1 -0
  15. data/app/controllers/concerns/sufia/transfers_controller_behavior.rb +76 -0
  16. data/app/controllers/concerns/sufia/users_controller_behavior.rb +9 -11
  17. data/app/controllers/depositors_controller.rb +3 -0
  18. data/app/controllers/transfers_controller.rb +3 -0
  19. data/app/helpers/sufia/dashboard_helper_behavior.rb +15 -0
  20. data/app/helpers/sufia/sufia_helper_behavior.rb +24 -2
  21. data/app/jobs/content_depositor_change_event_job.rb +50 -0
  22. data/app/views/dashboard/_index_partials/_contents.html.erb +18 -0
  23. data/app/views/dashboard/_index_partials/_proxy_rights.html.erb +23 -0
  24. data/app/views/dashboard/_index_partials/_transfers.html.erb +14 -0
  25. data/app/views/generic_files/proxy.html.erb +5 -0
  26. data/app/views/generic_files/upload/_form.html.erb +7 -2
  27. data/app/views/my/_action_menu.html.erb +3 -1
  28. data/app/views/records/edit_fields/_default.html.erb +1 -1
  29. data/app/views/transfers/_received.html.erb +58 -0
  30. data/app/views/transfers/_sent.html.erb +38 -0
  31. data/app/views/transfers/index.html.erb +7 -0
  32. data/app/views/transfers/new.html.erb +23 -0
  33. data/app/views/users/_proxies.html.erb +8 -0
  34. data/app/views/users/_user_util_links_extra.html.erb +1 -0
  35. data/app/views/users/edit.html.erb +6 -1
  36. data/config/locales/sufia.en.yml +9 -4
  37. data/config/routes.rb +14 -3
  38. data/lib/sufia.rb +7 -5
  39. data/lib/sufia/version.rb +1 -1
  40. data/spec/controllers/authorities_controller_spec.rb +6 -6
  41. data/spec/controllers/batch_controller_spec.rb +29 -29
  42. data/spec/controllers/batch_edits_controller_spec.rb +7 -7
  43. data/spec/controllers/catalog_controller_spec.rb +9 -9
  44. data/spec/controllers/collections_controller_spec.rb +28 -28
  45. data/spec/controllers/content_blocks_controller_spec.rb +3 -3
  46. data/spec/controllers/dashboard_controller_spec.rb +1 -1
  47. data/spec/controllers/depositors_controller_spec.rb +50 -0
  48. data/spec/controllers/downloads_controller_spec.rb +22 -22
  49. data/spec/controllers/featured_work_lists_controller_spec.rb +1 -1
  50. data/spec/controllers/featured_works_controller_spec.rb +1 -1
  51. data/spec/controllers/generic_files_controller_spec.rb +98 -90
  52. data/spec/controllers/homepage_controller_spec.rb +1 -1
  53. data/spec/controllers/mailbox_controller_spec.rb +10 -10
  54. data/spec/controllers/my/collections_controller_spec.rb +1 -1
  55. data/spec/controllers/my/files_controller_spec.rb +1 -1
  56. data/spec/controllers/my/highlights_controller_spec.rb +1 -1
  57. data/spec/controllers/my/shares_controller_spec.rb +1 -1
  58. data/spec/controllers/my_controller_spec.rb +1 -1
  59. data/spec/controllers/pages_controller_spec.rb +1 -1
  60. data/spec/controllers/single_use_links_controller_spec.rb +46 -50
  61. data/spec/controllers/single_use_links_viewer_controller_spec.rb +16 -16
  62. data/spec/controllers/static_controller_spec.rb +9 -9
  63. data/spec/controllers/tinymce_assets_controller_spec.rb +1 -1
  64. data/spec/controllers/transfers_controller_spec.rb +212 -0
  65. data/spec/controllers/users_controller_spec.rb +1 -1
  66. data/spec/factories/generic_files.rb +4 -4
  67. data/spec/factories/proxy_deposit_requests.rb +6 -0
  68. data/spec/features/browse_dashboard_files_spec.rb +25 -36
  69. data/spec/features/browse_files_spec.rb +18 -13
  70. data/spec/features/catalog_search_spec.rb +3 -6
  71. data/spec/features/cloud_upload_spec.rb +5 -7
  72. data/spec/features/collection_spec.rb +28 -35
  73. data/spec/features/contact_form_spec.rb +24 -24
  74. data/spec/features/display_dashboard_spec.rb +11 -11
  75. data/spec/features/ingest_upload_files_spec.rb +10 -10
  76. data/spec/features/notifications_spec.rb +11 -11
  77. data/spec/features/ownership_transfer_spec.rb +111 -0
  78. data/spec/features/proxy_spec.rb +52 -0
  79. data/spec/features/search_spec.rb +1 -1
  80. data/spec/features/single_use_links_spec.rb +28 -18
  81. data/spec/features/users_spec.rb +3 -3
  82. data/spec/helpers/batch_edits_helper_spec.rb +1 -1
  83. data/spec/helpers/content_block_helper_spec.rb +1 -1
  84. data/spec/helpers/dashboard_helper_spec.rb +1 -1
  85. data/spec/helpers/generic_file_helper_spec.rb +1 -1
  86. data/spec/helpers/records_helper_spec.rb +1 -1
  87. data/spec/helpers/sufia_helper_spec.rb +8 -8
  88. data/spec/helpers/trophy_helper_spec.rb +1 -1
  89. data/spec/jobs/audit_job_spec.rb +5 -5
  90. data/spec/jobs/batch_update_job_spec.rb +14 -14
  91. data/spec/jobs/content_depositor_change_event_job_spec.rb +22 -0
  92. data/spec/jobs/event_jobs_spec.rb +104 -104
  93. data/spec/jobs/import_url_job_spec.rb +2 -2
  94. data/spec/jobs/ingest_local_file_job_spec.rb +1 -1
  95. data/spec/lib/sufia/breadcrumbs_spec.rb +3 -3
  96. data/spec/lib/sufia/id_service_spec.rb +1 -1
  97. data/spec/lib/sufia/upload_complete_behavior_spec.rb +4 -4
  98. data/spec/models/ability_spec.rb +59 -15
  99. data/spec/models/batch_spec.rb +16 -16
  100. data/spec/models/characterization_spec.rb +1 -1
  101. data/spec/models/checksum_audit_log_spec.rb +34 -26
  102. data/spec/models/collection_spec.rb +1 -1
  103. data/spec/models/download_spec.rb +1 -1
  104. data/spec/models/featured_work_list_spec.rb +1 -1
  105. data/spec/models/featured_work_spec.rb +15 -4
  106. data/spec/models/file_content_datastream_spec.rb +14 -14
  107. data/spec/models/file_usage_spec.rb +1 -1
  108. data/spec/models/fits_datastream_spec.rb +1 -1
  109. data/spec/models/generic_file/reload_on_save_spec.rb +4 -4
  110. data/spec/models/generic_file/visibility_spec.rb +1 -1
  111. data/spec/models/generic_file/web_form_spec.rb +6 -5
  112. data/spec/models/generic_file_rdf_datastream_spec.rb +1 -1
  113. data/spec/models/generic_file_spec.rb +254 -220
  114. data/spec/models/geo_names_resource_spec.rb +2 -2
  115. data/spec/models/local_authority_spec.rb +60 -59
  116. data/spec/models/pageview_spec.rb +1 -1
  117. data/spec/models/properties_datastream_spec.rb +29 -10
  118. data/spec/models/proxy_deposit_request_spec.rb +107 -0
  119. data/spec/models/single_use_link_spec.rb +13 -13
  120. data/spec/models/solr_document_spec.rb +1 -1
  121. data/spec/models/trophy_spec.rb +6 -6
  122. data/spec/models/user_spec.rb +38 -22
  123. data/spec/routing/featured_works_route_spec.rb +1 -1
  124. data/spec/routing/ownership_transfers_route_spec.rb +45 -0
  125. data/spec/routing/route_spec.rb +42 -42
  126. data/spec/services/noid_spec.rb +2 -2
  127. data/spec/spec_helper.rb +10 -5
  128. data/spec/support/cleaner.rb +12 -0
  129. data/spec/support/features.rb +5 -0
  130. data/spec/support/features/session_helpers.rb +3 -17
  131. data/spec/support/locations.rb +36 -0
  132. data/spec/support/poltergeist.rb +11 -0
  133. data/spec/support/proxies.rb +14 -0
  134. data/spec/support/selectors.rb +122 -0
  135. data/spec/views/batch/edit.html.erb_spec.rb +1 -1
  136. data/spec/views/batch_edits/check_all_spec.rb +4 -4
  137. data/spec/views/catalog/index.html.erb_spec.rb +1 -1
  138. data/spec/views/catalog/sort_and_per_page.html.erb_spec.rb +1 -1
  139. data/spec/views/collections/_form.html.erb_spec.rb +3 -1
  140. data/spec/views/collections/_show_descriptions.html.erb_spec.rb +1 -1
  141. data/spec/views/dashboard/index_spec.rb +3 -6
  142. data/spec/views/generic_file/edit.html.erb_spec.rb +1 -1
  143. data/spec/views/generic_file/show.html.erb_spec.rb +1 -1
  144. data/spec/views/generic_file/stats.html.erb_spec.rb +1 -1
  145. data/spec/views/my/facet.html.erb_spec.rb +2 -2
  146. data/spec/views/users/_follower_modal.html.erb_spec.rb +1 -1
  147. data/spec/views/users/_following_modal.html.erb_spec.rb +1 -1
  148. data/spec/views/users/_notify_number.html.erb_spec.rb +1 -1
  149. data/spec/views/users/_user_util_links.html.erb_spec.rb +1 -1
  150. data/spec/views/users/index.html.erb_spec.rb +2 -2
  151. data/spec/views/users/show.html.erb_spec.rb +2 -2
  152. data/sufia-models/app/models/concerns/sufia/ability.rb +22 -0
  153. data/sufia-models/app/models/concerns/sufia/generic_file.rb +1 -0
  154. data/sufia-models/app/models/concerns/sufia/generic_file/proxy_deposit.rb +22 -0
  155. data/sufia-models/app/models/concerns/sufia/properties_datastream_behavior.rb +3 -0
  156. data/sufia-models/app/models/concerns/sufia/user.rb +9 -0
  157. data/sufia-models/app/models/proxy_deposit_request.rb +85 -0
  158. data/sufia-models/app/models/proxy_deposit_rights.rb +4 -0
  159. data/sufia-models/app/models/sufia/avatar_uploader.rb +2 -3
  160. data/sufia-models/lib/generators/sufia/models/install_generator.rb +9 -1
  161. data/sufia-models/lib/generators/sufia/models/proxies_generator.rb +53 -0
  162. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_proxy_deposit_requests.rb +16 -0
  163. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_proxy_deposit_rights.rb +11 -0
  164. data/sufia-models/lib/sufia/models/engine.rb +1 -1
  165. data/sufia-models/lib/sufia/models/version.rb +1 -1
  166. data/sufia.gemspec +2 -1
  167. data/tasks/sufia-dev.rake +5 -0
  168. metadata +82 -6
  169. data/tasks/sufia-db.rake +0 -21
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "The Dashboard" do
3
+ describe "The Dashboard", :type => :feature do
4
4
 
5
5
  before do
6
6
  sign_in :user_with_fixtures
@@ -9,28 +9,28 @@ describe "The Dashboard" do
9
9
  context "upon sign-in" do
10
10
 
11
11
  it "should show the user's information" do
12
- page.should have_content "My Dashboard"
13
- page.should have_content "User Activity"
14
- page.should have_content "User Notifications"
15
- page.should have_content "Your Statistics"
12
+ expect(page).to have_content "My Dashboard"
13
+ expect(page).to have_content "User Activity"
14
+ expect(page).to have_content "User Notifications"
15
+ expect(page).to have_content "Your Statistics"
16
16
  end
17
17
 
18
18
  it "should let the user upload files" do
19
19
  click_link "Upload"
20
- page.should have_content "Upload"
20
+ expect(page).to have_content "Upload"
21
21
  end
22
22
 
23
23
  it "should let the user create collections" do
24
24
  click_link "Create Collection"
25
- page.should have_content "Create New Collection"
25
+ expect(page).to have_content "Create New Collection"
26
26
  end
27
27
 
28
28
  it "should let the user view files" do
29
29
  click_link "View Files"
30
- page.should have_content "My Files"
31
- page.should have_content "My Collections"
32
- page.should have_content "My Highlights"
33
- page.should have_content "Files Shared with Me"
30
+ expect(page).to have_content "My Files"
31
+ expect(page).to have_content "My Collections"
32
+ expect(page).to have_content "My Highlights"
33
+ expect(page).to have_content "Files Shared with Me"
34
34
  end
35
35
 
36
36
  end
@@ -1,24 +1,24 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Uploading files via web form" do
4
-
3
+ describe "Uploading files via web form", :type => :feature do
5
4
  before do
6
5
  sign_in :user
6
+ click_link "Upload"
7
7
  end
8
8
 
9
9
  it "should have an ingest screen" do
10
- click_link "upload"
11
- page.should have_content "Select files"
12
- page.should have_content "Start upload"
13
- page.should have_content "Cancel upload"
14
- page.should have_xpath '//input[@type="file"]'
10
+ expect(page).to have_content "Select files"
11
+ expect(page).to have_content "Start upload"
12
+ expect(page).to have_content "Cancel upload"
13
+ expect(page).to have_xpath '//input[@type="file"]'
15
14
  end
16
15
 
17
16
  it "should require checking the terms of service" do
18
- click_link "upload"
19
17
  attach_file("files[]", File.dirname(__FILE__)+"/../../spec/fixtures/image.jp2")
20
18
  attach_file("files[]", File.dirname(__FILE__)+"/../../spec/fixtures/jp2_fits.xml")
21
- click_button 'Start upload'
22
- page.should have_content "You must accept the terms of service!"
19
+ expect(page).to have_css("button#main_upload_start[disabled]")
20
+ find('#main_upload_start_span').hover do
21
+ expect(page).to have_content "Please accept Deposit Agreement before you can upload."
22
+ end
23
23
  end
24
24
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Notifications page" do
3
+ describe "Notifications page", :type => :feature do
4
4
 
5
5
  before do
6
6
  sign_in FactoryGirl.create(:user_with_mail)
@@ -8,16 +8,16 @@ describe "Notifications page" do
8
8
  end
9
9
 
10
10
  it "should list notifications with date, subject and message" do
11
- page.should have_content "User Notifications"
12
- page.find(:xpath, '//thead/tr').should have_content "Date"
13
- page.find(:xpath, '//thead/tr').should have_content "Subject"
14
- page.find(:xpath, '//thead/tr').should have_content "Message"
15
- page.should have_content "These files could not be updated. You do not have sufficient privileges to edit them. "
16
- page.should have_content "These files have been saved"
17
- page.should have_content "File 1 could not be updated. You do not have sufficient privileges to edit it."
18
- page.should have_content "File 1 has been saved"
19
- page.should have_content "Batch upload permission denied "
20
- page.should have_content "Batch upload complete"
11
+ expect(page).to have_content "User Notifications"
12
+ expect(page.find(:xpath, '//thead/tr')).to have_content "Date"
13
+ expect(page.find(:xpath, '//thead/tr')).to have_content "Subject"
14
+ expect(page.find(:xpath, '//thead/tr')).to have_content "Message"
15
+ expect(page).to have_content "These files could not be updated. You do not have sufficient privileges to edit them. "
16
+ expect(page).to have_content "These files have been saved"
17
+ expect(page).to have_content "File 1 could not be updated. You do not have sufficient privileges to edit it."
18
+ expect(page).to have_content "File 1 has been saved"
19
+ expect(page).to have_content "Batch upload permission denied "
20
+ expect(page).to have_content "Batch upload complete"
21
21
  end
22
22
 
23
23
 
@@ -0,0 +1,111 @@
1
+ require 'spec_helper'
2
+
3
+ include Selectors::Header
4
+ include Selectors::Dashboard
5
+ include Selectors::NewTransfers
6
+ include Selectors::Transfers
7
+
8
+ describe 'Transferring file ownership:', :type => :feature do
9
+ let(:original_owner) { FactoryGirl.create(:archivist, display_name: 'Original Owner') }
10
+ let(:new_owner) { FactoryGirl.create(:jill, display_name: 'New Owner') }
11
+ let!(:file) do
12
+ GenericFile.new.tap do |f|
13
+ f.title = ['little_file.txt']
14
+ f.creator = ['little_file.txt_creator']
15
+ f.resource_type = ["stuff" ]
16
+ f.read_groups = ['public']
17
+ f.apply_depositor_metadata(original_owner.user_key)
18
+ f.save!
19
+ end
20
+ end
21
+
22
+ before do
23
+ sign_in original_owner
24
+ go_to_dashboard_files
25
+ end
26
+
27
+ after do
28
+ ActiveFedora::Base.destroy_all
29
+ end
30
+
31
+ describe 'When I request a file transfer:' do
32
+ context 'For a file I do not own' do
33
+ pending 'The transfer option is not available' do
34
+ fail
35
+ end
36
+ end
37
+
38
+ context 'To myself' do
39
+ before { transfer_ownership_of_file file, original_owner }
40
+ it 'Displays an appropriate error message' do
41
+ expect(page).to have_content 'Sending user must specify another user to receive the file'
42
+ end
43
+ end
44
+
45
+ context 'To someone else' do
46
+ before { transfer_ownership_of_file file, new_owner }
47
+ it 'Creates a transfer request' do
48
+ expect(page).to have_content 'Transfer request created'
49
+ end
50
+ context 'If the new owner accepts it' do
51
+ before do
52
+ new_owner.proxy_deposit_requests.last.transfer!
53
+ user_utility_toggle.click
54
+ click_link 'transfer requests'
55
+ end
56
+ specify 'I should see it was accepted' do
57
+ expect(page.find('#outgoing-transfers')).to have_content 'Accepted'
58
+ end
59
+ end
60
+ context 'If I cancel it' do
61
+ before do
62
+ user_utility_toggle.click
63
+ click_link 'transfer requests'
64
+ first_sent_cancel_button.click
65
+ end
66
+ specify 'I should see it was cancelled' do
67
+ expect(page).to have_content 'Transfer canceled'
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ describe 'When someone requests a file transfer to me' do
74
+ before do
75
+ # As the original_owner, transfer a file to the new_owner
76
+ transfer_ownership_of_file file, new_owner
77
+ # Become the new_owner so we can manage transfers sent to us
78
+ sign_in new_owner
79
+ visit '/dashboard'
80
+ user_utility_toggle.click
81
+ within '#user_utility_links' do
82
+ click_link 'transfer requests'
83
+ end
84
+ expect(page).to have_content 'Transfer of Ownership'
85
+ end
86
+ specify 'I should receive a notification' do
87
+ user_notifications_link.click
88
+ expect(page).to have_content "#{original_owner.name} wants to transfer a file to you"
89
+ end
90
+ specify 'I should be able to accept it' do
91
+ first_received_accept_dropdown.click
92
+ click_link 'Allow depositor to retain edit access'
93
+ expect(page).to have_content 'Transfer complete'
94
+ end
95
+ specify 'I should be able to reject it' do
96
+ first_received_reject_button.click
97
+ expect(page).to have_content 'Transfer rejected'
98
+ end
99
+ end
100
+
101
+ def transfer_ownership_of_file(file, new_owner)
102
+ db_item_actions_toggle(file).click
103
+ click_link 'Transfer Ownership of File'
104
+ expect(page).to have_content "Select a user to transfer #{file.title.first} to, add optional comments and then press transfer."
105
+ new_owner_dropdown.click
106
+ new_owner_search_field.set new_owner.user_key
107
+ new_owner_search_result.click
108
+ fill_in 'proxy_deposit_request[sender_comment]', with: 'File transfer comments'
109
+ submit_button.click
110
+ end
111
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'proxy', :type => :feature do
4
+ let(:user) { FactoryGirl.find_or_create(:archivist) }
5
+ let(:second_user) { FactoryGirl.find_or_create(:jill) }
6
+
7
+ describe 'add proxy in profile' do
8
+ it "creates a proxy" do
9
+ sign_in user
10
+ visit "/"
11
+ go_to_user_profile
12
+ click_link "Edit Your Profile"
13
+ expect(first("td.depositor-name")).to be_nil
14
+ create_proxy_using_partial(second_user)
15
+ expect(page).to have_css('td.depositor-name', text: second_user.user_key)
16
+ end
17
+ end
18
+
19
+ describe 'use a proxy' do
20
+ before do
21
+ ProxyDepositRights.create!(grantor: second_user, grantee: user)
22
+ end
23
+
24
+ # TODO: Finish this spec
25
+ xit "allows on-behalf-of deposit" do
26
+ sign_in user
27
+ visit '/'
28
+ first('a.dropdown-toggle').click
29
+ click_link('upload')
30
+ within('#fileupload') do
31
+ expect(page).to have_content('I have read')
32
+ check("terms_of_service")
33
+ end
34
+ select(second_user.user_key, from: 'on_behalf_of')
35
+ test_file_path = File.expand_path('../../fixtures/small_file.txt', __FILE__)
36
+ page.execute_script(%Q{$("input[type=file]").first().css("opacity", "1").css("-moz-transform", "none");$("input[type=file]").first().attr('id',"fileselect");})
37
+ attach_file("fileselect", test_file_path)
38
+ redirect_url = find("#redirect-loc", visible: false).text
39
+ click_button('Start upload')
40
+ expect(page).to have_content('Apply Metadata')
41
+ fill_in('generic_file_title', with: 'MY Title for the World')
42
+ fill_in('generic_file_tag', with: 'test')
43
+ fill_in('generic_file_creator', with: 'me')
44
+ click_button('upload_submit')
45
+ click_link('Files Shared with Me')
46
+ expect(page).to have_content "MY Title for the World"
47
+ first('i.glyphicon-chevron-right').click
48
+ # TODO: need to remove all files prior to this test. Fedora it stil retaining leftovers
49
+ first('.expanded-details').click_link(second_user.email)
50
+ end
51
+ end
52
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'searching' do
3
+ describe 'searching', :type => :feature do
4
4
  before { GenericFile.destroy_all }
5
5
  let!(:file) { FactoryGirl.create(:public_file, title: "Toothbrush") }
6
6
 
@@ -1,37 +1,47 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Create and use single-use links" do
3
+ describe "Create and use single-use links", :type => :feature do
4
4
  include Warden::Test::Helpers
5
5
  Warden.test_mode!
6
6
  include Sufia::Engine.routes.url_helpers
7
7
 
8
+ let(:user) { FactoryGirl.find_or_create(:jill) }
9
+ let(:file) do
10
+ GenericFile.new.tap do |f|
11
+ f.add_file(File.open(fixture_path + '/world.png'), 'content', 'world.png')
12
+ f.apply_depositor_metadata(user)
13
+ f.save
14
+ end
15
+ end
16
+
8
17
  before do
9
- user = FactoryGirl.find_or_create(:jill)
10
-
11
- login_as(user)
12
-
13
- @file = GenericFile.new
14
- @file.add_file(File.open(fixture_path + '/world.png'), 'content', 'world.png')
15
- @file.apply_depositor_metadata(user)
16
- @file.save
18
+ login_as user
17
19
  end
18
20
 
19
- it "should generate a single-use link to show the record" do
20
- visit generate_show_single_use_link_path(id: @file)
21
-
21
+ it "generates a single-use link to show the record" do
22
+ visit generate_show_single_use_link_path(id: file)
22
23
  expect(page).to have_css '.single-use-link a'
23
24
  find('.single-use-link a').click
24
25
  expect(page).to have_content 'world.png'
25
26
  expect(page).to have_content "Download (can only be used once)"
26
27
  end
27
28
 
28
- it "should download the file contents" do
29
+ describe "download link" do
30
+ before do
31
+ @old_driver = Capybara.current_driver
32
+ Capybara.current_driver = :rack_test
33
+ end
29
34
 
30
- visit generate_download_single_use_link_path(id: @file)
35
+ after do
36
+ Capybara.current_driver = @old_driver
37
+ end
31
38
 
32
- expect(page).to have_css '.download-link'
33
- find('.download-link').click
34
- expected_content = ActiveFedora::Base.find(@file.pid, cast: true).content.content
35
- expect(page.body).to eq expected_content
39
+ it "downloads the file contents" do
40
+ visit generate_download_single_use_link_path(id: file)
41
+ expect(page).to have_css '.download-link'
42
+ find('.download-link').click
43
+ expected_content = ActiveFedora::Base.find(file.pid, cast: true).content.content
44
+ expect(page.source).to eq expected_content
45
+ end
36
46
  end
37
47
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
-
4
- describe "User Profile" do
3
+ describe "User Profile", :type => :feature do
5
4
 
6
5
  before do
7
6
  sign_in FactoryGirl.create(:curator)
@@ -30,7 +29,8 @@ describe "User Profile" do
30
29
  fill_in 'user_twitter_handle', with: 'curatorOfData'
31
30
  click_button 'Save Profile'
32
31
  expect(page).to have_content 'Your profile has been updated'
33
- expect(page).to have_content 'curatorOfData'
32
+ click_link 'Profile'
33
+ expect(page).to have_content 'http://twitter.com/curatorOfData'
34
34
  end
35
35
  end
36
36
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe BatchEditsHelper do
3
+ describe BatchEditsHelper, :type => :helper do
4
4
 
5
5
  describe "#render_check_all" do
6
6
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ContentBlockHelper do
3
+ describe ContentBlockHelper, :type => :helper do
4
4
  let(:content_block) { FactoryGirl.create(:content_block, value: "<p>foo bar</p>") }
5
5
 
6
6
  subject { helper.editable_content_block(content_block) }
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe DashboardHelper do
3
+ describe DashboardHelper, :type => :helper do
4
4
 
5
5
  describe "#render_recent_activity" do
6
6
  context "when there is no activity" do
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe GenericFileHelper do
3
+ describe GenericFileHelper, :type => :helper do
4
4
 
5
5
  describe "#render_collection_list" do
6
6
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe RecordsHelper do
3
+ describe RecordsHelper, :type => :helper do
4
4
  let(:adder) {
5
5
  "<button class=\"adder btn\" id=\"additional_test_submit\" name=\"additional_test\"><span aria-hidden=\"true\"><i class=\"glyphicon glyphicon-plus\"></i></span><span class=\"sr-only\">add another test</span></button>"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe SufiaHelper do
3
+ describe SufiaHelper, :type => :helper do
4
4
 
5
5
  describe "#link_to_facet_list" do
6
6
  before do
@@ -31,12 +31,12 @@ describe SufiaHelper do
31
31
  subject { helper }
32
32
  context "when cq is set" do
33
33
  before { allow(helper).to receive(:params).and_return({ cq: 'foo'}) }
34
- it { should have_collection_search_parameters }
34
+ it { is_expected.to have_collection_search_parameters }
35
35
  end
36
36
 
37
37
  context "when cq is not set" do
38
38
  before { allow(helper).to receive(:params).and_return({ cq: ''}) }
39
- it { should_not have_collection_search_parameters }
39
+ it { is_expected.not_to have_collection_search_parameters }
40
40
  end
41
41
  end
42
42
 
@@ -45,23 +45,23 @@ describe SufiaHelper do
45
45
  let(:document) { SolrDocument.new( mime_type_tesim: 'image/jpeg', noid_tsi: '1234') }
46
46
  it "should show the audio thumbnail" do
47
47
  rendered = helper.sufia_thumbnail_tag(document, { width: 90 })
48
- rendered.should match /src="\/downloads\/1234\?datastream_id=thumbnail"/
49
- rendered.should match /width="90"/
48
+ expect(rendered).to match /src="\/downloads\/1234\?datastream_id=thumbnail"/
49
+ expect(rendered).to match /width="90"/
50
50
  end
51
51
  end
52
52
  context "for an audio object" do
53
53
  let(:document) { SolrDocument.new( mime_type_tesim: 'audio/x-wave') }
54
54
  it "should show the audio thumbnail" do
55
55
  rendered = helper.sufia_thumbnail_tag(document, {})
56
- rendered.should match /src="\/assets\/audio.png"/
56
+ expect(rendered).to match /src="\/assets\/audio.png"/
57
57
  end
58
58
  end
59
59
  context "for an document object" do
60
60
  let(:document) { SolrDocument.new( mime_type_tesim: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', noid_tsi: '1234') }
61
61
  it "should show the default thumbnail" do
62
62
  rendered = helper.sufia_thumbnail_tag(document, { width: 90 })
63
- rendered.should match /src="\/downloads\/1234\?datastream_id=thumbnail"/
64
- rendered.should match /width="90"/
63
+ expect(rendered).to match /src="\/downloads\/1234\?datastream_id=thumbnail"/
64
+ expect(rendered).to match /width="90"/
65
65
  end
66
66
  end
67
67
  end