hyrax 2.4.1 → 2.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.
- checksums.yaml +5 -5
- data/.circleci/config.yml +139 -69
- data/.travis.yml +4 -1
- data/README.md +2 -2
- data/app/actors/hyrax/actors/transactional_request.rb +8 -8
- data/app/services/hyrax/default_middleware_stack.rb +4 -2
- data/app/views/catalog/_thumbnail_list_collection.html.erb +3 -2
- data/hyrax.gemspec +3 -6
- data/lib/hyrax/version.rb +1 -1
- data/spec/abilities/collection_ability_spec.rb +5 -5
- data/spec/abilities/permission_template_ability_spec.rb +1 -1
- data/spec/actors/hyrax/actors/collections_membership_actor_spec.rb +5 -5
- data/spec/actors/hyrax/actors/transactional_request_spec.rb +4 -2
- data/spec/controllers/catalog_controller_spec.rb +1 -1
- data/spec/controllers/hyrax/admin/collection_types_controller_spec.rb +1 -1
- data/spec/controllers/hyrax/batch_edits_controller_spec.rb +9 -9
- data/spec/controllers/hyrax/collections_controller_spec.rb +5 -5
- data/spec/controllers/hyrax/dashboard/collection_members_controller_spec.rb +16 -13
- data/spec/controllers/hyrax/dashboard/collections_controller_spec.rb +8 -8
- data/spec/controllers/hyrax/dashboard/nest_collections_controller_spec.rb +1 -1
- data/spec/controllers/hyrax/generic_works_controller_spec.rb +1 -1
- data/spec/controllers/hyrax/my/shares_controller_spec.rb +1 -1
- data/spec/features/actor_stack_spec.rb +48 -0
- data/spec/features/catalog_search_spec.rb +2 -2
- data/spec/features/collection_multi_membership_spec.rb +2 -2
- data/spec/features/collection_spec.rb +7 -7
- data/spec/features/collection_type_spec.rb +2 -2
- data/spec/features/dashboard/collection_spec.rb +15 -15
- data/spec/features/search_spec.rb +2 -2
- data/spec/features/work_show_spec.rb +5 -2
- data/spec/forms/hyrax/forms/collection_form_spec.rb +5 -5
- data/spec/forms/hyrax/forms/permission_template_form_spec.rb +1 -1
- data/spec/indexers/hyrax/collection_indexer_spec.rb +1 -1
- data/spec/jobs/characterize_job_spec.rb +1 -1
- data/spec/lib/hyrax/resource_sync/change_list_writer_spec.rb +35 -21
- data/spec/lib/hyrax/resource_sync/resource_list_writer_spec.rb +1 -1
- data/spec/models/collection_spec.rb +18 -18
- data/spec/models/concerns/hyrax/collection_nesting_spec.rb +2 -2
- data/spec/models/hyrax/collection_type_spec.rb +2 -2
- data/spec/presenters/hyrax/collection_presenter_spec.rb +11 -11
- data/spec/search_builders/hyrax/collection_member_search_builder_spec.rb +1 -1
- data/spec/search_builders/hyrax/collection_search_builder_spec.rb +1 -1
- data/spec/search_builders/hyrax/dashboard/nested_collections_search_builder_spec.rb +1 -1
- data/spec/search_builders/hyrax/work_relation_spec.rb +1 -1
- data/spec/services/hyrax/adapters/nesting_index_adapter_spec.rb +2 -2
- data/spec/services/hyrax/collections/collection_member_service_spec.rb +2 -2
- data/spec/services/hyrax/collections/migration_service_spec.rb +27 -27
- data/spec/services/hyrax/collections/nested_collection_persistence_service_spec.rb +1 -1
- data/spec/services/hyrax/collections/nested_collection_query_service_spec.rb +38 -38
- data/spec/services/hyrax/statistics/depositors/summary_spec.rb +1 -1
- data/spec/services/hyrax/statistics/works/by_resource_type_spec.rb +11 -4
- data/spec/spec_helper.rb +10 -8
- data/spec/support/selectors.rb +10 -1
- data/spec/views/catalog/_thumbnail_list_collection.html.erb_spec.rb +38 -5
- data/template.rb +3 -1
- metadata +23 -21
@@ -16,7 +16,7 @@ RSpec.describe Hyrax::Actors::CollectionsMembershipActor do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
describe 'the next actor' do
|
19
|
-
let(:collection) {
|
19
|
+
let(:collection) { build(:collection_lw, with_permission_template: true) }
|
20
20
|
let(:attributes) do
|
21
21
|
{
|
22
22
|
member_of_collections_attributes: { '0' => { id: '123' } },
|
@@ -68,7 +68,7 @@ RSpec.describe Hyrax::Actors::CollectionsMembershipActor do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
context "when work is in user's own collection and destroy is passed" do
|
71
|
-
let(:collection) {
|
71
|
+
let(:collection) { build(:collection_lw, user: user, title: ['A good title'], with_permission_template: true) }
|
72
72
|
let(:attributes) do
|
73
73
|
{ member_of_collections_attributes: { '0' => { id: collection.id, _destroy: 'true' } } }
|
74
74
|
end
|
@@ -86,7 +86,7 @@ RSpec.describe Hyrax::Actors::CollectionsMembershipActor do
|
|
86
86
|
|
87
87
|
context "when work is in another user's collection" do
|
88
88
|
let(:other_user) { create(:user) }
|
89
|
-
let(:other_collection) {
|
89
|
+
let(:other_collection) { build(:collection_lw, user: other_user, title: ['A good title'], with_permission_template: true) }
|
90
90
|
|
91
91
|
before do
|
92
92
|
curation_concern.member_of_collections = [other_collection]
|
@@ -172,7 +172,7 @@ RSpec.describe Hyrax::Actors::CollectionsMembershipActor do
|
|
172
172
|
|
173
173
|
context "updates env" do
|
174
174
|
let!(:collection_type) { create(:collection_type) }
|
175
|
-
let!(:collection) { create(:
|
175
|
+
let!(:collection) { create(:collection_lw, collection_type_gid: collection_type.gid, with_permission_template: true) }
|
176
176
|
|
177
177
|
subject(:middleware) do
|
178
178
|
stack = ActionDispatch::MiddlewareStack.new.tap do |middleware|
|
@@ -205,7 +205,7 @@ RSpec.describe Hyrax::Actors::CollectionsMembershipActor do
|
|
205
205
|
end
|
206
206
|
|
207
207
|
context "when more than one collection" do
|
208
|
-
let(:collection2) { create(:
|
208
|
+
let(:collection2) { create(:collection_lw, with_permission_template: true) }
|
209
209
|
let(:attributes) do
|
210
210
|
{
|
211
211
|
member_of_collections_attributes: {
|
@@ -35,10 +35,12 @@ RSpec.describe Hyrax::Actors::TransactionalRequest do
|
|
35
35
|
|
36
36
|
subject { middleware.create(env) }
|
37
37
|
|
38
|
-
|
38
|
+
# Note that this test changed behavior with the
|
39
|
+
# backport of https://github.com/samvera/hyrax/pull/3482
|
40
|
+
it "does NOT roll back any database changes" do
|
39
41
|
expect do
|
40
42
|
expect { subject }.to raise_error 'boom'
|
41
|
-
end.
|
43
|
+
end.to change { User.count } # Note the above good actor creates a user
|
42
44
|
end
|
43
45
|
end
|
44
46
|
end
|
@@ -39,7 +39,7 @@ RSpec.describe CatalogController, type: :controller do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
context 'with collections' do
|
42
|
-
let(:collection) { create(:
|
42
|
+
let(:collection) { create(:public_collection_lw, keyword: ['rocks']) }
|
43
43
|
let(:objects) { [collection, rocks, clouds] }
|
44
44
|
|
45
45
|
it 'finds collections' do
|
@@ -306,7 +306,7 @@ RSpec.describe Hyrax::Admin::CollectionTypesController, type: :controller, clean
|
|
306
306
|
end
|
307
307
|
|
308
308
|
context "when collections exist of this type" do
|
309
|
-
let!(:collection) { create(:
|
309
|
+
let!(:collection) { create(:collection_lw, collection_type_gid: collection_type_to_destroy.gid) }
|
310
310
|
|
311
311
|
it "doesn't delete the collection type or collection" do
|
312
312
|
delete :destroy, params: { id: collection_type_to_destroy }
|
@@ -174,15 +174,15 @@ RSpec.describe Hyrax::BatchEditsController, type: :controller do
|
|
174
174
|
let(:user) { create(:user) }
|
175
175
|
|
176
176
|
let(:collection1) do
|
177
|
-
create(:
|
178
|
-
|
179
|
-
|
177
|
+
create(:public_collection_lw, title: ["My First Collection"],
|
178
|
+
description: ["My incredibly detailed description of the collection"],
|
179
|
+
user: user)
|
180
180
|
end
|
181
181
|
|
182
182
|
let(:collection2) do
|
183
|
-
create(:
|
184
|
-
|
185
|
-
|
183
|
+
create(:public_collection_lw, title: ["My Other Collection"],
|
184
|
+
description: ["My incredibly detailed description of the other collection"],
|
185
|
+
user: user)
|
186
186
|
end
|
187
187
|
|
188
188
|
let!(:work1) { create(:work, title: ["First of the Assets"], member_of_collections: [collection1], user: user) }
|
@@ -204,9 +204,9 @@ RSpec.describe Hyrax::BatchEditsController, type: :controller do
|
|
204
204
|
let(:user2) { create(:user) }
|
205
205
|
|
206
206
|
let(:collection3) do
|
207
|
-
create(:
|
208
|
-
|
209
|
-
|
207
|
+
create(:public_collection_lw, title: ["User2's Collection"],
|
208
|
+
description: ["Collection created by user2"],
|
209
|
+
user: user2)
|
210
210
|
end
|
211
211
|
|
212
212
|
before do
|
@@ -4,16 +4,16 @@ RSpec.describe Hyrax::CollectionsController do
|
|
4
4
|
let(:other) { build(:user) }
|
5
5
|
|
6
6
|
let(:collection) do
|
7
|
-
create(:
|
8
|
-
|
9
|
-
|
7
|
+
create(:public_collection_lw, title: ["My collection"],
|
8
|
+
description: ["My incredibly detailed description of the collection"],
|
9
|
+
user: user)
|
10
10
|
end
|
11
11
|
|
12
12
|
let(:asset1) { create(:work, title: ["First of the Assets"], user: user) }
|
13
13
|
let(:asset2) { create(:work, title: ["Second of the Assets"], user: user) }
|
14
14
|
let(:asset3) { create(:work, title: ["Third of the Assets"], user: user) }
|
15
|
-
let(:asset4) {
|
16
|
-
let(:asset5) {
|
15
|
+
let(:asset4) { build(:collection_lw, title: ["First subcollection"], user: user) }
|
16
|
+
let(:asset5) { build(:collection_lw, title: ["Second subcollection"], user: user) }
|
17
17
|
let(:unowned_asset) { create(:work, user: other) }
|
18
18
|
|
19
19
|
let(:collection_attrs) do
|
@@ -10,20 +10,23 @@ RSpec.describe Hyrax::Dashboard::CollectionMembersController, :clean_repo do
|
|
10
10
|
let(:work_5_read) { create(:work, id: 'work-5-read', title: ["Other's work with read access"], user: other, read_users: [user]) }
|
11
11
|
let(:work_6_noaccess) { create(:work, id: 'work-6-no_access', title: ["Other's work with no access"], user: other) }
|
12
12
|
|
13
|
-
let(:coll_1_own) { create(:
|
13
|
+
let(:coll_1_own) { create(:private_collection_lw, id: 'col-1-own', title: ['User created'], user: user, with_permission_template: true) }
|
14
14
|
let(:coll_2_mgr) do
|
15
|
-
create(:
|
16
|
-
|
15
|
+
create(:private_collection_lw, id: 'col-2-mgr', title: ['User has manage access'], user: other,
|
16
|
+
with_permission_template: { manage_users: [user] })
|
17
17
|
end
|
18
18
|
let(:coll_3_dep) do
|
19
|
-
create(:
|
20
|
-
|
19
|
+
create(:private_collection_lw, id: 'col-3-dep', title: ['User has deposit access'], user: other,
|
20
|
+
with_permission_template: { deposit_users: [user] })
|
21
21
|
end
|
22
22
|
let(:coll_4_view) do
|
23
|
-
create(:
|
24
|
-
|
23
|
+
create(:private_collection_lw, id: 'col-4-dep', title: ['User has view access'], user: other,
|
24
|
+
with_permission_template: { view_users: [user] })
|
25
|
+
end
|
26
|
+
let(:coll_5_noaccess) do
|
27
|
+
create(:private_collection_lw, id: 'col-5-no_access', title: ['Other user created'],
|
28
|
+
user: other, with_permission_template: true)
|
25
29
|
end
|
26
|
-
let(:coll_5_noaccess) { create(:private_collection, id: 'col-5-no_access', title: ['Other user created'], user: other, create_access: true) }
|
27
30
|
|
28
31
|
describe '#update_members' do
|
29
32
|
context 'when user created the collection' do
|
@@ -95,7 +98,7 @@ RSpec.describe Hyrax::Dashboard::CollectionMembersController, :clean_repo do
|
|
95
98
|
end
|
96
99
|
|
97
100
|
context 'and user adds a subcollection' do
|
98
|
-
let(:parent_collection) { create(:
|
101
|
+
let(:parent_collection) { create(:private_collection_lw, id: 'pcol', title: ['User created another'], user: user, with_permission_template: true) }
|
99
102
|
|
100
103
|
it 'adds collection user created' do
|
101
104
|
expect do
|
@@ -209,8 +212,8 @@ RSpec.describe Hyrax::Dashboard::CollectionMembersController, :clean_repo do
|
|
209
212
|
|
210
213
|
context 'and user adds a subcollection' do
|
211
214
|
let(:parent_collection) do
|
212
|
-
create(:
|
213
|
-
|
215
|
+
create(:private_collection_lw, id: 'pcol-mgr', title: ['User has manage access to another'], user: other,
|
216
|
+
with_permission_template: { manage_users: [user] })
|
214
217
|
end
|
215
218
|
|
216
219
|
it 'adds collection user created' do
|
@@ -325,8 +328,8 @@ RSpec.describe Hyrax::Dashboard::CollectionMembersController, :clean_repo do
|
|
325
328
|
|
326
329
|
context 'and user adds a subcollection' do
|
327
330
|
let(:parent_collection) do
|
328
|
-
create(:
|
329
|
-
|
331
|
+
create(:private_collection_lw, id: 'pcol-dep', title: ['User has deposit access to another'], user: other,
|
332
|
+
with_permission_template: { deposit_users: [user] })
|
330
333
|
end
|
331
334
|
|
332
335
|
it 'adds collection user created' do
|
@@ -5,16 +5,16 @@ RSpec.describe Hyrax::Dashboard::CollectionsController, :clean_repo do
|
|
5
5
|
let(:collection_type_gid) { create(:user_collection_type).gid }
|
6
6
|
|
7
7
|
let(:collection) do
|
8
|
-
create(:
|
9
|
-
|
10
|
-
|
8
|
+
create(:public_collection_lw, title: ["My collection"],
|
9
|
+
description: ["My incredibly detailed description of the collection"],
|
10
|
+
user: user)
|
11
11
|
end
|
12
12
|
|
13
13
|
let(:asset1) { create(:work, title: ["First of the Assets"], user: user) }
|
14
14
|
let(:asset2) { create(:work, title: ["Second of the Assets"], user: user) }
|
15
15
|
let(:asset3) { create(:work, title: ["Third of the Assets"], user: user) }
|
16
|
-
let(:asset4) {
|
17
|
-
let(:asset5) {
|
16
|
+
let(:asset4) { build(:collection_lw, title: ["First subcollection"], user: user) }
|
17
|
+
let(:asset5) { build(:collection_lw, title: ["Second subcollection"], user: user) }
|
18
18
|
let(:unowned_asset) { create(:work, user: other) }
|
19
19
|
|
20
20
|
let(:collection_attrs) do
|
@@ -112,7 +112,7 @@ RSpec.describe Hyrax::Dashboard::CollectionsController, :clean_repo do
|
|
112
112
|
end
|
113
113
|
|
114
114
|
context "when params includes parent_id" do
|
115
|
-
let(:parent_collection) { create(:
|
115
|
+
let(:parent_collection) { create(:collection_lw, title: ['Parent']) }
|
116
116
|
|
117
117
|
it "creates a collection as a subcollection of parent" do
|
118
118
|
parent_collection
|
@@ -189,7 +189,7 @@ RSpec.describe Hyrax::Dashboard::CollectionsController, :clean_repo do
|
|
189
189
|
let(:asset1) { create(:generic_work, user: user) }
|
190
190
|
let(:asset2) { create(:generic_work, user: user) }
|
191
191
|
let(:asset3) { create(:generic_work, user: user) }
|
192
|
-
let(:collection2) { create(:
|
192
|
+
let(:collection2) { create(:collection_lw, title: ['Some Collection'], user: user) }
|
193
193
|
|
194
194
|
before do
|
195
195
|
[asset1, asset2, asset3].each do |asset|
|
@@ -233,7 +233,7 @@ RSpec.describe Hyrax::Dashboard::CollectionsController, :clean_repo do
|
|
233
233
|
end
|
234
234
|
|
235
235
|
context "when update fails" do
|
236
|
-
let(:collection) {
|
236
|
+
let(:collection) { build(:collection_lw, id: '12345') }
|
237
237
|
let(:repository) { instance_double(Blacklight::Solr::Repository, search: result) }
|
238
238
|
let(:result) { double(documents: [], total: 0) }
|
239
239
|
|
@@ -2,7 +2,7 @@ RSpec.describe Hyrax::Dashboard::NestCollectionsController do
|
|
2
2
|
routes { Hyrax::Engine.routes }
|
3
3
|
let(:child_id) { 'child1' }
|
4
4
|
let(:child) { instance_double(Collection, title: ["Awesome Child"]) }
|
5
|
-
let(:parent) { create(:
|
5
|
+
let(:parent) { create(:collection_lw, id: 'parent1', collection_type_settings: :nestable, title: ["Uncool Parent"]) }
|
6
6
|
|
7
7
|
describe '#blacklight_config' do
|
8
8
|
subject { controller.blacklight_config }
|
@@ -534,7 +534,7 @@ RSpec.describe Hyrax::GenericWorksController do
|
|
534
534
|
|
535
535
|
describe '#destroy' do
|
536
536
|
let(:work_to_be_deleted) { create(:private_generic_work, user: user) }
|
537
|
-
let(:parent_collection) {
|
537
|
+
let(:parent_collection) { build(:collection_lw) }
|
538
538
|
|
539
539
|
it 'deletes the work' do
|
540
540
|
delete :destroy, params: { id: work_to_be_deleted }
|
@@ -15,7 +15,7 @@ RSpec.describe Hyrax::My::SharesController, type: :controller do
|
|
15
15
|
let!(:shared_with_me) { create(:work, user: other_user, edit_users: [user, other_user]) }
|
16
16
|
let!(:read_shared_with_me) { create(:work, user: other_user, read_users: [user, other_user]) }
|
17
17
|
let!(:shared_with_someone_else) { create(:work, user: other_user, edit_users: [someone_else, other_user]) }
|
18
|
-
let!(:my_collection) { create(:
|
18
|
+
let!(:my_collection) { create(:public_collection_lw, user: user) }
|
19
19
|
|
20
20
|
it "responds with success" do
|
21
21
|
get :index
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
# Integration tests for the full midddleware stack
|
4
|
+
RSpec.describe Hyrax::DefaultMiddlewareStack, :clean_repo do
|
5
|
+
subject(:actor) { stack.build(Hyrax::Actors::Terminator.new) }
|
6
|
+
let(:ability) { ::Ability.new(user) }
|
7
|
+
let(:attributes) { {} }
|
8
|
+
let(:stack) { described_class.build_stack }
|
9
|
+
let(:terminator) { Hyrax::Actors::Terminator.new }
|
10
|
+
let(:user) { FactoryBot.create(:user) }
|
11
|
+
let(:work) { FactoryBot.build(:work) }
|
12
|
+
let(:env) { Hyrax::Actors::Environment.new(work, ability, attributes) }
|
13
|
+
|
14
|
+
let(:delayed_failure_actor) do
|
15
|
+
Class.new(Hyrax::Actors::AbstractActor) do
|
16
|
+
def create(env)
|
17
|
+
next_actor.create(env) && raise('ALWAYS RAISE')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#create' do
|
23
|
+
it 'persists the work' do
|
24
|
+
expect { actor.create(env) }
|
25
|
+
.to change { work.persisted? }
|
26
|
+
.to true
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'when failing on the way back up the actor stack' do
|
30
|
+
before { stack.insert_before(Hyrax::Actors::ModelActor, delayed_failure_actor) }
|
31
|
+
|
32
|
+
before(:context) do
|
33
|
+
Hyrax.config.enable_noids = true
|
34
|
+
# we need to mint once to set the `rand` database column and
|
35
|
+
# make minter behavior predictable
|
36
|
+
::Noid::Rails.config.minter_class.new.mint
|
37
|
+
end
|
38
|
+
|
39
|
+
after(:context) { Hyrax.config.enable_noids = false }
|
40
|
+
|
41
|
+
it 'leaves a valid minter state', :aggregate_failures do
|
42
|
+
expect { actor.create(env) }.to raise_error 'ALWAYS RAISE'
|
43
|
+
|
44
|
+
expect(GenericWork.new.assign_id).not_to eq work.id
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -14,7 +14,7 @@ RSpec.describe 'catalog searching', type: :feature do
|
|
14
14
|
create(:public_work, title: ["Jack's Research"], keyword: ['jacks_keyword', 'shared_keyword'])
|
15
15
|
end
|
16
16
|
|
17
|
-
let!(:collection) { create(:
|
17
|
+
let!(:collection) { create(:public_collection_lw, keyword: ['collection_keyword', 'shared_keyword']) }
|
18
18
|
|
19
19
|
it 'performing a search' do
|
20
20
|
within('#search-form-header') do
|
@@ -30,7 +30,7 @@ RSpec.describe 'catalog searching', type: :feature do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
context 'with public works and private collections', clean_repo: true do
|
33
|
-
let!(:collection) {
|
33
|
+
let!(:collection) { build(:private_collection_lw) }
|
34
34
|
|
35
35
|
let!(:jills_work) do
|
36
36
|
create(:public_work, title: ["Jill's Research"], keyword: ['jills_keyword'], member_of_collections: [collection])
|
@@ -11,7 +11,7 @@ RSpec.describe 'Adding a work to multiple collections', type: :feature, clean_re
|
|
11
11
|
end
|
12
12
|
|
13
13
|
describe 'when both collections support multiple membership' do
|
14
|
-
let(:old_collection) {
|
14
|
+
let(:old_collection) { build(:collection_lw, user: admin_user, collection_type_gid: multi_membership_type_1.gid, title: ['OldCollectionTitle']) }
|
15
15
|
let!(:work) { create(:generic_work, user: admin_user, member_of_collections: [old_collection], title: ['The highly valued work that everyone wants in their collection']) }
|
16
16
|
|
17
17
|
context 'and are of different types' do
|
@@ -56,7 +56,7 @@ RSpec.describe 'Adding a work to multiple collections', type: :feature, clean_re
|
|
56
56
|
end
|
57
57
|
|
58
58
|
describe 'when both collections require single membership' do
|
59
|
-
let(:old_collection) {
|
59
|
+
let(:old_collection) { build(:collection_lw, user: admin_user, collection_type_gid: single_membership_type_1.gid, title: ['OldCollectionTitle']) }
|
60
60
|
let!(:work) do
|
61
61
|
create(:generic_work,
|
62
62
|
user: admin_user,
|
@@ -1,17 +1,17 @@
|
|
1
1
|
RSpec.describe 'collection', type: :feature, clean_repo: true do
|
2
2
|
let(:user) { create(:user) }
|
3
3
|
|
4
|
-
let(:collection1) { create(:
|
5
|
-
let(:collection2) { create(:
|
4
|
+
let(:collection1) { create(:public_collection_lw, user: user) }
|
5
|
+
let(:collection2) { create(:public_collection_lw, user: user) }
|
6
6
|
|
7
7
|
describe 'collection show page' do
|
8
8
|
let(:collection) do
|
9
|
-
create(:
|
9
|
+
create(:public_collection_lw, user: user, description: ['collection description'], collection_type_settings: :nestable)
|
10
10
|
end
|
11
11
|
let!(:work1) { create(:work, title: ["King Louie"], member_of_collections: [collection], user: user) }
|
12
12
|
let!(:work2) { create(:work, title: ["King Kong"], member_of_collections: [collection], user: user) }
|
13
|
-
let!(:col1) { create(:
|
14
|
-
let!(:col2) { create(:
|
13
|
+
let!(:col1) { create(:public_collection_lw, title: ["Sub-collection 1"], member_of_collections: [collection], user: user) }
|
14
|
+
let!(:col2) { create(:public_collection_lw, title: ["Sub-collection 2"], member_of_collections: [collection], user: user) }
|
15
15
|
|
16
16
|
before do
|
17
17
|
sign_in user
|
@@ -90,7 +90,7 @@ RSpec.describe 'collection', type: :feature, clean_repo: true do
|
|
90
90
|
|
91
91
|
sign_in user
|
92
92
|
end
|
93
|
-
let(:collection) { create(:
|
93
|
+
let(:collection) { create(:named_collection_lw, user: user) }
|
94
94
|
|
95
95
|
it "shows a collection with a listing of Descriptive Metadata and catalog-style search results" do
|
96
96
|
visit "/collections/#{collection.id}"
|
@@ -112,7 +112,7 @@ RSpec.describe 'collection', type: :feature, clean_repo: true do
|
|
112
112
|
|
113
113
|
sign_in user
|
114
114
|
end
|
115
|
-
let(:collection) { create(:
|
115
|
+
let(:collection) { create(:named_collection_lw, user: user) }
|
116
116
|
|
117
117
|
it "shows a collection with a listing of Descriptive Metadata and catalog-style search results" do
|
118
118
|
visit "/collections/#{collection.id}"
|
@@ -292,7 +292,7 @@ RSpec.describe 'collection_type', type: :feature, clean_repo: true do
|
|
292
292
|
end
|
293
293
|
|
294
294
|
context 'when collections exist of this type' do
|
295
|
-
let!(:collection1) { create(:
|
295
|
+
let!(:collection1) { create(:public_collection_lw, user: build(:user), collection_type_gid: exhibit_collection_type.gid) }
|
296
296
|
|
297
297
|
before do
|
298
298
|
exhibit_collection_type
|
@@ -352,7 +352,7 @@ RSpec.describe 'collection_type', type: :feature, clean_repo: true do
|
|
352
352
|
|
353
353
|
context 'when collections exist of this type' do
|
354
354
|
let!(:not_empty_collection_type) { create(:collection_type, title: 'Not Empty Type', creator_user: admin_user) }
|
355
|
-
let!(:collection1) { create(:
|
355
|
+
let!(:collection1) { create(:public_collection_lw, user: admin_user, collection_type_gid: not_empty_collection_type.gid) }
|
356
356
|
let(:deny_delete_modal_text) do
|
357
357
|
'You cannot delete this collection type because one or more collections of this type have already been created. ' \
|
358
358
|
'To delete this collection type, first ensure that all collections of this type have been deleted.'
|
@@ -11,10 +11,10 @@ RSpec.describe 'collection', type: :feature, clean_repo: true do
|
|
11
11
|
# Setting Title on admin sets to avoid false positive matches with collections.
|
12
12
|
let(:admin_set_a) { create(:admin_set, creator: [admin_user.user_key], title: ['Set A'], with_permission_template: true) }
|
13
13
|
let(:admin_set_b) { create(:admin_set, creator: [user.user_key], title: ['Set B'], edit_users: [user.user_key], with_permission_template: true) }
|
14
|
-
let(:collection1) { create(:
|
15
|
-
let(:collection2) { create(:
|
16
|
-
let(:collection3) { create(:
|
17
|
-
let(:collection4) { create(:
|
14
|
+
let(:collection1) { create(:public_collection_lw, user: user, collection_type_gid: collection_type.gid, with_permission_template: true) }
|
15
|
+
let(:collection2) { create(:public_collection_lw, user: user, collection_type_gid: collection_type.gid, with_permission_template: true) }
|
16
|
+
let(:collection3) { create(:public_collection_lw, user: admin_user, collection_type_gid: collection_type.gid, with_permission_template: true) }
|
17
|
+
let(:collection4) { create(:public_collection_lw, user: admin_user, collection_type_gid: user_collection_type.gid, with_permission_template: true) }
|
18
18
|
|
19
19
|
describe 'Your Collections tab' do
|
20
20
|
context 'when non-admin user' do
|
@@ -328,8 +328,8 @@ RSpec.describe 'collection', type: :feature, clean_repo: true do
|
|
328
328
|
end
|
329
329
|
|
330
330
|
describe 'delete collection' do
|
331
|
-
let!(:empty_collection) { create(:
|
332
|
-
let!(:collection) { create(:
|
331
|
+
let!(:empty_collection) { create(:public_collection_lw, title: ['Empty Collection'], user: user, with_permission_template: true) }
|
332
|
+
let!(:collection) { create(:public_collection_lw, title: ['Collection with Work'], user: user, with_permission_template: true) }
|
333
333
|
let!(:admin_user) { create(:admin) }
|
334
334
|
let!(:empty_adminset) { create(:admin_set, title: ['Empty Admin Set'], creator: [admin_user.user_key], with_permission_template: true) }
|
335
335
|
let!(:adminset) { create(:admin_set, title: ['Admin Set with Work'], creator: [admin_user.user_key], with_permission_template: true) }
|
@@ -564,7 +564,7 @@ RSpec.describe 'collection', type: :feature, clean_repo: true do
|
|
564
564
|
|
565
565
|
describe 'collection show page' do
|
566
566
|
let(:collection) do
|
567
|
-
|
567
|
+
build(:public_collection_lw, user: user, description: ['collection description'], with_permission_template: true)
|
568
568
|
end
|
569
569
|
let!(:work1) { create(:work, title: ["King Louie"], member_of_collections: [collection], user: user) }
|
570
570
|
let!(:work2) { create(:work, title: ["King Kong"], member_of_collections: [collection], user: user) }
|
@@ -707,7 +707,7 @@ RSpec.describe 'collection', type: :feature, clean_repo: true do
|
|
707
707
|
|
708
708
|
sign_in user
|
709
709
|
end
|
710
|
-
let(:collection) { create(:
|
710
|
+
let(:collection) { create(:named_collection_lw, user: user, with_permission_template: true) }
|
711
711
|
|
712
712
|
it "shows a collection with a listing of Descriptive Metadata and catalog-style search results" do
|
713
713
|
visit '/dashboard/my/collections'
|
@@ -762,7 +762,7 @@ RSpec.describe 'collection', type: :feature, clean_repo: true do
|
|
762
762
|
end
|
763
763
|
|
764
764
|
describe 'edit collection' do
|
765
|
-
let(:collection) {
|
765
|
+
let(:collection) { build(:named_collection_lw, user: user, with_permission_template: true) }
|
766
766
|
let!(:work1) { create(:work, title: ["King Louie"], member_of_collections: [collection], user: user) }
|
767
767
|
let!(:work2) { create(:work, title: ["King Kong"], member_of_collections: [collection], user: user) }
|
768
768
|
|
@@ -856,8 +856,8 @@ RSpec.describe 'collection', type: :feature, clean_repo: true do
|
|
856
856
|
end
|
857
857
|
|
858
858
|
context 'with brandable set' do
|
859
|
-
let(:brandable_collection_id) { create(:
|
860
|
-
let(:not_brandable_collection_id) { create(:
|
859
|
+
let(:brandable_collection_id) { create(:collection_lw, user: user, collection_type_settings: [:brandable], with_permission_template: true).id }
|
860
|
+
let(:not_brandable_collection_id) { create(:collection_lw, user: user, collection_type_settings: [:not_brandable], with_permission_template: true).id }
|
861
861
|
|
862
862
|
it 'to true, it shows Branding tab' do
|
863
863
|
visit "/dashboard/collections/#{brandable_collection_id}/edit"
|
@@ -871,8 +871,8 @@ RSpec.describe 'collection', type: :feature, clean_repo: true do
|
|
871
871
|
end
|
872
872
|
|
873
873
|
context 'with discoverable set' do
|
874
|
-
let(:discoverable_collection_id) { create(:
|
875
|
-
let(:not_discoverable_collection_id) { create(:
|
874
|
+
let(:discoverable_collection_id) { create(:collection_lw, user: user, collection_type_settings: [:discoverable], with_permission_template: true).id }
|
875
|
+
let(:not_discoverable_collection_id) { create(:collection_lw, user: user, collection_type_settings: [:not_discoverable], with_permission_template: true).id }
|
876
876
|
|
877
877
|
it 'to true, it shows Discovery tab' do
|
878
878
|
visit "/dashboard/collections/#{discoverable_collection_id}/edit"
|
@@ -886,8 +886,8 @@ RSpec.describe 'collection', type: :feature, clean_repo: true do
|
|
886
886
|
end
|
887
887
|
|
888
888
|
context 'with sharable set' do
|
889
|
-
let(:sharable_collection_id) { create(:
|
890
|
-
let(:not_sharable_collection_id) { create(:
|
889
|
+
let(:sharable_collection_id) { create(:collection_lw, user: user, collection_type_settings: [:sharable], with_permission_template: true).id }
|
890
|
+
let(:not_sharable_collection_id) { create(:collection_lw, user: user, collection_type_settings: [:not_sharable], with_permission_template: true).id }
|
891
891
|
|
892
892
|
it 'to true, it shows Sharable tab' do
|
893
893
|
visit "/dashboard/collections/#{sharable_collection_id}/edit"
|