sufia 7.3.0.rc3 → 7.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +1 -0
- data/.eslintrc +6 -5
- data/.rubocop.yml +0 -1
- data/.rubocop_todo.yml +0 -8
- data/README.md +10 -5
- data/app/actors/sufia/actors/attach_members_actor.rb +70 -0
- data/app/actors/sufia/apply_permission_template_actor.rb +4 -4
- data/app/actors/sufia/default_admin_set_actor.rb +10 -7
- data/app/assets/javascripts/sufia.js +3 -1
- data/app/assets/javascripts/sufia/app.js +7 -18
- data/app/assets/javascripts/sufia/autocomplete.es6 +56 -57
- data/app/assets/javascripts/sufia/autocomplete/language.es6 +1 -2
- data/app/assets/javascripts/sufia/autocomplete/location.es6 +1 -1
- data/app/assets/javascripts/sufia/autocomplete/subject.es6 +1 -3
- data/app/assets/javascripts/sufia/autocomplete/work.es6 +31 -22
- data/app/assets/javascripts/sufia/{editor.js → content_blocks.js} +0 -0
- data/app/assets/javascripts/sufia/editor.es6 +47 -0
- data/app/assets/javascripts/sufia/editor/admin_set_widget.es6 +39 -0
- data/app/assets/javascripts/sufia/notifications.es6 +13 -13
- data/app/assets/javascripts/sufia/permissions/control.es6 +3 -3
- data/app/assets/javascripts/sufia/permissions/group_controls.es6 +2 -2
- data/app/assets/javascripts/sufia/permissions/user_controls.es6 +3 -3
- data/app/assets/javascripts/sufia/relationships.js +4 -2
- data/app/assets/javascripts/sufia/relationships/control.es6 +83 -0
- data/app/assets/javascripts/sufia/relationships/registry.es6 +60 -0
- data/app/assets/javascripts/sufia/relationships/registry_entry.es6 +38 -0
- data/app/assets/javascripts/sufia/relationships/work.es6 +7 -0
- data/app/assets/javascripts/sufia/save_work/required_fields.es6 +1 -1
- data/app/assets/javascripts/sufia/save_work/save_work_control.es6 +19 -11
- data/app/assets/javascripts/sufia/save_work/visibility_component.es6 +19 -10
- data/app/assets/javascripts/sufia/select_work_type.es6 +8 -6
- data/app/controllers/concerns/sufia/batch_uploads_controller_behavior.rb +1 -1
- data/app/controllers/concerns/sufia/works_controller_behavior.rb +7 -0
- data/app/controllers/sufia/admin/admin_sets_controller.rb +5 -2
- data/app/forms/sufia/forms/batch_edit_form.rb +2 -1
- data/app/forms/sufia/forms/work_form.rb +19 -17
- data/app/models/concerns/sufia/admin_set_behavior.rb +38 -0
- data/app/presenters/sufia/admin_set_options_presenter.rb +51 -0
- data/app/presenters/sufia/admin_set_presenter.rb +11 -0
- data/app/search_builders/sufia/find_works_search_builder.rb +1 -0
- data/app/services/sufia/actor_factory.rb +1 -0
- data/app/services/sufia/admin_set_create_service.rb +9 -9
- data/app/services/sufia/admin_set_service.rb +0 -28
- data/app/services/sufia/workflow/abstract_notification.rb +14 -1
- data/app/services/sufia/workflow/changes_required_notification.rb +2 -2
- data/app/services/sufia/workflow/deposited_notification.rb +1 -1
- data/app/services/sufia/workflow/pending_review_notification.rb +1 -1
- data/app/views/curation_concerns/base/_find_work_widget.html.erb +10 -16
- data/app/views/curation_concerns/base/_form.html.erb +5 -1
- data/app/views/curation_concerns/base/_form_child_work_relationships.html.erb +22 -32
- data/app/views/curation_concerns/base/_form_relationships.html.erb +4 -7
- data/app/views/curation_concerns/base/_guts4form.html.erb +7 -1
- data/app/views/sufia/admin/admin_sets/_form_participants.html.erb +3 -3
- data/app/views/sufia/admin/admin_sets/show.html.erb +10 -2
- data/config/initializers/monkey_patch_admin_set.rb +2 -0
- data/config/locales/sufia.en.yml +2 -0
- data/db/migrate/20170317141521_permission_template_change_column_workflow_name.rb +5 -0
- data/lib/generators/sufia/templates/workflow.json.erb +1 -0
- data/lib/sufia/version.rb +1 -1
- data/lib/tasks/migrate.rake +1 -1
- data/spec/actors/sufia/actors/attach_members_actor_spec.rb +68 -0
- data/spec/actors/sufia/apply_permission_template_actor_spec.rb +7 -3
- data/spec/actors/sufia/default_admin_set_actor_spec.rb +1 -1
- data/spec/controllers/sufia/admin/admin_sets_controller_spec.rb +21 -6
- data/spec/controllers/sufia/admin/permission_templates_controller_spec.rb +1 -1
- data/spec/controllers/sufia/batch_uploads_controller_spec.rb +24 -2
- data/spec/factories/permission_templates.rb +1 -0
- data/spec/factories/workflows.rb +1 -1
- data/spec/forms/curation_concerns/generic_work_form_spec.rb +5 -2
- data/spec/forms/sufia/forms/batch_edit_form_spec.rb +1 -1
- data/spec/forms/sufia/forms/work_form_spec.rb +32 -19
- data/spec/javascripts/autocomplete_spec.js.coffee +12 -33
- data/spec/javascripts/helpers/test_fixtures.js.coffee +10 -1
- data/spec/javascripts/relationships_control_spec.js.coffee +27 -0
- data/spec/javascripts/save_work_spec.js +9 -6
- data/spec/javascripts/visibility_component_spec.js +17 -8
- data/spec/models/admin_set_spec.rb +69 -0
- data/spec/presenters/sufia/admin_set_options_presenter_spec.rb +73 -0
- data/spec/presenters/sufia/admin_set_presenter_spec.rb +31 -2
- data/spec/services/sufia/actor_factory_spec.rb +2 -0
- data/spec/services/sufia/admin_set_create_service_spec.rb +4 -2
- data/spec/services/sufia/admin_set_service_spec.rb +0 -72
- data/spec/services/sufia/workflow/changes_required_notification_spec.rb +1 -1
- data/spec/services/sufia/workflow/deposited_notification_spec.rb +1 -1
- data/spec/services/sufia/workflow/pending_review_notification_spec.rb +1 -1
- data/spec/views/curation_concerns/base/_find_work_widget.html.erb_spec.rb +1 -2
- data/spec/views/curation_concerns/base/_form_child_work_relationships.html.erb_spec.rb +27 -62
- data/spec/views/curation_concerns/base/_form_relationships.html.erb_spec.rb +4 -2
- data/spec/views/sufia/admin/admin_sets/_form_participants.html.erb_spec.rb +1 -1
- data/spec/views/sufia/admin/admin_sets/_form_visibility.html.erb_spec.rb +3 -1
- data/spec/views/sufia/admin/admin_sets/show.html.erb_spec.rb +59 -0
- data/sufia.gemspec +3 -2
- data/template.rb +1 -1
- metadata +34 -19
- data/app/assets/javascripts/sufia/relationships/table.es6 +0 -206
- data/app/assets/javascripts/sufia/relationships/table_row.es6 +0 -79
- data/app/views/curation_concerns/base/_form_parent_work_relationships.html.erb +0 -43
- data/app/views/records/edit_fields/_in_works_ids.html.erb +0 -59
- data/spec/javascripts/helpers/test_responses.js +0 -13
- data/spec/javascripts/relationships_table_spec.js.coffee +0 -83
- data/spec/views/curation_concerns/base/_form_parent_work_relationships.html.erb_spec.rb +0 -114
- data/spec/views/records/edit_fields/_in_works_ids.html.erb_spec.rb +0 -113
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Sufia::AdminSetOptionsPresenter do
|
4
|
+
let(:service) { instance_double(Sufia::AdminSetService) }
|
5
|
+
let(:presenter) { described_class.new(service) }
|
6
|
+
|
7
|
+
describe "#select_options" do
|
8
|
+
subject { presenter.select_options }
|
9
|
+
before do
|
10
|
+
allow(service).to receive(:search_results)
|
11
|
+
.with(:deposit)
|
12
|
+
.and_return(results)
|
13
|
+
end
|
14
|
+
|
15
|
+
context "with permission_template visibility" do
|
16
|
+
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'Public Set') }
|
17
|
+
let(:solr_doc2) { instance_double(SolrDocument, id: '345', to_s: 'Private Set') }
|
18
|
+
before do
|
19
|
+
allow(presenter).to receive(:workflow) { nil }
|
20
|
+
create(:permission_template, admin_set_id: '123', visibility: 'open')
|
21
|
+
create(:permission_template, admin_set_id: '345', visibility: 'restricted')
|
22
|
+
end
|
23
|
+
let(:results) { [solr_doc1, solr_doc2] }
|
24
|
+
|
25
|
+
it do
|
26
|
+
is_expected.to eq [['Public Set', '123', { 'data-sharing' => false, 'data-visibility' => 'open' }],
|
27
|
+
['Private Set', '345', { 'data-sharing' => false, 'data-visibility' => 'restricted' }]]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "with permission_template release_date" do
|
32
|
+
let(:today) { Time.zone.today }
|
33
|
+
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'Fixed Release Date Set') }
|
34
|
+
let(:solr_doc2) { instance_double(SolrDocument, id: '345', to_s: 'No Delay Set') }
|
35
|
+
let(:solr_doc3) { instance_double(SolrDocument, id: '567', to_s: 'One Year Max Embargo Set') }
|
36
|
+
let(:solr_doc4) { instance_double(SolrDocument, id: '789', to_s: 'Release Before Date Set') }
|
37
|
+
let(:results) { [solr_doc1, solr_doc2, solr_doc3, solr_doc4] }
|
38
|
+
|
39
|
+
before do
|
40
|
+
allow(presenter).to receive(:workflow) { nil }
|
41
|
+
create(:permission_template, admin_set_id: '123', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_FIXED, release_date: today + 2.days)
|
42
|
+
create(:permission_template, admin_set_id: '345', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_NO_DELAY)
|
43
|
+
create(:permission_template, admin_set_id: '567', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_1_YEAR)
|
44
|
+
create(:permission_template, admin_set_id: '789', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_BEFORE_DATE, release_date: today + 1.month)
|
45
|
+
end
|
46
|
+
|
47
|
+
it do
|
48
|
+
is_expected.to eq [['Fixed Release Date Set', '123', { 'data-sharing' => false, 'data-release-date' => today + 2.days }],
|
49
|
+
['No Delay Set', '345', { 'data-sharing' => false, 'data-release-date' => today }],
|
50
|
+
['One Year Max Embargo Set', '567', { 'data-sharing' => false, 'data-release-date' => today + 1.year, 'data-release-before-date' => true }],
|
51
|
+
['Release Before Date Set', '789', { 'data-sharing' => false, 'data-release-date' => today + 1.month, 'data-release-before-date' => true }]]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context "with empty permission_template" do
|
56
|
+
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'Empty Template Set') }
|
57
|
+
let(:results) { [solr_doc1] }
|
58
|
+
|
59
|
+
before do
|
60
|
+
create(:permission_template, admin_set_id: '567')
|
61
|
+
end
|
62
|
+
|
63
|
+
it { is_expected.to eq [['Empty Template Set', '123', {}]] }
|
64
|
+
end
|
65
|
+
|
66
|
+
context "with no permission_template" do
|
67
|
+
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'No Template Set') }
|
68
|
+
let(:results) { [solr_doc1] }
|
69
|
+
|
70
|
+
it { is_expected.to eq [['No Template Set', '123', {}]] }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -7,22 +7,51 @@ describe Sufia::AdminSetPresenter do
|
|
7
7
|
description: ['An example admin set.'],
|
8
8
|
title: ['Example Admin Set Title'])
|
9
9
|
end
|
10
|
-
let(:work) { build(:work, title: ['Example Work Title']
|
10
|
+
let(:work) { build(:work, title: ['Example Work Title']) }
|
11
11
|
let(:solr_document) { SolrDocument.new(admin_set.to_solr) }
|
12
12
|
let(:ability) { double }
|
13
13
|
let(:presenter) { described_class.new(solr_document, ability) }
|
14
14
|
|
15
15
|
describe "total_items" do
|
16
16
|
subject { presenter.total_items }
|
17
|
+
|
17
18
|
context "empty admin set" do
|
18
19
|
it { is_expected.to eq 0 }
|
19
20
|
end
|
21
|
+
|
20
22
|
context "admin set with work" do
|
21
23
|
before do
|
24
|
+
admin_set.members = [work]
|
22
25
|
admin_set.save!
|
23
|
-
work.save!
|
24
26
|
end
|
25
27
|
it { is_expected.to eq 1 }
|
26
28
|
end
|
27
29
|
end
|
30
|
+
|
31
|
+
describe "disable_delete?" do
|
32
|
+
subject { presenter.disable_delete? }
|
33
|
+
|
34
|
+
context "empty admin set" do
|
35
|
+
before do
|
36
|
+
admin_set.members = []
|
37
|
+
admin_set.save!
|
38
|
+
end
|
39
|
+
it { is_expected.to be false }
|
40
|
+
end
|
41
|
+
|
42
|
+
context "non-empty admin set" do
|
43
|
+
before do
|
44
|
+
admin_set.members = [work]
|
45
|
+
admin_set.save!
|
46
|
+
end
|
47
|
+
it { is_expected.to be true }
|
48
|
+
end
|
49
|
+
|
50
|
+
context "default admin set" do
|
51
|
+
let(:admin_set) do
|
52
|
+
build(:admin_set, id: AdminSet::DEFAULT_ID)
|
53
|
+
end
|
54
|
+
it { is_expected.to be true }
|
55
|
+
end
|
56
|
+
end
|
28
57
|
end
|
@@ -12,6 +12,7 @@ describe Sufia::ActorFactory, :no_clean do
|
|
12
12
|
CurationConcerns::Actors::AddToWorkActor,
|
13
13
|
CurationConcerns::Actors::AssignRepresentativeActor,
|
14
14
|
CurationConcerns::Actors::AttachFilesActor,
|
15
|
+
Sufia::Actors::AttachMembersActor,
|
15
16
|
CurationConcerns::Actors::ApplyOrderActor,
|
16
17
|
Sufia::InterpretVisibilityActor,
|
17
18
|
Sufia::DefaultAdminSetActor,
|
@@ -31,6 +32,7 @@ describe Sufia::ActorFactory, :no_clean do
|
|
31
32
|
CurationConcerns::Actors::AddToWorkActor,
|
32
33
|
CurationConcerns::Actors::AssignRepresentativeActor,
|
33
34
|
CurationConcerns::Actors::AttachFilesActor,
|
35
|
+
Sufia::Actors::AttachMembersActor,
|
34
36
|
CurationConcerns::Actors::ApplyOrderActor,
|
35
37
|
Sufia::InterpretVisibilityActor,
|
36
38
|
Sufia::DefaultAdminSetActor,
|
@@ -2,7 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
RSpec.describe Sufia::AdminSetCreateService do
|
4
4
|
let(:admin_set) { AdminSet.new(title: ['test']) }
|
5
|
-
let(:
|
5
|
+
let(:workflow_name) { AdminSet::DEFAULT_WORKFLOW_NAME }
|
6
|
+
let(:service) { described_class.new(admin_set, user, workflow_name) }
|
6
7
|
let(:user) { create(:user) }
|
7
8
|
|
8
9
|
describe "#create" do
|
@@ -30,7 +31,7 @@ RSpec.describe Sufia::AdminSetCreateService do
|
|
30
31
|
end
|
31
32
|
|
32
33
|
describe '.create_default!' do
|
33
|
-
let(:default_admin_set_id) {
|
34
|
+
let(:default_admin_set_id) { AdminSet::DEFAULT_ID }
|
34
35
|
let(:permission_template) { Sufia::PermissionTemplate.find_by!(admin_set_id: default_admin_set_id) }
|
35
36
|
# It is important to test the side-effects as a default admin set is a fundamental assumption for Sufia >= 7.3
|
36
37
|
it 'creates AdminSet, PermissionTemplate' do
|
@@ -39,6 +40,7 @@ RSpec.describe Sufia::AdminSetCreateService do
|
|
39
40
|
admin_set = AdminSet.find(default_admin_set_id)
|
40
41
|
expect(admin_set).to be_persisted
|
41
42
|
expect(permission_template).to be_persisted
|
43
|
+
expect(permission_template.workflow_name).to eq workflow_name
|
42
44
|
end
|
43
45
|
end
|
44
46
|
end
|
@@ -39,76 +39,4 @@ RSpec.describe Sufia::AdminSetService, :no_clean do
|
|
39
39
|
expect(subject).to eq [[doc1, 8], [doc2, 2], [doc3, nil]]
|
40
40
|
end
|
41
41
|
end
|
42
|
-
|
43
|
-
describe "#select_options" do
|
44
|
-
subject { service.select_options }
|
45
|
-
|
46
|
-
context "with permission_template visibility" do
|
47
|
-
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'Public Set') }
|
48
|
-
let(:solr_doc2) { instance_double(SolrDocument, id: '345', to_s: 'Private Set') }
|
49
|
-
let!(:permission_template1) { create(:permission_template, admin_set_id: '123', visibility: 'open') }
|
50
|
-
let!(:permission_template2) { create(:permission_template, admin_set_id: '345', visibility: 'restricted') }
|
51
|
-
|
52
|
-
before do
|
53
|
-
allow(service).to receive(:search_results)
|
54
|
-
.with(:read)
|
55
|
-
.and_return([solr_doc1, solr_doc2])
|
56
|
-
end
|
57
|
-
|
58
|
-
it do
|
59
|
-
is_expected.to eq [['Public Set', '123', { 'data-visibility' => 'open' }],
|
60
|
-
['Private Set', '345', { 'data-visibility' => 'restricted' }]]
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
context "with permission_template release_date" do
|
65
|
-
let(:today) { Time.zone.today }
|
66
|
-
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'Fixed Release Date Set') }
|
67
|
-
let(:solr_doc2) { instance_double(SolrDocument, id: '345', to_s: 'No Delay Set') }
|
68
|
-
let(:solr_doc3) { instance_double(SolrDocument, id: '567', to_s: 'One Year Max Embargo Set') }
|
69
|
-
let(:solr_doc4) { instance_double(SolrDocument, id: '789', to_s: 'Release Before Date Set') }
|
70
|
-
let!(:permission_template1) { create(:permission_template, admin_set_id: '123', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_FIXED, release_date: today + 2.days) }
|
71
|
-
let!(:permission_template2) { create(:permission_template, admin_set_id: '345', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_NO_DELAY) }
|
72
|
-
let!(:permission_template3) { create(:permission_template, admin_set_id: '567', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_1_YEAR) }
|
73
|
-
let!(:permission_template4) { create(:permission_template, admin_set_id: '789', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_BEFORE_DATE, release_date: today + 1.month) }
|
74
|
-
|
75
|
-
before do
|
76
|
-
allow(service).to receive(:search_results)
|
77
|
-
.with(:read)
|
78
|
-
.and_return([solr_doc1, solr_doc2, solr_doc3, solr_doc4])
|
79
|
-
end
|
80
|
-
|
81
|
-
it do
|
82
|
-
is_expected.to eq [['Fixed Release Date Set', '123', { 'data-release-date' => today + 2.days }],
|
83
|
-
['No Delay Set', '345', { 'data-release-date' => today }],
|
84
|
-
['One Year Max Embargo Set', '567', { 'data-release-date' => today + 1.year, 'data-release-before-date' => true }],
|
85
|
-
['Release Before Date Set', '789', { 'data-release-date' => today + 1.month, 'data-release-before-date' => true }]]
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
context "with empty permission_template" do
|
90
|
-
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'Empty Template Set') }
|
91
|
-
let!(:permission_template1) { create(:permission_template, admin_set_id: '567') }
|
92
|
-
|
93
|
-
before do
|
94
|
-
allow(service).to receive(:search_results)
|
95
|
-
.with(:read)
|
96
|
-
.and_return([solr_doc1])
|
97
|
-
end
|
98
|
-
|
99
|
-
it { is_expected.to eq [['Empty Template Set', '123', {}]] }
|
100
|
-
end
|
101
|
-
|
102
|
-
context "with no permission_template" do
|
103
|
-
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'No Template Set') }
|
104
|
-
|
105
|
-
before do
|
106
|
-
allow(service).to receive(:search_results)
|
107
|
-
.with(:read)
|
108
|
-
.and_return([solr_doc1])
|
109
|
-
end
|
110
|
-
|
111
|
-
it { is_expected.to eq [['No Template Set', '123', {}]] }
|
112
|
-
end
|
113
|
-
end
|
114
42
|
end
|
@@ -12,7 +12,7 @@ RSpec.describe Sufia::Workflow::ChangesRequiredNotification do
|
|
12
12
|
|
13
13
|
describe ".send_notification" do
|
14
14
|
it 'sends a message to all users' do
|
15
|
-
expect(approver).to receive(:send_message).once.and_call_original
|
15
|
+
expect(approver).to receive(:send_message).with(anything, "Test title (<a href=\"/concern/generic_works/#{work.id}\">#{work.id}</a>) requires additional changes before approval.\n\n 'A pleasant read'", anything).once.and_call_original
|
16
16
|
|
17
17
|
expect { described_class.send_notification(entity: entity, user: approver, comment: comment, recipients: recipients) }
|
18
18
|
.to change { depositor.mailbox.inbox.count }.by(1)
|
@@ -12,7 +12,7 @@ RSpec.describe Sufia::Workflow::DepositedNotification do
|
|
12
12
|
|
13
13
|
describe ".send_notification" do
|
14
14
|
it 'sends a message to all users' do
|
15
|
-
expect(approver).to receive(:send_message).once.and_call_original
|
15
|
+
expect(approver).to receive(:send_message).with(anything, "Test title (<a href=\"/concern/generic_works/#{work.id}\">#{work.id}</a>) was approved by #{approver.user_key}. A pleasant read", anything).once.and_call_original
|
16
16
|
|
17
17
|
expect { described_class.send_notification(entity: entity, user: approver, comment: comment, recipients: recipients) }
|
18
18
|
.to change { depositor.mailbox.inbox.count }.by(1)
|
@@ -11,7 +11,7 @@ RSpec.describe Sufia::Workflow::PendingReviewNotification do
|
|
11
11
|
|
12
12
|
describe ".send_notification" do
|
13
13
|
it 'sends a message to all users except depositor' do
|
14
|
-
expect(depositor).to receive(:send_message).once.and_call_original
|
14
|
+
expect(depositor).to receive(:send_message).with(anything, "Test title (<a href=\"/concern/generic_works/#{work.id}\">#{work.id}</a>) was deposited by #{depositor.user_key} and is awaiting approval A pleasant read", anything).once.and_call_original
|
15
15
|
|
16
16
|
expect { described_class.send_notification(entity: entity, user: depositor, comment: comment, recipients: recipients) }
|
17
17
|
.to change { depositor.mailbox.inbox.count }.by(1)
|
@@ -11,8 +11,7 @@ RSpec.describe 'curation_concerns/base/_find_work_widget.html.erb', type: :view
|
|
11
11
|
allow(view).to receive(:current_user).and_return(stub_model(User))
|
12
12
|
render 'curation_concerns/base/find_work_widget',
|
13
13
|
f: form,
|
14
|
-
|
15
|
-
id_type: 'ordered_member_ids',
|
14
|
+
name: 'child_work',
|
16
15
|
user_email: 'foo@bar.com',
|
17
16
|
id: '999'
|
18
17
|
end
|
@@ -1,21 +1,21 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "curation_concerns/base/_form_child_work_relationships.html.erb", type: :view do
|
3
|
+
RSpec.describe "curation_concerns/base/_form_child_work_relationships.html.erb", type: :view do
|
4
4
|
let(:work) do
|
5
5
|
stub_model(GenericWork, id: '456', title: ["MyWork"])
|
6
6
|
end
|
7
7
|
|
8
|
-
let(:work_2) do
|
9
|
-
stub_model(GenericWork, id: '567', title: ["Child Work"])
|
10
|
-
end
|
11
|
-
|
12
8
|
let(:ability) { double }
|
13
9
|
|
14
10
|
let(:form) do
|
15
11
|
Sufia::Forms::WorkForm.new(work, ability)
|
16
12
|
end
|
17
13
|
|
18
|
-
let(:f)
|
14
|
+
let(:f) do
|
15
|
+
view.simple_form_for(form, url: '/update') do |work_form|
|
16
|
+
return work_form
|
17
|
+
end
|
18
|
+
end
|
19
19
|
|
20
20
|
let(:page) do
|
21
21
|
render
|
@@ -29,84 +29,49 @@ describe "curation_concerns/base/_form_child_work_relationships.html.erb", type:
|
|
29
29
|
allow(view).to receive(:f).and_return(f)
|
30
30
|
allow(f).to receive(:object).and_return(form)
|
31
31
|
allow(controller).to receive(:current_user).and_return(stub_model(User))
|
32
|
-
stub_template '_find_work_widget.html.erb' => "<input
|
32
|
+
stub_template '_find_work_widget.html.erb' => "<input class='finder'/>"
|
33
33
|
assign(:form, form)
|
34
34
|
end
|
35
35
|
|
36
36
|
context "When editing a work" do
|
37
37
|
context "and no children works are present" do
|
38
38
|
before do
|
39
|
-
allow(
|
40
|
-
end
|
41
|
-
it "has 1 empty child work input" do
|
42
|
-
expect(page).to have_selector("input[value='']", count: 1)
|
39
|
+
allow(form).to receive(:work_members).and_return([])
|
43
40
|
end
|
44
41
|
|
45
|
-
it "
|
46
|
-
|
47
|
-
|
42
|
+
it "draws the page" do
|
43
|
+
# remove button is not present
|
44
|
+
expect(page).not_to have_selector("[data-behavior='remove-relationship']")
|
48
45
|
|
49
|
-
|
50
|
-
expect(page).to have_selector(".
|
46
|
+
# input with add button
|
47
|
+
expect(page).to have_selector("input.finder")
|
48
|
+
expect(page).to have_selector("[data-behavior='add-relationship']")
|
51
49
|
end
|
52
50
|
end
|
53
|
-
|
51
|
+
|
52
|
+
context "and child works are present" do
|
54
53
|
let(:work_2) do
|
55
54
|
stub_model(GenericWork, id: '567', title: ["Test Child Work"])
|
56
55
|
end
|
57
56
|
|
58
57
|
before do
|
59
|
-
allow(
|
60
|
-
end
|
61
|
-
it "has 1 empty child work input with add button" do
|
62
|
-
expect(page).to have_selector("input[value='']", count: 1)
|
63
|
-
expect(page).to have_selector(".btn-add-row", visible: true, count: 1)
|
58
|
+
allow(form).to receive(:work_members).and_return([work_2])
|
64
59
|
end
|
65
60
|
|
66
|
-
it "
|
67
|
-
|
68
|
-
|
61
|
+
it "draws the page" do
|
62
|
+
# input with add button
|
63
|
+
expect(page).to have_selector("input.finder")
|
64
|
+
expect(page).to have_selector("[data-behavior='add-relationship']")
|
69
65
|
|
70
|
-
|
71
|
-
expect(page).to
|
72
|
-
end
|
66
|
+
# an input box that is filled in with the child id
|
67
|
+
expect(page).to have_selector("input[value='#{work_2.id}']", visible: false)
|
73
68
|
|
74
|
-
|
75
|
-
within ".old-row" do
|
76
|
-
expect(page).to have_selector(".btn-remove-row", visible: true, count: 1)
|
77
|
-
expect(page).to have_selector(".btn-edit-row", visible: true, count: 1)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
context "When multiple child works are present" do
|
82
|
-
let(:work_2) do
|
83
|
-
stub_model(GenericWork, id: '567', title: ["Test Child Work"])
|
84
|
-
end
|
85
|
-
let(:work_3) do
|
86
|
-
stub_model(GenericWork, id: '789', title: ["Test Child Work 2"])
|
87
|
-
end
|
88
|
-
before do
|
89
|
-
allow(work).to receive(:ordered_members).and_return([work_2, work_3])
|
90
|
-
end
|
91
|
-
it "has 1 empty child work input with add button" do
|
92
|
-
expect(page).to have_selector("input[value='']", count: 1)
|
93
|
-
expect(page).to have_selector(".btn-add-row", visible: true, count: 1)
|
94
|
-
end
|
95
|
-
|
96
|
-
it "has an input box that is filled in with the child ids" do
|
97
|
-
expect(page).to have_selector("input[value='#{work_2.id}']", count: 1)
|
98
|
-
expect(page).to have_selector("input[value='#{work_3.id}']", count: 1)
|
99
|
-
end
|
100
|
-
|
101
|
-
it "generates a link for the childs first title" do
|
69
|
+
# generate a link for the child work's title
|
102
70
|
expect(page).to have_link("Test Child Work")
|
103
|
-
expect(page).to have_link("Test Child Work 2")
|
104
|
-
end
|
105
71
|
|
106
|
-
|
107
|
-
within "
|
108
|
-
expect(page).to have_selector("
|
109
|
-
expect(page).to have_selector(".btn-edit-row", visible: true, count: 2)
|
72
|
+
# a remove button
|
73
|
+
within "tr" do
|
74
|
+
expect(page).to have_selector("[data-behavior='remove-relationship']")
|
110
75
|
end
|
111
76
|
end
|
112
77
|
end
|
@@ -1,15 +1,17 @@
|
|
1
|
-
describe 'curation_concerns/base/_form_relationships.html.erb', type: :view do
|
1
|
+
RSpec.describe 'curation_concerns/base/_form_relationships.html.erb', type: :view do
|
2
2
|
let(:ability) { double }
|
3
3
|
let(:work) { GenericWork.new }
|
4
4
|
let(:form) do
|
5
5
|
CurationConcerns::GenericWorkForm.new(work, ability)
|
6
6
|
end
|
7
|
-
let(:service) { instance_double CurationConcerns::AdminSetService
|
7
|
+
let(:service) { instance_double CurationConcerns::AdminSetService }
|
8
|
+
let(:presenter) { instance_double Sufia::AdminSetOptionsPresenter, select_options: [] }
|
8
9
|
|
9
10
|
before do
|
10
11
|
allow(view).to receive(:available_collections).and_return([])
|
11
12
|
allow(view).to receive(:action_name).and_return('new')
|
12
13
|
allow(CurationConcerns::AdminSetService).to receive(:new).with(controller).and_return(service)
|
14
|
+
allow(Sufia::AdminSetOptionsPresenter).to receive(:new).with(service).and_return(presenter)
|
13
15
|
end
|
14
16
|
|
15
17
|
let(:form_template) do
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
RSpec.describe 'sufia/admin/admin_sets/_form_participants.html.erb', type: :view do
|
4
4
|
let(:admin_set) { create(:admin_set) }
|
5
|
-
let(:permission_template) {
|
5
|
+
let(:permission_template) { create(:permission_template, admin_set_id: admin_set.id) }
|
6
6
|
before do
|
7
7
|
@form = Sufia::Forms::AdminSetForm.new(admin_set, permission_template)
|
8
8
|
render
|