curation_concerns 1.7.8 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -6
  3. data/CONTRIBUTING.md +20 -68
  4. data/app/actors/curation_concerns/actors/add_as_member_of_collections_actor.rb +23 -0
  5. data/app/actors/curation_concerns/actors/add_to_work_actor.rb +4 -16
  6. data/app/actors/curation_concerns/actors/apply_order_actor.rb +5 -16
  7. data/app/assets/javascripts/curation_concerns/file_manager/sorting.es6 +7 -17
  8. data/app/controllers/concerns/curation_concerns/collections_controller_behavior.rb +6 -2
  9. data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +2 -11
  10. data/app/controllers/concerns/curation_concerns/download_behavior.rb +0 -6
  11. data/app/forms/curation_concerns/forms/work_form.rb +10 -10
  12. data/app/indexers/curation_concerns/collection_indexer.rb +5 -0
  13. data/app/indexers/curation_concerns/work_indexer.rb +2 -0
  14. data/app/jobs/characterize_job.rb +5 -12
  15. data/app/jobs/create_derivatives_job.rb +5 -10
  16. data/app/jobs/ingest_file_job.rb +9 -13
  17. data/app/models/concerns/curation_concerns/ability.rb +0 -1
  18. data/app/models/concerns/curation_concerns/collection.rb +14 -0
  19. data/app/models/concerns/curation_concerns/required_metadata.rb +4 -0
  20. data/app/models/concerns/curation_concerns/solr_document_behavior.rb +4 -0
  21. data/app/models/concerns/curation_concerns/work_behavior.rb +0 -6
  22. data/app/presenters/curation_concerns/admin/workflow_role_presenter.rb +0 -4
  23. data/app/presenters/curation_concerns/collection_presenter.rb +4 -0
  24. data/app/presenters/curation_concerns/work_show_presenter.rb +52 -19
  25. data/app/search_builders/curation_concerns/collection_member_search_builder.rb +15 -1
  26. data/app/services/curation_concerns/actors/actor_factory.rb +1 -2
  27. data/app/services/curation_concerns/workflow/grant_edit_to_depositor.rb +1 -1
  28. data/app/services/curation_concerns/workflow/permission_query.rb +1 -4
  29. data/app/services/curation_concerns/workflow/workflow_factory.rb +1 -1
  30. data/app/services/curation_concerns/workflow/workflow_importer.rb +0 -1
  31. data/app/services/curation_concerns/workflow/workflow_schema.rb +0 -1
  32. data/app/views/catalog/_action_menu_partials/_default.html.erb +1 -7
  33. data/app/views/collections/_document_header.html.erb +0 -4
  34. data/app/views/collections/_edit_actions.html.erb +0 -1
  35. data/app/views/collections/_form.html.erb +1 -0
  36. data/app/views/collections/_show_actions.html.erb +1 -1
  37. data/app/views/collections/edit.html.erb +2 -2
  38. data/app/views/curation_concerns/admin/workflow_roles/index.html.erb +2 -1
  39. data/app/views/curation_concerns/base/_attributes.html.erb +3 -0
  40. data/app/views/curation_concerns/base/_file_manager_member_resource_options.html.erb +2 -2
  41. data/app/views/curation_concerns/base/_file_manager_members.html.erb +5 -13
  42. data/app/views/curation_concerns/base/_file_manager_resource_form.html.erb +1 -1
  43. data/app/views/curation_concerns/base/_form.html.erb +0 -5
  44. data/app/views/curation_concerns/base/_form_member_of_collections.html.erb +4 -0
  45. data/app/views/curation_concerns/base/_form_supplementary_fields.html.erb +1 -0
  46. data/app/views/curation_concerns/base/_member_of_collections.html.erb +10 -0
  47. data/app/views/curation_concerns/base/_show_actions.html.erb +0 -4
  48. data/app/views/curation_concerns/base/file_manager.html.erb +2 -2
  49. data/app/views/curation_concerns/base/show.json.jbuilder +1 -2
  50. data/config/locales/curation_concerns.en.yml +0 -4
  51. data/curation_concerns.gemspec +3 -2
  52. data/lib/curation_concerns/version.rb +1 -1
  53. data/lib/generators/curation_concerns/templates/catalog_controller.rb +1 -0
  54. data/spec/actors/curation_concerns/apply_order_actor_spec.rb +0 -20
  55. data/spec/actors/curation_concerns/work_actor_spec.rb +10 -14
  56. data/spec/controllers/curation_concerns/collections_controller_spec.rb +19 -14
  57. data/spec/controllers/curation_concerns/generic_works_controller_spec.rb +1 -2
  58. data/spec/controllers/downloads_controller_spec.rb +6 -5
  59. data/spec/features/collection_spec.rb +21 -6
  60. data/spec/features/create_child_work_spec.rb +2 -16
  61. data/spec/features/create_work_spec.rb +6 -13
  62. data/spec/features/work_generator_spec.rb +0 -9
  63. data/spec/forms/work_form_spec.rb +0 -8
  64. data/spec/indexers/collection_indexer_spec.rb +14 -0
  65. data/spec/models/collection_spec.rb +11 -48
  66. data/spec/models/curation_concerns/work_behavior_spec.rb +3 -3
  67. data/spec/models/file_set_spec.rb +3 -2
  68. data/spec/presenters/curation_concerns/work_show_presenter_spec.rb +21 -27
  69. data/spec/services/curation_concerns/workflow/grant_edit_to_depositor_spec.rb +4 -15
  70. data/spec/services/curation_concerns/workflow/permission_query_spec.rb +1 -7
  71. data/spec/services/curation_concerns/workflow/workflow_importer_spec.rb +2 -5
  72. data/spec/services/curation_concerns/workflow/workflow_schema_spec.rb +0 -1
  73. data/spec/services/graph_exporter_spec.rb +3 -3
  74. data/spec/views/curation_concerns/base/_show_actions.html.erb_spec.rb +1 -1
  75. data/spec/views/curation_concerns/base/file_manager.html.erb_spec.rb +8 -10
  76. data/spec/views/curation_concerns/base/show.json.jbuilder_spec.rb +1 -3
  77. metadata +28 -32
  78. data/app/actors/curation_concerns/actors/add_to_collection_actor.rb +0 -42
  79. data/app/actors/curation_concerns/optimistic_lock_validator.rb +0 -28
  80. data/app/forms/curation_concerns/forms/file_manager_form.rb +0 -27
  81. data/app/presenters/curation_concerns/member_presenter_factory.rb +0 -70
  82. data/app/search_builders/curation_concerns/member_search_builder.rb +0 -21
  83. data/app/views/catalog/_action_menu_partials/_collection.html.erb +0 -27
  84. data/app/views/curation_concerns/base/_form_in_works_error.html.erb +0 -3
  85. data/app/views/curation_concerns/base/_form_ordered_members_error.html.erb +0 -3
  86. data/db/migrate/20170308175556_add_allows_access_grant_to_workflow.rb +0 -5
  87. data/spec/actors/curation_concerns/add_to_collections_actor_spec.rb +0 -66
  88. data/spec/actors/curation_concerns/optimistic_lock_validator_spec.rb +0 -50
  89. data/spec/forms/curation_concerns/forms/file_manager_form_spec.rb +0 -19
  90. data/spec/presenters/curation_concerns/member_presenter_factory_spec.rb +0 -25
  91. data/spec/views/curation_concerns/admin/workflow_roles/index.html.erb_spec.rb +0 -33
  92. data/spec/views/curation_concerns/base/_form.html.erb_spec.rb +0 -35
@@ -2,7 +2,7 @@
2
2
  <h2 class="non lower">Actions</h2>
3
3
  <p>
4
4
  <%= link_to "Edit", edit_collection_path, class: 'btn btn-default' %> &nbsp;&nbsp;
5
- <%= link_to "Add files from your dashboard", search_path_for_my_works, class: 'btn btn-default' %>
5
+ <%= link_to "Delete", [main_app, @presenter], class: 'btn btn-danger pull-right', data: { confirm: "Delete this Collection?" }, method: :delete %>
6
6
  </p>
7
7
  <%end %>
8
8
 
@@ -1,7 +1,6 @@
1
1
  <% provide :page_title, curation_concern_page_title(@collection) %>
2
2
 
3
- <h1>Edit <%= @collection %> <span class="human_readable_type">(<%= @collection.human_readable_type %>)</span></h1>
4
-
3
+ <h1>Edit <%= @collection.to_s %> <span class="human_readable_type">(<%= @collection.human_readable_type %>)</span></h1>
5
4
 
6
5
  <% unless has_collection_search_parameters? %>
7
6
  <%= render 'collections/edit_actions' %>
@@ -15,3 +14,4 @@
15
14
  <%= render 'catalog/constraints', localized_params: params %>
16
15
  <%= render 'document_list', documents: @member_docs, document_list_format: "dashboard" %>
17
16
  <%= render 'paginate' %>
17
+
@@ -11,7 +11,7 @@
11
11
  <tr>
12
12
  <td><%= user.user_key %></td>
13
13
  <% agent_presenter = @presenter.presenter_for(user) %>
14
- <% if agent_presenter && agent_presenter.responsibilities_present? %>
14
+ <% if agent_presenter %>
15
15
  <td>
16
16
  <ul>
17
17
  <% agent_presenter.responsibilities do |responsibility_presenter| %>
@@ -42,3 +42,4 @@
42
42
  </div>
43
43
  </div>
44
44
  </div>
45
+
@@ -9,5 +9,8 @@
9
9
  <%= presenter.attribute_to_html(:embargo_release_date, render_as: :date) %>
10
10
  <%= presenter.attribute_to_html(:lease_expiration_date, render_as: :date) %>
11
11
  <%= presenter.attribute_to_html(:rights, render_as: :rights) %>
12
+ <% if defined?(presenter.member_of_collection_presenters) && presenter.member_of_collection_presenters.size > 0 %>
13
+ <%= render 'member_of_collections', presenter: presenter %>
14
+ <% end %>
12
15
  </tbody>
13
16
  </table>
@@ -1,10 +1,10 @@
1
1
  <div class="form-group radio_buttons member_resource_options">
2
2
  <span class="radio">
3
- <%= radio_button_tag "thumbnail_id", node.id, @form.thumbnail_id == node.id, id: "thumbnail_id_#{node.id}", class: "radio_buttons" %>
3
+ <%= radio_button_tag "thumbnail_id", node.id, @presenter.thumbnail_id == node.id, id: "thumbnail_id_#{node.id}", class: "radio_buttons" %>
4
4
  <%= label_tag "thumbnail_id_#{node.id}", "Thumbnail" %>
5
5
  </span>
6
6
  <span class="radio">
7
- <%= radio_button_tag "representative_id", node.id, @form.representative_id == node.id, id: "representative_id_#{node.id}", class: "radio_buttons" %>
7
+ <%= radio_button_tag "representative_id", node.id, @presenter.representative_id == node.id, id: "representative_id_#{node.id}", class: "radio_buttons" %>
8
8
  <%= label_tag "representative_id_#{node.id}", "Representative Media" %>
9
9
  </span>
10
10
  </div>
@@ -1,13 +1,5 @@
1
- <%= content_tag :ul,
2
- id: "sortable",
3
- class: "list-unstyled grid clearfix",
4
- data: {
5
- id: @form.id,
6
- "class-name" => @form.model_name.plural,
7
- "singular-class-name" => @form.model_name.singular,
8
- version: @form.version
9
- } do %>
10
- <% @form.member_presenters.each do |member| %>
11
- <%= render "file_manager_member", node: member %>
12
- <% end %>
13
- <% end %>
1
+ <ul id="sortable" data-id="<%= @presenter.id %>" data-class-name="<%= @presenter.model_name.plural %>" data-singular-class-name="<%= @presenter.model_name.singular %>" class="list-unstyled grid clearfix">
2
+ <% @presenter.member_presenters.each do |member| %>
3
+ <%= render "file_manager_member", node: member %>
4
+ <% end %>
5
+ </ul>
@@ -1,5 +1,5 @@
1
1
  <div class="resource-form-container">
2
- <%= simple_form_for [main_app, @form], remote: true, html: { id: 'resource-form', 'data-type': 'json' } do |f| %>
2
+ <%= simple_form_for [main_app, @presenter], remote: true, html: { id: 'resource-form', 'data-type': 'json' } do |f| %>
3
3
  <%= f.input :thumbnail_id, as: :hidden, input_html: { data: {member_link: 'thumbnail_id'}} %>
4
4
  <%= f.input :representative_id, as: :hidden, input_html: { data: {member_link: 'representative_id'}} %>
5
5
  <% end %>
@@ -4,8 +4,6 @@
4
4
  <div class="alert alert-danger fade in">
5
5
  <strong>Wait don't go!</strong> There was a problem with your submission. Please review the errors below:
6
6
  <a class="close" data-dismiss="alert" href="#">&times;</a>
7
- <%= render 'form_in_works_error', f: f %>
8
- <%= render 'form_ordered_members_error', f: f %>
9
7
  </div>
10
8
  <% end %>
11
9
 
@@ -14,9 +12,6 @@
14
12
 
15
13
  <div class="row">
16
14
  <div class="col-md-12 form-actions">
17
- <%# TODO: If we start using ActionCable, we could listen for object updates and
18
- alert the user that the object has changed by someone else %>
19
- <%= f.input CurationConcerns::OptimisticLockValidator.version_field, as: :hidden unless f.object.new_record? %>
20
15
  <%= f.submit class: 'btn btn-primary require-contributor-agreement' %>
21
16
  <% if curation_concern.new_record? %>
22
17
  <%= link_to 'Cancel', main_app.root_path, class: 'btn btn-link' %>
@@ -0,0 +1,4 @@
1
+ <div class="row with-headroom">
2
+ <legend>Member of Collections</legend>
3
+ <%= f.input :member_of_collection_ids, collection: @form.collections_for_select, label: false, input_html: { multiple: true } %>
4
+ </div>
@@ -9,3 +9,4 @@
9
9
 
10
10
  <%= render "form_rights", f: f %>
11
11
  <%= render "form_in_works", f: f %>
12
+ <%= render "form_member_of_collections", f: f %>
@@ -0,0 +1,10 @@
1
+ <tr>
2
+ <td>Member of Collections</td>
3
+ <td>
4
+ <ul class="member_of_collections">
5
+ <% presenter.member_of_collection_presenters.each do |p| %>
6
+ <li><%= link_to p.to_s, main_app.collection_path(p.id), class: 'collection-link' %></li>
7
+ <% end %>
8
+ </ul>
9
+ </td>
10
+ </tr>
@@ -20,9 +20,5 @@
20
20
  <% end %>
21
21
  <%= link_to "Delete This #{@presenter.human_readable_type}", [main_app, @presenter], class: 'btn btn-danger pull-right', data: { confirm: "Delete this #{@presenter.human_readable_type}?" }, method: :delete %>
22
22
  <% end %>
23
- <% if collector %>
24
- <%= render 'collections/add_to_collection_modal', collectible: @presenter %>
25
- <%= link_to_select_collection @presenter, class: 'btn btn-default' %>
26
- <% end %>
27
23
  </div>
28
24
  <% end %>
@@ -1,11 +1,11 @@
1
1
  <h1><%= t("file_manager.link_text") %></h1>
2
2
  <ul class="breadcrumb">
3
3
  <li>
4
- Back to <%= link_to @form.to_s, [main_app, @form] %>
4
+ Back to <%= link_to @presenter.to_s, [main_app, @presenter] %>
5
5
  </li>
6
6
  </ul>
7
7
 
8
- <% if !@form.member_presenters.empty? %>
8
+ <% if !@presenter.member_presenters.empty? %>
9
9
  <div data-action="file-manager">
10
10
  <div class="col-md-3" id="file-manager-tools">
11
11
  <h2>Toolbar</h2>
@@ -1,2 +1 @@
1
- json.extract! @curation_concern, *[:id] + @curation_concern.class.fields.select {|f| ![:has_model].include? f}
2
- json.version @curation_concern.etag
1
+ json.extract! @curation_concern, *[:id] + @curation_concern.class.fields.select {|f| ![:has_model].include? f}
@@ -1,8 +1,4 @@
1
1
  en:
2
- activemodel:
3
- errors:
4
- messages:
5
- conflict: "Another user has made a change to that %{model} since you accessed the edit form."
6
2
  curation_concerns:
7
3
  admin:
8
4
  workflow_roles:
@@ -27,9 +27,9 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency 'hydra-editor', '>= 2', '< 4'
28
28
  spec.add_dependency 'rails_autolink'
29
29
  spec.add_dependency 'sprockets-es6'
30
- spec.add_dependency 'kaminari_route_prefix', "< 2"
30
+ spec.add_dependency 'kaminari_route_prefix', '~> 0.0.1'
31
31
  spec.add_dependency 'active_attr'
32
- spec.add_dependency 'hydra-works', '>= 0.14.0'
32
+ spec.add_dependency 'hydra-works', '>= 0.15.0'
33
33
  spec.add_dependency 'active_fedora-noid', '~> 2.0.0.beta5'
34
34
  spec.add_dependency 'qa', '~> 0.5'
35
35
  spec.add_dependency 'redlock', '~> 0.1.2'
@@ -45,6 +45,7 @@ Gem::Specification.new do |spec|
45
45
  spec.add_dependency 'dry-struct', '~> 0.1'
46
46
  spec.add_dependency 'flot-rails', '~> 0.0.7'
47
47
  spec.add_dependency 'highcharts-rails'
48
+ spec.add_dependency 'hydra-pcdm', '~> 0.9.0'
48
49
 
49
50
  spec.add_development_dependency 'solr_wrapper', '~> 0.16'
50
51
  spec.add_development_dependency 'fcrepo_wrapper', '~> 0.1'
@@ -1,3 +1,3 @@
1
1
  module CurationConcerns
2
- VERSION = '1.7.8'.freeze
2
+ VERSION = '2.0.0.rc1'.freeze
3
3
  end
@@ -30,6 +30,7 @@ class CatalogController < ApplicationController
30
30
  config.add_facet_field solr_name('language', :facetable), limit: 5
31
31
  config.add_facet_field solr_name('based_near', :facetable), limit: 5
32
32
  config.add_facet_field solr_name('publisher', :facetable), limit: 5
33
+ config.add_facet_field solr_name('member_of_collections', :symbol), limit: 5, label: 'Collections'
33
34
  config.add_facet_field 'generic_type_sim', show: false, single: true
34
35
 
35
36
  # Have BL send all facet field names to Solr, which has been the default
@@ -78,25 +78,5 @@ describe CurationConcerns::Actors::ApplyOrderActor do
78
78
  expect(curation_concern.ordered_member_ids.size).to eq(1)
79
79
  end
80
80
  end
81
-
82
- context 'with ordered_member_ids that include a work owned by a different user' do
83
- # set user not a non-admin for this test to ensure the actor disallows adding the child
84
- let(:user) { create(:user) }
85
- let(:other_user) { create(:user) }
86
- let(:child) { create(:generic_work, user: other_user) }
87
- let(:attributes) { { ordered_member_ids: [child.id] } }
88
- let(:root_actor) { double }
89
-
90
- before do
91
- allow(CurationConcerns::Actors::RootActor).to receive(:new).and_return(root_actor)
92
- allow(root_actor).to receive(:update).with({}).and_return(true)
93
- curation_concern.apply_depositor_metadata(user.user_key)
94
- curation_concern.save!
95
- end
96
-
97
- it "does not attach the work" do
98
- expect(subject.update(attributes)).to be false
99
- end
100
- end
101
81
  end
102
82
  end
@@ -81,7 +81,7 @@ describe CurationConcerns::Actors::GenericWorkActor do
81
81
  end
82
82
 
83
83
  context 'with in_work_ids' do
84
- let(:parent) { create(:generic_work, user: user) }
84
+ let(:parent) { FactoryGirl.create(:generic_work) }
85
85
  let(:attributes) do
86
86
  FactoryGirl.attributes_for(:generic_work, visibility: visibility).merge(
87
87
  in_works_ids: [parent.id]
@@ -91,11 +91,6 @@ describe CurationConcerns::Actors::GenericWorkActor do
91
91
  expect(subject.create(attributes)).to be true
92
92
  expect(curation_concern.in_works).to eq [parent]
93
93
  end
94
- it "does not attach the parent" do
95
- allow(curation_concern).to receive(:depositor).and_return("blahblahblah")
96
- expect(subject.create(attributes)).to be false
97
- expect(curation_concern.in_works).to eq []
98
- end
99
94
  end
100
95
 
101
96
  context 'with a file' do
@@ -195,20 +190,23 @@ describe CurationConcerns::Actors::GenericWorkActor do
195
190
  end
196
191
 
197
192
  context 'with in_works_ids' do
198
- let(:parent) { create(:generic_work, user: user) }
199
- let(:old_parent) { create(:generic_work, user: user) }
193
+ let(:parent) { FactoryGirl.create(:generic_work) }
194
+ let(:old_parent) { FactoryGirl.create(:generic_work) }
200
195
  let(:attributes) do
201
196
  FactoryGirl.attributes_for(:generic_work).merge(
202
197
  in_works_ids: [parent.id]
203
198
  )
204
199
  end
205
200
  before do
201
+ curation_concern.apply_depositor_metadata(user.user_key)
202
+ curation_concern.save!
206
203
  old_parent.ordered_members << curation_concern
207
204
  old_parent.save!
208
205
  end
209
206
  it "attaches the parent" do
210
207
  expect(subject.update(attributes)).to be true
211
208
  expect(curation_concern.in_works).to eq [parent]
209
+
212
210
  expect(old_parent.reload.members).to eq []
213
211
  end
214
212
  end
@@ -226,7 +224,6 @@ describe CurationConcerns::Actors::GenericWorkActor do
226
224
  old_parent.save!
227
225
  end
228
226
  it "removes the old parent" do
229
- allow(curation_concern).to receive(:depositor).and_return(old_parent.depositor)
230
227
  expect(subject.update(attributes)).to be true
231
228
  expect(curation_concern.in_works).to eq []
232
229
  expect(old_parent.reload.members).to eq []
@@ -254,18 +251,17 @@ describe CurationConcerns::Actors::GenericWorkActor do
254
251
  let!(:collection1) { create(:collection, user: user) }
255
252
  let!(:collection2) { create(:collection, user: user) }
256
253
  let(:attributes) do
257
- FactoryGirl.attributes_for(:generic_work, collection_ids: [collection2.id])
254
+ FactoryGirl.attributes_for(:generic_work, member_of_collection_ids: [collection2.id])
258
255
  end
259
256
  before do
260
257
  curation_concern.apply_depositor_metadata(user.user_key)
258
+ curation_concern.member_of_collections = [collection1]
261
259
  curation_concern.save!
262
- collection1.members << curation_concern
263
- collection1.save!
264
260
  end
265
261
 
266
262
  it 'remove from the old collection and adds to the new collection' do
267
263
  curation_concern.reload
268
- expect(curation_concern.in_collections).to eq [collection1]
264
+ expect(curation_concern.member_of_collection_ids).to eq [collection1.id]
269
265
  # before running actor.update, the work is in collection1
270
266
 
271
267
  expect(subject.update(attributes)).to be true
@@ -274,7 +270,7 @@ describe CurationConcerns::Actors::GenericWorkActor do
274
270
  expect(curation_concern.identifier).to be_blank
275
271
  expect(curation_concern).to be_persisted
276
272
  # after running actor.update, the work is in collection2 and no longer in collection1
277
- expect(curation_concern.in_collections).to eq [collection2]
273
+ expect(curation_concern.member_of_collections).to eq [collection2]
278
274
  end
279
275
  end
280
276
 
@@ -59,13 +59,13 @@ describe CollectionsController do
59
59
  }
60
60
  end.to change { Collection.count }.by(1)
61
61
  collection = assigns(:collection)
62
- expect(collection.members).to match_array [asset1, asset2]
62
+ expect(collection.member_objects).to match_array [asset1, asset2]
63
63
  end
64
64
 
65
65
  it 'adds docs to the collection if a batch id is provided and add the collection id to the documents in the collection' do
66
66
  asset1.save
67
67
  post :create, params: { batch_document_ids: [asset1.id], collection: collection_attrs }
68
- expect(assigns[:collection].members).to eq [asset1]
68
+ expect(assigns[:collection].member_objects).to eq [asset1]
69
69
 
70
70
  asset_results = ActiveFedora::SolrService.instance.conn.get 'select', params: { fq: ["id:\"#{asset1.id}\""], fl: ['id'] }
71
71
  expect(asset_results['response']['numFound']).to eq 1
@@ -93,9 +93,10 @@ describe CollectionsController do
93
93
 
94
94
  context 'collection members' do
95
95
  before do
96
- [asset1, asset2].map(&:save) # bogus_depositor_asset is already saved
97
- collection.members = [asset1, asset2]
98
- collection.save!
96
+ [asset1, asset2].each do |asset|
97
+ asset.member_of_collections << collection
98
+ asset.save!
99
+ end
99
100
  end
100
101
 
101
102
  # Collections are unordered by default, which disallows duplicates.
@@ -123,9 +124,9 @@ describe CollectionsController do
123
124
  collection: { members: 'add' },
124
125
  batch_document_ids: [asset4.id]
125
126
  }
126
- }.to change { collection.reload.members.size }.by(1)
127
+ }.to change { collection.reload.member_objects.size }.by(1)
127
128
  expect(response).to redirect_to routes.url_helpers.collection_path(collection)
128
- expect(assigns[:collection].members).to match_array [asset1, asset2, asset4]
129
+ expect(assigns[:collection].member_objects).to match_array [asset1, asset2, asset4]
129
130
 
130
131
  asset_results = ActiveFedora::SolrService.instance.conn.get 'select', params: { fq: ["id:\"#{asset2.id}\""], fl: ['id'] }
131
132
  expect(asset_results['response']['numFound']).to eq 1
@@ -141,7 +142,7 @@ describe CollectionsController do
141
142
  collection: { members: 'remove' },
142
143
  batch_document_ids: [asset2]
143
144
  }
144
- }.to change { collection.reload.members.size }.by(-1)
145
+ }.to change { asset2.reload.member_of_collections.size }.by(-1)
145
146
  asset_results = ActiveFedora::SolrService.instance.conn.get 'select', params: { fq: ["id:\"#{asset2.id}\""], fl: ['id'] }
146
147
  expect(asset_results['response']['numFound']).to eq 1
147
148
 
@@ -160,8 +161,10 @@ describe CollectionsController do
160
161
  end
161
162
  end
162
163
  before do
163
- collection.members = [asset1, asset2, asset3]
164
- collection.save!
164
+ [asset1, asset2, asset3].each do |asset|
165
+ asset.member_of_collections << collection
166
+ asset.save
167
+ end
165
168
  end
166
169
 
167
170
  it 'moves the members' do
@@ -172,8 +175,8 @@ describe CollectionsController do
172
175
  destination_collection_id: collection2,
173
176
  batch_document_ids: [asset2, asset3]
174
177
  }
175
- expect(collection.reload.members).to eq [asset1]
176
- expect(collection2.reload.members).to match_array [asset2, asset3]
178
+ expect(collection.reload.member_objects).to eq [asset1]
179
+ expect(collection2.reload.member_objects).to match_array [asset2, asset3]
177
180
  end
178
181
  end
179
182
 
@@ -201,8 +204,10 @@ describe CollectionsController do
201
204
  a.apply_depositor_metadata(user)
202
205
  a.save
203
206
  end
204
- collection.members = [asset1, asset2, asset3]
205
- collection.save
207
+ [asset1, asset2, asset3].each do |asset|
208
+ asset.member_of_collections = [collection]
209
+ asset.save
210
+ end
206
211
  end
207
212
 
208
213
  it 'returns the collection and its members' do
@@ -20,7 +20,6 @@ describe CurationConcerns::GenericWorksController do
20
20
  get :show, params: { id: work }
21
21
  expect(response.code).to eq '401'
22
22
  expect(response).to render_template(:unavailable)
23
- expect(assigns[:presenter]).to be_instance_of CurationConcerns::WorkShowPresenter
24
23
  expect(flash[:notice]).to eq 'The work is not currently available because it has not yet completed the approval process'
25
24
  end
26
25
  end
@@ -341,7 +340,7 @@ describe CurationConcerns::GenericWorksController do
341
340
  it "is successful" do
342
341
  get :file_manager, params: { id: work.id }
343
342
  expect(response).to be_success
344
- expect(assigns(:form)).not_to be_blank
343
+ expect(assigns(:presenter)).not_to be_blank
345
344
  end
346
345
  end
347
346
 
@@ -6,7 +6,6 @@ describe DownloadsController do
6
6
  let(:file_set) do
7
7
  FactoryGirl.create(:file_with_work, user: user, content: File.open(fixture_file_path('files/image.png')))
8
8
  end
9
- let(:default_image) { ActionController::Base.helpers.image_path 'default.png' }
10
9
  it 'calls render_404 if the object does not exist' do
11
10
  expect(controller).to receive(:render_404) { controller.render body: nil }
12
11
  get :show, params: { id: '8675309' }
@@ -16,16 +15,18 @@ describe DownloadsController do
16
15
  let(:another_user) { FactoryGirl.create(:user) }
17
16
  before { sign_in another_user }
18
17
 
19
- it 'redirects to the default image' do
18
+ it 'redirects to root' do
20
19
  get :show, params: { id: file_set.to_param }
21
- expect(response).to redirect_to default_image
20
+ expect(response).to redirect_to root_path
21
+ expect(flash['alert']).to eq 'You are not authorized to access this page.'
22
22
  end
23
23
  end
24
24
 
25
25
  context "when user isn't logged in" do
26
- it 'redirects to the default image' do
26
+ it 'redirects to sign in' do
27
27
  get :show, params: { id: file_set.to_param }
28
- expect(response).to redirect_to default_image
28
+ expect(response).to redirect_to new_user_session_path
29
+ expect(flash['alert']).to eq 'You are not authorized to access this page.'
29
30
  end
30
31
 
31
32
  it 'authorizes the resource using only the id' do