curation_concerns 1.4.0 → 1.5.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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +2 -0
  4. data/Gemfile +4 -0
  5. data/Rakefile +2 -2
  6. data/app/actors/curation_concerns/actors/file_actor.rb +2 -3
  7. data/app/assets/javascripts/curation_concerns/file_manager.es6 +32 -1
  8. data/app/assets/javascripts/curation_concerns/file_manager/member.es6 +6 -0
  9. data/app/assets/stylesheets/curation_concerns/_positioning.scss +3 -2
  10. data/app/assets/stylesheets/curation_concerns/modules/file_manager.scss +14 -0
  11. data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +3 -3
  12. data/app/controllers/concerns/curation_concerns/single_use_links_controller_behavior.rb +2 -2
  13. data/app/indexers/curation_concerns/admin_set_indexer.rb +13 -0
  14. data/app/indexers/curation_concerns/file_set_indexer.rb +5 -0
  15. data/app/indexers/curation_concerns/work_indexer.rb +3 -0
  16. data/app/models/admin_set.rb +3 -0
  17. data/app/models/concerns/curation_concerns/admin_set_behavior.rb +29 -0
  18. data/app/models/concerns/curation_concerns/file_set/characterization.rb +2 -1
  19. data/app/models/concerns/curation_concerns/in_admin_set.rb +9 -0
  20. data/app/models/concerns/curation_concerns/publishable.rb +19 -0
  21. data/app/models/concerns/curation_concerns/solr_behavior/characterization.rb +106 -0
  22. data/app/models/concerns/curation_concerns/solr_document_behavior.rb +5 -0
  23. data/app/models/concerns/curation_concerns/work_behavior.rb +2 -0
  24. data/app/models/curation_concerns/state_workflow.rb +13 -0
  25. data/app/models/vocab/fedora_resource_status.rb +6 -0
  26. data/app/presenters/curation_concerns/characterization_behavior.rb +84 -0
  27. data/app/presenters/curation_concerns/file_set_presenter.rb +1 -0
  28. data/app/presenters/curation_concerns/work_show_presenter.rb +1 -1
  29. data/app/search_builders/curation_concerns/admin_set_search_builder.rb +22 -0
  30. data/app/services/curation_concerns/admin_set_service.rb +26 -0
  31. data/app/services/curation_concerns/indexes_thumbnails.rb +1 -0
  32. data/app/services/curation_concerns/license_service.rb +8 -0
  33. data/app/services/curation_concerns/qa_select_service.rb +33 -0
  34. data/app/services/curation_concerns/rights_statements.rb +8 -0
  35. data/app/services/rights_service.rb +9 -2
  36. data/app/views/collections/_button_create_collection.html.erb +1 -1
  37. data/app/views/collections/_button_for_update_collection.html.erb +1 -1
  38. data/app/views/curation_concerns/base/_file_manager_actions.html.erb +1 -0
  39. data/app/views/curation_concerns/base/_file_manager_member.html.erb +24 -23
  40. data/app/views/curation_concerns/base/_file_manager_member_resource_options.html.erb +6 -0
  41. data/app/views/curation_concerns/base/_file_manager_resource_form.html.erb +5 -0
  42. data/app/views/curation_concerns/base/_form_rights.html.erb +1 -1
  43. data/app/views/curation_concerns/file_sets/media_display/_default.html.erb +18 -9
  44. data/app/views/curation_concerns/file_sets/media_display/_image.html.erb +18 -13
  45. data/app/views/curation_concerns/file_sets/media_display/_office_document.html.erb +18 -13
  46. data/app/views/curation_concerns/file_sets/media_display/_pdf.html.erb +18 -13
  47. data/config/locales/curation_concerns.en.yml +6 -0
  48. data/curation_concerns.gemspec +2 -2
  49. data/lib/curation_concerns/version.rb +1 -1
  50. data/lib/generators/curation_concerns/install_generator.rb +6 -9
  51. data/lib/generators/curation_concerns/templates/config/authorities/{rights.yml → licenses.yml} +0 -0
  52. data/lib/generators/curation_concerns/templates/config/authorities/rights_statements.yml +37 -0
  53. data/spec/abilities/admin_set_abilities_spec.rb +15 -0
  54. data/spec/actors/curation_concerns/file_actor_spec.rb +1 -2
  55. data/spec/controllers/catalog_controller_spec.rb +9 -11
  56. data/spec/controllers/curation_concerns/classify_concerns_controller_spec.rb +2 -2
  57. data/spec/controllers/curation_concerns/collections_controller_spec.rb +39 -33
  58. data/spec/controllers/curation_concerns/file_sets_controller_json_spec.rb +10 -10
  59. data/spec/controllers/curation_concerns/file_sets_controller_spec.rb +54 -35
  60. data/spec/controllers/curation_concerns/generic_works_controller_json_spec.rb +6 -6
  61. data/spec/controllers/curation_concerns/generic_works_controller_spec.rb +30 -35
  62. data/spec/controllers/curation_concerns/operations_controller_spec.rb +2 -2
  63. data/spec/controllers/curation_concerns/permissions_controller_spec.rb +2 -2
  64. data/spec/controllers/curation_concerns/single_use_links_controller_spec.rb +10 -10
  65. data/spec/controllers/curation_concerns/single_use_links_viewer_controller_spec.rb +7 -12
  66. data/spec/controllers/downloads_controller_spec.rb +15 -19
  67. data/spec/controllers/embargoes_controller_spec.rb +6 -6
  68. data/spec/controllers/leases_controller_spec.rb +6 -6
  69. data/spec/factories/admin_sets.rb +9 -0
  70. data/spec/indexers/file_set_indexer_spec.rb +11 -2
  71. data/spec/indexers/work_indexer_spec.rb +41 -20
  72. data/spec/models/admin_set_spec.rb +78 -0
  73. data/spec/models/curation_concerns/file_set/characterization_spec.rb +1 -1
  74. data/spec/models/file_set_spec.rb +4 -1
  75. data/spec/models/generic_work_spec.rb +24 -1
  76. data/spec/models/solr_document_spec.rb +30 -0
  77. data/spec/presenters/curation_concerns/file_set_presenter_spec.rb +131 -6
  78. data/spec/renderers/curation_concerns/renderers/attribute_renderer_spec.rb +1 -4
  79. data/spec/search_builders/curation_concerns/admin_set_search_builder_spec.rb +17 -0
  80. data/spec/services/curation_concerns/admin_set_service_spec.rb +37 -0
  81. data/spec/services/curation_concerns/license_service_spec.rb +36 -0
  82. data/spec/services/curation_concerns/rights_statements_spec.rb +11 -0
  83. data/spec/services/rights_service_spec.rb +2 -0
  84. data/spec/spec_helper.rb +44 -0
  85. data/spec/support/backport_test.rb +14 -0
  86. data/spec/support/curation_concerns/factory_helpers.rb +3 -1
  87. data/spec/test_app_templates/Gemfile.extra +0 -2
  88. data/spec/views/curation_concerns/base/file_manager.html.erb_spec.rb +13 -1
  89. data/spec/views/curation_concerns/file_sets/show.html.erb_spec.rb +8 -8
  90. metadata +40 -7
@@ -15,7 +15,7 @@ describe CurationConcerns::FileSetsController do
15
15
 
16
16
  context "JSON" do
17
17
  let(:resource) { file_set }
18
- let(:resource_request) { get :show, id: resource, format: :json }
18
+ let(:resource_request) { get :show, params: { id: resource, format: :json } }
19
19
  let(:actor) { controller.send(:actor) }
20
20
  subject { response }
21
21
  describe "unauthorized" do
@@ -35,7 +35,7 @@ describe CurationConcerns::FileSetsController do
35
35
  end
36
36
 
37
37
  describe 'not found' do
38
- before { get :show, id: "non-existent-pid", format: :json }
38
+ before { get :show, params: { id: "non-existent-pid", format: :json } }
39
39
  # Respond with forbidden to protect against object enumeration attack
40
40
  it { is_expected.to respond_forbidden }
41
41
  end
@@ -56,7 +56,7 @@ describe CurationConcerns::FileSetsController do
56
56
  allow_any_instance_of(FileSet).to receive(:persisted?).and_return(true)
57
57
  allow_any_instance_of(FileSet).to receive(:to_param).and_return('999')
58
58
 
59
- post :create, file_set: { title: ['a title'], files: [file] }, parent_id: parent.id, format: :json
59
+ post :create, params: { file_set: { title: ['a title'], files: [file] }, parent_id: parent.id, format: :json }
60
60
 
61
61
  expect(assigns[:file_set]).to be_instance_of ::FileSet # this object is used by the jbuilder template
62
62
  expect(controller).to render_template('curation_concerns/file_sets/jq_upload')
@@ -67,24 +67,24 @@ describe CurationConcerns::FileSetsController do
67
67
  end
68
68
 
69
69
  describe 'failed create: no file' do
70
- before { post :create, file_set: { title: ["foo"] }, parent_id: parent.id, format: :json }
70
+ before { post :create, params: { file_set: { title: ["foo"] }, parent_id: parent.id, format: :json } }
71
71
  it { is_expected.to respond_bad_request(message: 'Error! No file to save') }
72
72
  end
73
73
 
74
74
  describe 'failed create: bad file' do
75
- before { post :create, file_set: { files: ['not a file'] }, parent_id: parent.id, format: :json }
75
+ before { post :create, params: { file_set: { files: ['not a file'] }, parent_id: parent.id, format: :json } }
76
76
  it { is_expected.to respond_bad_request(message: 'Error! No file for upload', description: 'unknown file') }
77
77
  end
78
78
 
79
79
  describe 'failed create: empty file' do
80
- before { post :create, file_set: { files: [empty_file] }, parent_id: parent.id, format: :json }
80
+ before { post :create, params: { file_set: { files: [empty_file] }, parent_id: parent.id, format: :json } }
81
81
  it { is_expected.to respond_unprocessable_entity(errors: { files: "#{empty_file.original_filename} has no content! (Zero length file)" }, description: I18n.t('curation_concerns.api.unprocessable_entity.empty_file')) }
82
82
  end
83
83
 
84
84
  describe 'failed create: solr error' do
85
85
  before do
86
86
  allow(controller).to receive(:process_file).and_raise(RSolr::Error::Http.new(controller.request, response))
87
- post :create, file_set: { files: [file] }, parent_id: parent.id, format: :json
87
+ post :create, params: { file_set: { files: [file] }, parent_id: parent.id, format: :json }
88
88
  end
89
89
 
90
90
  it { is_expected.to respond_internal_error(message: 'Error occurred while creating a FileSet.') }
@@ -112,7 +112,7 @@ describe CurationConcerns::FileSetsController do
112
112
  else
113
113
  expect(actor).to receive(:update_metadata).with(ActionController::Parameters.new(expected_params).permit!).and_return(true)
114
114
  end
115
- put :update, id: resource, file_set: { title: ['updated title'] }, format: :json
115
+ put :update, params: { id: resource, file_set: { title: ['updated title'] }, format: :json }
116
116
  expect(assigns[:file_set]).to be_instance_of ::FileSet # this object is used by the jbuilder template
117
117
  expect(response.status).to eq 200
118
118
  expect(controller).to render_template('curation_concerns/file_sets/show')
@@ -124,7 +124,7 @@ describe CurationConcerns::FileSetsController do
124
124
  describe "integration update" do
125
125
  render_views
126
126
  it "works" do
127
- put :update, id: resource.id, file_set: { title: ['test'] }, format: :json
127
+ put :update, params: { id: resource.id, file_set: { title: ['test'] }, format: :json }
128
128
  expect(response.status).to eq 200
129
129
  end
130
130
  end
@@ -135,7 +135,7 @@ describe CurationConcerns::FileSetsController do
135
135
  controller.curation_concern.errors.add(:some_field, "This is not valid. Fix it.")
136
136
  false
137
137
  end
138
- post :update, id: resource, file_set: { title: nil, depositor: nil }, format: :json
138
+ post :update, params: { id: resource, file_set: { title: nil, depositor: nil }, format: :json }
139
139
  }
140
140
  it "returns 422 and the errors" do
141
141
  expect(response).to respond_unprocessable_entity(errors: { some_field: ["This is not valid. Fix it."] })
@@ -9,9 +9,7 @@ describe CurationConcerns::FileSetsController do
9
9
  before { sign_in user }
10
10
 
11
11
  describe '#create' do
12
- before do
13
- FileSet.destroy_all
14
- end
12
+ before { FileSet.destroy_all }
15
13
 
16
14
  context 'on the happy path' do
17
15
  let(:date_today) { DateTime.now }
@@ -39,10 +37,13 @@ describe CurationConcerns::FileSetsController do
39
37
  expect(actor).to receive(:create_content).with(ActionDispatch::Http::UploadedFile).and_return(true)
40
38
  end
41
39
 
42
- xhr :post, :create, parent_id: parent,
43
- file_set: { files: [file],
44
- title: ['test title'],
45
- visibility: 'restricted' }
40
+ post :create, xhr: true, params: { parent_id: parent,
41
+ file_set: {
42
+ files: [file],
43
+ title: ['test title'],
44
+ visibility: 'restricted'
45
+ }
46
+ }
46
47
  expect(response).to be_success
47
48
  expect(flash[:error]).to be_nil
48
49
  end
@@ -51,8 +52,11 @@ describe CurationConcerns::FileSetsController do
51
52
  context "on something that isn't a file" do
52
53
  # Note: This is a duplicate of coverage in file_sets_controller_json_spec.rb
53
54
  it 'renders error' do
54
- xhr :post, :create, parent_id: parent, file_set: { files: ['hello'] },
55
- permission: { group: { 'public' => 'read' } }, terms_of_service: '1'
55
+ post :create, xhr: true, params: { parent_id: parent,
56
+ file_set: { files: ['hello'] },
57
+ permission: { group: { 'public' => 'read' } },
58
+ terms_of_service: '1'
59
+ }
56
60
  expect(response.status).to eq 400
57
61
  msg = JSON.parse(response.body)['message']
58
62
  expect(msg).to match(/no file for upload/i)
@@ -82,8 +86,12 @@ describe CurationConcerns::FileSetsController do
82
86
  end
83
87
 
84
88
  it 'errors out of create after on continuous rsolr error' do
85
- xhr :post, :create, parent_id: parent, file_set: { files: [file] },
86
- permission: { group: { 'public' => 'read' } }, terms_of_service: '1'
89
+ post :create, xhr: true, params: {
90
+ parent_id: parent,
91
+ file_set: { files: [file] },
92
+ permission: { group: { 'public' => 'read' } },
93
+ terms_of_service: '1'
94
+ }
87
95
  expect(response.body).to include('Error occurred while creating a FileSet.')
88
96
  end
89
97
  end
@@ -95,8 +103,12 @@ describe CurationConcerns::FileSetsController do
95
103
  end
96
104
 
97
105
  it 'errors out of create after on continuous rsolr error' do
98
- xhr :post, :create, parent_id: parent, file_set: { files: [file] },
99
- permission: { group: { 'public' => 'read' } }, terms_of_service: '1'
106
+ post :create, xhr: true, params: {
107
+ parent_id: parent,
108
+ file_set: { files: [file] },
109
+ permission: { group: { 'public' => 'read' } },
110
+ terms_of_service: '1'
111
+ }
100
112
  expect(response.body).to include('Error creating file image.png')
101
113
  end
102
114
  end
@@ -114,7 +126,7 @@ describe CurationConcerns::FileSetsController do
114
126
 
115
127
  it 'deletes the file' do
116
128
  expect(FileSet.find(file_set.id)).to be_kind_of FileSet
117
- delete :destroy, id: file_set
129
+ delete :destroy, params: { id: file_set }
118
130
  expect { FileSet.find(file_set.id) }.to raise_error Ldp::Gone
119
131
  expect(response).to redirect_to main_app.curation_concerns_generic_work_path(parent)
120
132
  end
@@ -137,16 +149,20 @@ describe CurationConcerns::FileSetsController do
137
149
 
138
150
  context 'updating metadata' do
139
151
  it 'is successful and update attributes' do
140
- post :update, id: file_set, file_set:
141
- { title: ['new_title'], keyword: [''], permissions_attributes: [{ type: 'person', name: 'archivist1', access: 'edit' }] }
152
+ post :update, params: {
153
+ id: file_set,
154
+ file_set: { title: ['new_title'], keyword: [''], permissions_attributes: [{ type: 'person', name: 'archivist1', access: 'edit' }] }
155
+ }
142
156
  expect(response).to redirect_to main_app.curation_concerns_file_set_path(file_set)
143
157
  expect(assigns[:file_set].title).to eq(['new_title'])
144
158
  end
145
159
 
146
160
  it 'goes back to edit on an error' do
147
161
  allow_any_instance_of(FileSet).to receive(:valid?).and_return(false)
148
- post :update, id: file_set, file_set:
149
- { title: ['new_title'], keyword: [''], permissions_attributes: [{ type: 'person', name: 'archivist1', access: 'edit' }] }
162
+ post :update, params: {
163
+ id: file_set,
164
+ file_set: { title: ['new_title'], keyword: [''], permissions_attributes: [{ type: 'person', name: 'archivist1', access: 'edit' }] }
165
+ }
150
166
  expect(response.status).to eq 422
151
167
  expect(response).to render_template('edit')
152
168
  expect(assigns[:groups]).to be_kind_of Array
@@ -157,19 +173,22 @@ describe CurationConcerns::FileSetsController do
157
173
  context 'updating visibility' do
158
174
  it 'applies public' do
159
175
  new_visibility = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
160
- post :update, id: file_set, file_set: { visibility: new_visibility, embargo_release_date: '' }
176
+ post :update, params: { id: file_set, file_set: { visibility: new_visibility, embargo_release_date: '' } }
161
177
  expect(file_set.reload.visibility).to eq new_visibility
162
178
  end
163
179
 
164
180
  it 'applies embargo' do
165
- post :update, id: file_set, file_set: {
166
- visibility: 'embargo',
167
- visibility_during_embargo: 'restricted',
168
- embargo_release_date: '2099-09-05',
169
- visibility_after_embargo: 'open',
170
- visibility_during_lease: 'open',
171
- lease_expiration_date: '2099-09-05',
172
- visibility_after_lease: 'restricted'
181
+ post :update, params: {
182
+ id: file_set,
183
+ file_set: {
184
+ visibility: 'embargo',
185
+ visibility_during_embargo: 'restricted',
186
+ embargo_release_date: '2099-09-05',
187
+ visibility_after_embargo: 'open',
188
+ visibility_during_lease: 'open',
189
+ lease_expiration_date: '2099-09-05',
190
+ visibility_after_lease: 'restricted'
191
+ }
173
192
  }
174
193
  file_set.reload
175
194
  expect(file_set).to be_under_embargo
@@ -181,7 +200,7 @@ describe CurationConcerns::FileSetsController do
181
200
  context 'updating file content' do
182
201
  it 'is successful' do
183
202
  expect(IngestFileJob).to receive(:perform_later)
184
- post :update, id: file_set, file_set: { files: [file] }
203
+ post :update, params: { id: file_set, file_set: { files: [file] } }
185
204
  expect(response).to redirect_to main_app.curation_concerns_file_set_path(file_set)
186
205
  end
187
206
  end
@@ -200,7 +219,7 @@ describe CurationConcerns::FileSetsController do
200
219
  it 'is successful' do
201
220
  expect(file_set.latest_content_version.label).to eq('version2')
202
221
  expect(file_set.original_file.content).to eq("This is a test fixture for curation_concerns: <%= @id %>.\n")
203
- post :update, id: file_set, revision: 'version1'
222
+ post :update, params: { id: file_set, revision: 'version1' }
204
223
  expect(response).to redirect_to main_app.curation_concerns_file_set_path(file_set)
205
224
  reloaded = file_set.reload.original_file
206
225
  expect(reloaded.versions.last.label).to eq 'version3'
@@ -218,7 +237,7 @@ describe CurationConcerns::FileSetsController do
218
237
 
219
238
  describe '#edit' do
220
239
  it 'gives me the unauthorized page' do
221
- get :edit, id: public_file_set
240
+ get :edit, params: { id: public_file_set }
222
241
  expect(response.code).to eq '401'
223
242
  expect(response).to render_template(:unauthorized)
224
243
  end
@@ -226,7 +245,7 @@ describe CurationConcerns::FileSetsController do
226
245
 
227
246
  describe '#show' do
228
247
  it 'allows access to the file' do
229
- get :show, id: public_file_set
248
+ get :show, params: { id: public_file_set }
230
249
  expect(response).to be_success
231
250
  end
232
251
  end
@@ -238,27 +257,27 @@ describe CurationConcerns::FileSetsController do
238
257
 
239
258
  describe '#edit' do
240
259
  it 'requires login' do
241
- get :edit, id: public_file_set
260
+ get :edit, params: { id: public_file_set }
242
261
  expect(response).to fail_redirect_and_flash(main_app.new_user_session_path, 'You are not authorized to access this page.')
243
262
  end
244
263
  end
245
264
 
246
265
  describe '#show' do
247
266
  it 'denies access to private files' do
248
- get :show, id: private_file_set
267
+ get :show, params: { id: private_file_set }
249
268
  expect(response).to fail_redirect_and_flash(main_app.new_user_session_path, 'You are not authorized to access this page.')
250
269
  end
251
270
 
252
271
  it 'allows access to public files' do
253
272
  expect(controller).to receive(:additional_response_formats).with(ActionController::MimeResponds::Collector)
254
- get :show, id: public_file_set
273
+ get :show, params: { id: public_file_set }
255
274
  expect(response).to be_success
256
275
  end
257
276
  end
258
277
 
259
278
  describe '#new' do
260
279
  it 'does not let the user submit' do
261
- get :new, parent_id: parent
280
+ get :new, params: { parent_id: parent }
262
281
  expect(response).to fail_redirect_and_flash(main_app.new_user_session_path, 'You are not authorized to access this page.')
263
282
  end
264
283
  end
@@ -8,7 +8,7 @@ describe CurationConcerns::GenericWorksController do
8
8
 
9
9
  context "JSON" do
10
10
  let(:resource) { create(:private_generic_work, user: user) }
11
- let(:resource_request) { get :show, id: resource, format: :json }
11
+ let(:resource_request) { get :show, params: { id: resource, format: :json } }
12
12
  subject { response }
13
13
 
14
14
  describe "unauthorized" do
@@ -28,12 +28,12 @@ describe CurationConcerns::GenericWorksController do
28
28
  end
29
29
 
30
30
  describe 'not found' do
31
- before { get :show, id: "non-existent-pid", format: :json }
31
+ before { get :show, params: { id: "non-existent-pid", format: :json } }
32
32
  it { is_expected.to respond_not_found }
33
33
  end
34
34
 
35
35
  describe 'created' do
36
- before { post :create, generic_work: { title: ['a title'] }, format: :json }
36
+ before { post :create, params: { generic_work: { title: ['a title'] }, format: :json } }
37
37
  it "returns 201, renders show template sets location header" do
38
38
  # Ensure that @curation_concern is set for jbuilder template to use
39
39
  expect(assigns[:curation_concern]).to be_instance_of GenericWork
@@ -45,7 +45,7 @@ describe CurationConcerns::GenericWorksController do
45
45
  end
46
46
 
47
47
  describe 'failed create' do
48
- before { post :create, generic_work: {}, format: :json }
48
+ before { post :create, params: { generic_work: {}, format: :json } }
49
49
  it "returns 422 and the errors" do
50
50
  created_resource = assigns[:curation_concern]
51
51
  expect(response).to respond_unprocessable_entity(errors: created_resource.errors.messages.as_json)
@@ -63,7 +63,7 @@ describe CurationConcerns::GenericWorksController do
63
63
  end
64
64
 
65
65
  describe 'updated' do
66
- before { put :update, id: resource, generic_work: { title: ['updated title'] }, format: :json }
66
+ before { put :update, params: { id: resource, generic_work: { title: ['updated title'] }, format: :json } }
67
67
  it "returns 200, renders show template sets location header" do
68
68
  # Ensure that @curation_concern is set for jbuilder template to use
69
69
  expect(assigns[:curation_concern]).to be_instance_of GenericWork
@@ -76,7 +76,7 @@ describe CurationConcerns::GenericWorksController do
76
76
 
77
77
  describe 'failed update' do
78
78
  before do
79
- post :update, id: resource, generic_work: { title: [''] }, format: :json
79
+ post :update, params: { id: resource, generic_work: { title: [''] }, format: :json }
80
80
  end
81
81
  it "returns 422 and the errors" do
82
82
  expect(response).to respond_unprocessable_entity(errors: { title: ["Your work must have a title."] })
@@ -10,7 +10,7 @@ describe CurationConcerns::GenericWorksController do
10
10
  context 'my own private work' do
11
11
  let(:work) { create(:private_generic_work, user: user) }
12
12
  it 'shows me the page' do
13
- get :show, id: work
13
+ get :show, params: { id: work }
14
14
  expect(response).to be_success
15
15
  end
16
16
 
@@ -18,8 +18,7 @@ describe CurationConcerns::GenericWorksController do
18
18
  render_views
19
19
  it "renders a breadcrumb" do
20
20
  parent = create(:generic_work, title: ['Parent Work'], user: user, ordered_members: [work])
21
- get :show, id: work, parent_id: parent
22
-
21
+ get :show, params: { id: work, parent_id: parent }
23
22
  expect(response.body).to have_content "Parent Work"
24
23
  end
25
24
  end
@@ -28,7 +27,7 @@ describe CurationConcerns::GenericWorksController do
28
27
  context 'someone elses private work' do
29
28
  let(:work) { create(:private_generic_work) }
30
29
  it 'shows unauthorized message' do
31
- get :show, id: work
30
+ get :show, params: { id: work }
32
31
  expect(response.code).to eq '401'
33
32
  expect(response).to render_template(:unauthorized)
34
33
  end
@@ -39,7 +38,7 @@ describe CurationConcerns::GenericWorksController do
39
38
  context "html" do
40
39
  it 'shows me the page' do
41
40
  expect(controller). to receive(:additional_response_formats).with(ActionController::MimeResponds::Collector)
42
- get :show, id: work
41
+ get :show, params: { id: work }
43
42
  expect(response).to be_success
44
43
  end
45
44
  end
@@ -52,7 +51,7 @@ describe CurationConcerns::GenericWorksController do
52
51
  end
53
52
 
54
53
  it 'renders an turtle file' do
55
- get :show, id: '99999999', format: :ttl
54
+ get :show, params: { id: '99999999', format: :ttl }
56
55
  expect(response).to be_successful
57
56
  expect(response.body).to eq "ttl graph"
58
57
  expect(response.content_type).to eq 'text/turtle'
@@ -64,7 +63,7 @@ describe CurationConcerns::GenericWorksController do
64
63
  before { allow_any_instance_of(User).to receive(:groups).and_return(['admin']) }
65
64
  let(:work) { create(:private_generic_work) }
66
65
  it 'someone elses private work should show me the page' do
67
- get :show, id: work
66
+ get :show, params: { id: work }
68
67
  expect(response).to be_success
69
68
  end
70
69
  end
@@ -72,8 +71,8 @@ describe CurationConcerns::GenericWorksController do
72
71
  context 'when a ObjectNotFoundError is raised' do
73
72
  it 'returns 404 page' do
74
73
  allow(controller).to receive(:show).and_raise(ActiveFedora::ObjectNotFoundError)
75
- expect(controller).to receive(:render_404) { controller.render nothing: true }
76
- get :show, id: 'abc123'
74
+ expect(controller).to receive(:render_404) { controller.render body: nil }
75
+ get :show, params: { id: 'abc123' }
77
76
  end
78
77
  end
79
78
  end
@@ -99,7 +98,7 @@ describe CurationConcerns::GenericWorksController do
99
98
  let(:work) { stub_model(GenericWork) }
100
99
  it 'creates a work' do
101
100
  allow(controller).to receive(:curation_concern).and_return(work)
102
- post :create, generic_work: { title: ['a title'] }
101
+ post :create, params: { generic_work: { title: ['a title'] } }
103
102
  expect(response).to redirect_to main_app.curation_concerns_generic_work_path(work)
104
103
  end
105
104
  end
@@ -107,7 +106,7 @@ describe CurationConcerns::GenericWorksController do
107
106
  context 'when create fails' do
108
107
  let(:create_status) { false }
109
108
  it 'draws the form again' do
110
- post :create, generic_work: { title: ['a title'] }
109
+ post :create, params: { generic_work: { title: ['a title'] } }
111
110
  expect(response.status).to eq 422
112
111
  expect(assigns[:form]).to be_kind_of CurationConcerns::GenericWorkForm
113
112
  expect(response).to render_template 'new'
@@ -118,7 +117,7 @@ describe CurationConcerns::GenericWorksController do
118
117
  before { allow(controller.current_ability).to receive(:can?).and_return(false) }
119
118
 
120
119
  it 'shows the unauthorized message' do
121
- post :create, generic_work: { title: ['a title'] }
120
+ post :create, params: { generic_work: { title: ['a title'] } }
122
121
  expect(response.code).to eq '401'
123
122
  expect(response).to render_template(:unauthorized)
124
123
  end
@@ -129,7 +128,7 @@ describe CurationConcerns::GenericWorksController do
129
128
  context 'my own private work' do
130
129
  let(:work) { create(:private_generic_work, user: user) }
131
130
  it 'shows me the page' do
132
- get :edit, id: work
131
+ get :edit, params: { id: work }
133
132
  expect(assigns[:form]).to be_kind_of CurationConcerns::GenericWorkForm
134
133
  expect(response).to be_success
135
134
  end
@@ -139,7 +138,7 @@ describe CurationConcerns::GenericWorksController do
139
138
  routes { Rails.application.class.routes }
140
139
  let(:work) { create(:private_generic_work) }
141
140
  it 'shows the unauthorized message' do
142
- get :edit, id: work
141
+ get :edit, params: { id: work }
143
142
  expect(response.code).to eq '401'
144
143
  expect(response).to render_template(:unauthorized)
145
144
  end
@@ -148,7 +147,7 @@ describe CurationConcerns::GenericWorksController do
148
147
  context 'someone elses public work' do
149
148
  let(:work) { create(:public_generic_work) }
150
149
  it 'shows the unauthorized message' do
151
- get :edit, id: work
150
+ get :edit, params: { id: work }
152
151
  expect(response.code).to eq '401'
153
152
  expect(response).to render_template(:unauthorized)
154
153
  end
@@ -158,7 +157,7 @@ describe CurationConcerns::GenericWorksController do
158
157
  before { allow_any_instance_of(User).to receive(:groups).and_return(['admin']) }
159
158
  let(:work) { create(:private_generic_work) }
160
159
  it 'someone elses private work should show me the page' do
161
- get :edit, id: work
160
+ get :edit, params: { id: work }
162
161
  expect(response).to be_success
163
162
  end
164
163
  end
@@ -166,20 +165,20 @@ describe CurationConcerns::GenericWorksController do
166
165
 
167
166
  describe '#update' do
168
167
  let(:work) { create(:private_generic_work, user: user) }
168
+ let(:visibility_changed) { false }
169
+ let(:actor) { double(update: true) }
169
170
  before do
170
171
  allow(CurationConcerns::CurationConcern).to receive(:actor).and_return(actor)
171
172
  allow_any_instance_of(GenericWork).to receive(:visibility_changed?).and_return(visibility_changed)
172
173
  end
173
- let(:visibility_changed) { false }
174
- let(:actor) { double(update: true) }
175
174
 
176
175
  it 'updates the work' do
177
- patch :update, id: work, generic_work: {}
176
+ patch :update, params: { id: work, generic_work: {} }
178
177
  expect(response).to redirect_to main_app.curation_concerns_generic_work_path(work)
179
178
  end
180
179
 
181
180
  it "can update file membership" do
182
- patch :update, id: work, generic_work: { ordered_member_ids: ['foo_123'] }
181
+ patch :update, params: { id: work, generic_work: { ordered_member_ids: ['foo_123'] } }
183
182
  expected_params = { ordered_member_ids: ['foo_123'] }
184
183
  if Rails.version < '5.0.0'
185
184
  expect(actor).to have_received(:update).with(expected_params)
@@ -196,14 +195,14 @@ describe CurationConcerns::GenericWorksController do
196
195
  let(:work) { create(:work_with_one_file, user: user) }
197
196
 
198
197
  it 'prompts to change the files access' do
199
- patch :update, id: work, generic_work: {}
198
+ patch :update, params: { id: work, generic_work: {} }
200
199
  expect(response).to redirect_to main_app.confirm_curation_concerns_permission_path(controller.curation_concern)
201
200
  end
202
201
  end
203
202
 
204
203
  context 'without children' do
205
204
  it "doesn't prompt to change the files access" do
206
- patch :update, id: work, generic_work: {}
205
+ patch :update, params: { id: work, generic_work: {} }
207
206
  expect(response).to redirect_to main_app.curation_concerns_generic_work_path(work)
208
207
  end
209
208
  end
@@ -213,7 +212,7 @@ describe CurationConcerns::GenericWorksController do
213
212
  let(:actor) { double(update: false) }
214
213
 
215
214
  it 'renders the form' do
216
- patch :update, id: work, generic_work: {}
215
+ patch :update, params: { id: work, generic_work: {} }
217
216
  expect(assigns[:form]).to be_kind_of CurationConcerns::GenericWorkForm
218
217
  expect(response).to render_template('edit')
219
218
  end
@@ -222,7 +221,7 @@ describe CurationConcerns::GenericWorksController do
222
221
  context 'someone elses public work' do
223
222
  let(:work) { create(:public_generic_work) }
224
223
  it 'shows the unauthorized message' do
225
- get :update, id: work
224
+ get :update, params: { id: work }
226
225
  expect(response.code).to eq '401'
227
226
  expect(response).to render_template(:unauthorized)
228
227
  end
@@ -232,7 +231,7 @@ describe CurationConcerns::GenericWorksController do
232
231
  before { allow_any_instance_of(User).to receive(:groups).and_return(['admin']) }
233
232
  let(:work) { create(:private_generic_work) }
234
233
  it 'someone elses private work should update the work' do
235
- patch :update, id: work, generic_work: {}
234
+ patch :update, params: { id: work, generic_work: {} }
236
235
  expect(response).to redirect_to main_app.curation_concerns_generic_work_path(work)
237
236
  end
238
237
  end
@@ -243,7 +242,7 @@ describe CurationConcerns::GenericWorksController do
243
242
  let(:parent_collection) { create(:collection) }
244
243
 
245
244
  it 'deletes the work' do
246
- delete :destroy, id: work_to_be_deleted
245
+ delete :destroy, params: { id: work_to_be_deleted }
247
246
  expect(response).to redirect_to main_app.search_catalog_path
248
247
  expect(GenericWork).not_to exist(work_to_be_deleted.id)
249
248
  end
@@ -254,7 +253,7 @@ describe CurationConcerns::GenericWorksController do
254
253
  parent_collection.save!
255
254
  end
256
255
  it 'deletes the work and updates the parent collection' do
257
- delete :destroy, id: work_to_be_deleted
256
+ delete :destroy, params: { id: work_to_be_deleted }
258
257
  expect(GenericWork).not_to exist(work_to_be_deleted.id)
259
258
  expect(response).to redirect_to main_app.search_catalog_path
260
259
  expect(parent_collection.reload.members).to eq []
@@ -264,13 +263,13 @@ describe CurationConcerns::GenericWorksController do
264
263
  it "invokes the after_destroy callback" do
265
264
  expect(CurationConcerns.config.callback).to receive(:run)
266
265
  .with(:after_destroy, work_to_be_deleted.id, user)
267
- delete :destroy, id: work_to_be_deleted
266
+ delete :destroy, params: { id: work_to_be_deleted }
268
267
  end
269
268
 
270
269
  context 'someone elses public work' do
271
270
  let(:work_to_be_deleted) { create(:private_generic_work) }
272
271
  it 'shows unauthorized message' do
273
- delete :destroy, id: work_to_be_deleted
272
+ delete :destroy, params: { id: work_to_be_deleted }
274
273
  expect(response.code).to eq '401'
275
274
  expect(response).to render_template(:unauthorized)
276
275
  end
@@ -280,7 +279,7 @@ describe CurationConcerns::GenericWorksController do
280
279
  let(:work_to_be_deleted) { create(:private_generic_work) }
281
280
  before { allow_any_instance_of(User).to receive(:groups).and_return(['admin']) }
282
281
  it 'someone elses private work should delete the work' do
283
- delete :destroy, id: work_to_be_deleted
282
+ delete :destroy, params: { id: work_to_be_deleted }
284
283
  expect(GenericWork).not_to exist(work_to_be_deleted.id)
285
284
  end
286
285
  end
@@ -288,12 +287,8 @@ describe CurationConcerns::GenericWorksController do
288
287
 
289
288
  describe '#file_manager' do
290
289
  let(:work) { create(:private_generic_work, user: user) }
291
- before do
292
- sign_in user
293
- end
294
290
  it "is successful" do
295
- get :file_manager, id: work.id
296
-
291
+ get :file_manager, params: { id: work.id }
297
292
  expect(response).to be_success
298
293
  expect(assigns(:presenter)).not_to be_blank
299
294
  end