sufia 4.0.1 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
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