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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -6
- data/CONTRIBUTING.md +20 -68
- data/app/actors/curation_concerns/actors/add_as_member_of_collections_actor.rb +23 -0
- data/app/actors/curation_concerns/actors/add_to_work_actor.rb +4 -16
- data/app/actors/curation_concerns/actors/apply_order_actor.rb +5 -16
- data/app/assets/javascripts/curation_concerns/file_manager/sorting.es6 +7 -17
- data/app/controllers/concerns/curation_concerns/collections_controller_behavior.rb +6 -2
- data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +2 -11
- data/app/controllers/concerns/curation_concerns/download_behavior.rb +0 -6
- data/app/forms/curation_concerns/forms/work_form.rb +10 -10
- data/app/indexers/curation_concerns/collection_indexer.rb +5 -0
- data/app/indexers/curation_concerns/work_indexer.rb +2 -0
- data/app/jobs/characterize_job.rb +5 -12
- data/app/jobs/create_derivatives_job.rb +5 -10
- data/app/jobs/ingest_file_job.rb +9 -13
- data/app/models/concerns/curation_concerns/ability.rb +0 -1
- data/app/models/concerns/curation_concerns/collection.rb +14 -0
- data/app/models/concerns/curation_concerns/required_metadata.rb +4 -0
- data/app/models/concerns/curation_concerns/solr_document_behavior.rb +4 -0
- data/app/models/concerns/curation_concerns/work_behavior.rb +0 -6
- data/app/presenters/curation_concerns/admin/workflow_role_presenter.rb +0 -4
- data/app/presenters/curation_concerns/collection_presenter.rb +4 -0
- data/app/presenters/curation_concerns/work_show_presenter.rb +52 -19
- data/app/search_builders/curation_concerns/collection_member_search_builder.rb +15 -1
- data/app/services/curation_concerns/actors/actor_factory.rb +1 -2
- data/app/services/curation_concerns/workflow/grant_edit_to_depositor.rb +1 -1
- data/app/services/curation_concerns/workflow/permission_query.rb +1 -4
- data/app/services/curation_concerns/workflow/workflow_factory.rb +1 -1
- data/app/services/curation_concerns/workflow/workflow_importer.rb +0 -1
- data/app/services/curation_concerns/workflow/workflow_schema.rb +0 -1
- data/app/views/catalog/_action_menu_partials/_default.html.erb +1 -7
- data/app/views/collections/_document_header.html.erb +0 -4
- data/app/views/collections/_edit_actions.html.erb +0 -1
- data/app/views/collections/_form.html.erb +1 -0
- data/app/views/collections/_show_actions.html.erb +1 -1
- data/app/views/collections/edit.html.erb +2 -2
- data/app/views/curation_concerns/admin/workflow_roles/index.html.erb +2 -1
- data/app/views/curation_concerns/base/_attributes.html.erb +3 -0
- data/app/views/curation_concerns/base/_file_manager_member_resource_options.html.erb +2 -2
- data/app/views/curation_concerns/base/_file_manager_members.html.erb +5 -13
- data/app/views/curation_concerns/base/_file_manager_resource_form.html.erb +1 -1
- data/app/views/curation_concerns/base/_form.html.erb +0 -5
- data/app/views/curation_concerns/base/_form_member_of_collections.html.erb +4 -0
- data/app/views/curation_concerns/base/_form_supplementary_fields.html.erb +1 -0
- data/app/views/curation_concerns/base/_member_of_collections.html.erb +10 -0
- data/app/views/curation_concerns/base/_show_actions.html.erb +0 -4
- data/app/views/curation_concerns/base/file_manager.html.erb +2 -2
- data/app/views/curation_concerns/base/show.json.jbuilder +1 -2
- data/config/locales/curation_concerns.en.yml +0 -4
- data/curation_concerns.gemspec +3 -2
- data/lib/curation_concerns/version.rb +1 -1
- data/lib/generators/curation_concerns/templates/catalog_controller.rb +1 -0
- data/spec/actors/curation_concerns/apply_order_actor_spec.rb +0 -20
- data/spec/actors/curation_concerns/work_actor_spec.rb +10 -14
- data/spec/controllers/curation_concerns/collections_controller_spec.rb +19 -14
- data/spec/controllers/curation_concerns/generic_works_controller_spec.rb +1 -2
- data/spec/controllers/downloads_controller_spec.rb +6 -5
- data/spec/features/collection_spec.rb +21 -6
- data/spec/features/create_child_work_spec.rb +2 -16
- data/spec/features/create_work_spec.rb +6 -13
- data/spec/features/work_generator_spec.rb +0 -9
- data/spec/forms/work_form_spec.rb +0 -8
- data/spec/indexers/collection_indexer_spec.rb +14 -0
- data/spec/models/collection_spec.rb +11 -48
- data/spec/models/curation_concerns/work_behavior_spec.rb +3 -3
- data/spec/models/file_set_spec.rb +3 -2
- data/spec/presenters/curation_concerns/work_show_presenter_spec.rb +21 -27
- data/spec/services/curation_concerns/workflow/grant_edit_to_depositor_spec.rb +4 -15
- data/spec/services/curation_concerns/workflow/permission_query_spec.rb +1 -7
- data/spec/services/curation_concerns/workflow/workflow_importer_spec.rb +2 -5
- data/spec/services/curation_concerns/workflow/workflow_schema_spec.rb +0 -1
- data/spec/services/graph_exporter_spec.rb +3 -3
- data/spec/views/curation_concerns/base/_show_actions.html.erb_spec.rb +1 -1
- data/spec/views/curation_concerns/base/file_manager.html.erb_spec.rb +8 -10
- data/spec/views/curation_concerns/base/show.json.jbuilder_spec.rb +1 -3
- metadata +28 -32
- data/app/actors/curation_concerns/actors/add_to_collection_actor.rb +0 -42
- data/app/actors/curation_concerns/optimistic_lock_validator.rb +0 -28
- data/app/forms/curation_concerns/forms/file_manager_form.rb +0 -27
- data/app/presenters/curation_concerns/member_presenter_factory.rb +0 -70
- data/app/search_builders/curation_concerns/member_search_builder.rb +0 -21
- data/app/views/catalog/_action_menu_partials/_collection.html.erb +0 -27
- data/app/views/curation_concerns/base/_form_in_works_error.html.erb +0 -3
- data/app/views/curation_concerns/base/_form_ordered_members_error.html.erb +0 -3
- data/db/migrate/20170308175556_add_allows_access_grant_to_workflow.rb +0 -5
- data/spec/actors/curation_concerns/add_to_collections_actor_spec.rb +0 -66
- data/spec/actors/curation_concerns/optimistic_lock_validator_spec.rb +0 -50
- data/spec/forms/curation_concerns/forms/file_manager_form_spec.rb +0 -19
- data/spec/presenters/curation_concerns/member_presenter_factory_spec.rb +0 -25
- data/spec/views/curation_concerns/admin/workflow_roles/index.html.erb_spec.rb +0 -33
- 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' %>
|
5
|
-
<%= link_to "
|
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
|
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, @
|
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, @
|
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
|
-
<%=
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
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, @
|
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="#">×</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,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 @
|
4
|
+
Back to <%= link_to @presenter.to_s, [main_app, @presenter] %>
|
5
5
|
</li>
|
6
6
|
</ul>
|
7
7
|
|
8
|
-
<% if !@
|
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}
|
data/curation_concerns.gemspec
CHANGED
@@ -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',
|
30
|
+
spec.add_dependency 'kaminari_route_prefix', '~> 0.0.1'
|
31
31
|
spec.add_dependency 'active_attr'
|
32
|
-
spec.add_dependency 'hydra-works', '>= 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'
|
@@ -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
|
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
|
199
|
-
let(:old_parent) { create(:generic_work
|
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,
|
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.
|
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.
|
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.
|
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].
|
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].
|
97
|
-
|
98
|
-
|
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.
|
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].
|
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 {
|
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
|
-
|
164
|
-
|
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.
|
176
|
-
expect(collection2.reload.
|
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
|
-
|
205
|
-
|
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(:
|
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
|
18
|
+
it 'redirects to root' do
|
20
19
|
get :show, params: { id: file_set.to_param }
|
21
|
-
expect(response).to redirect_to
|
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
|
26
|
+
it 'redirects to sign in' do
|
27
27
|
get :show, params: { id: file_set.to_param }
|
28
|
-
expect(response).to redirect_to
|
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
|