hyrax 2.4.1 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +139 -69
  3. data/.travis.yml +4 -1
  4. data/README.md +2 -2
  5. data/app/actors/hyrax/actors/transactional_request.rb +8 -8
  6. data/app/services/hyrax/default_middleware_stack.rb +4 -2
  7. data/app/views/catalog/_thumbnail_list_collection.html.erb +3 -2
  8. data/hyrax.gemspec +3 -6
  9. data/lib/hyrax/version.rb +1 -1
  10. data/spec/abilities/collection_ability_spec.rb +5 -5
  11. data/spec/abilities/permission_template_ability_spec.rb +1 -1
  12. data/spec/actors/hyrax/actors/collections_membership_actor_spec.rb +5 -5
  13. data/spec/actors/hyrax/actors/transactional_request_spec.rb +4 -2
  14. data/spec/controllers/catalog_controller_spec.rb +1 -1
  15. data/spec/controllers/hyrax/admin/collection_types_controller_spec.rb +1 -1
  16. data/spec/controllers/hyrax/batch_edits_controller_spec.rb +9 -9
  17. data/spec/controllers/hyrax/collections_controller_spec.rb +5 -5
  18. data/spec/controllers/hyrax/dashboard/collection_members_controller_spec.rb +16 -13
  19. data/spec/controllers/hyrax/dashboard/collections_controller_spec.rb +8 -8
  20. data/spec/controllers/hyrax/dashboard/nest_collections_controller_spec.rb +1 -1
  21. data/spec/controllers/hyrax/generic_works_controller_spec.rb +1 -1
  22. data/spec/controllers/hyrax/my/shares_controller_spec.rb +1 -1
  23. data/spec/features/actor_stack_spec.rb +48 -0
  24. data/spec/features/catalog_search_spec.rb +2 -2
  25. data/spec/features/collection_multi_membership_spec.rb +2 -2
  26. data/spec/features/collection_spec.rb +7 -7
  27. data/spec/features/collection_type_spec.rb +2 -2
  28. data/spec/features/dashboard/collection_spec.rb +15 -15
  29. data/spec/features/search_spec.rb +2 -2
  30. data/spec/features/work_show_spec.rb +5 -2
  31. data/spec/forms/hyrax/forms/collection_form_spec.rb +5 -5
  32. data/spec/forms/hyrax/forms/permission_template_form_spec.rb +1 -1
  33. data/spec/indexers/hyrax/collection_indexer_spec.rb +1 -1
  34. data/spec/jobs/characterize_job_spec.rb +1 -1
  35. data/spec/lib/hyrax/resource_sync/change_list_writer_spec.rb +35 -21
  36. data/spec/lib/hyrax/resource_sync/resource_list_writer_spec.rb +1 -1
  37. data/spec/models/collection_spec.rb +18 -18
  38. data/spec/models/concerns/hyrax/collection_nesting_spec.rb +2 -2
  39. data/spec/models/hyrax/collection_type_spec.rb +2 -2
  40. data/spec/presenters/hyrax/collection_presenter_spec.rb +11 -11
  41. data/spec/search_builders/hyrax/collection_member_search_builder_spec.rb +1 -1
  42. data/spec/search_builders/hyrax/collection_search_builder_spec.rb +1 -1
  43. data/spec/search_builders/hyrax/dashboard/nested_collections_search_builder_spec.rb +1 -1
  44. data/spec/search_builders/hyrax/work_relation_spec.rb +1 -1
  45. data/spec/services/hyrax/adapters/nesting_index_adapter_spec.rb +2 -2
  46. data/spec/services/hyrax/collections/collection_member_service_spec.rb +2 -2
  47. data/spec/services/hyrax/collections/migration_service_spec.rb +27 -27
  48. data/spec/services/hyrax/collections/nested_collection_persistence_service_spec.rb +1 -1
  49. data/spec/services/hyrax/collections/nested_collection_query_service_spec.rb +38 -38
  50. data/spec/services/hyrax/statistics/depositors/summary_spec.rb +1 -1
  51. data/spec/services/hyrax/statistics/works/by_resource_type_spec.rb +11 -4
  52. data/spec/spec_helper.rb +10 -8
  53. data/spec/support/selectors.rb +10 -1
  54. data/spec/views/catalog/_thumbnail_list_collection.html.erb_spec.rb +38 -5
  55. data/template.rb +3 -1
  56. metadata +23 -21
@@ -61,7 +61,7 @@ RSpec.describe Hyrax::Dashboard::NestedCollectionsSearchBuilder do
61
61
 
62
62
  context 'when access is :deposit' do
63
63
  let(:access) { "deposit" }
64
- let!(:collection) { create(:collection, with_permission_template: attributes) }
64
+ let!(:collection) { create(:collection_lw, with_permission_template: attributes) }
65
65
 
66
66
  context 'and user has access' do
67
67
  let(:attributes) { { deposit_users: [user.user_key] } }
@@ -1,7 +1,7 @@
1
1
  RSpec.describe Hyrax::WorkRelation, :clean_repo do
2
2
  let!(:work) { create(:generic_work) }
3
3
  let!(:file_set) { create(:file_set) }
4
- let!(:collection) { create(:collection) }
4
+ let!(:collection) { build(:collection_lw) }
5
5
 
6
6
  it 'has works and not collections or file sets' do
7
7
  expect(subject).to eq [work]
@@ -64,8 +64,8 @@ RSpec.describe Hyrax::Adapters::NestingIndexAdapter do
64
64
  end
65
65
 
66
66
  describe '.each_perservation_document_id_and_parent_ids', clean_repo: true do
67
- let!(:nested_parent) { create(:collection, member_of_collections: []) }
68
- let!(:nested_with_parent) { create(:collection, member_of_collections: [nested_parent]) }
67
+ let!(:nested_parent) { build(:collection_lw, member_of_collections: []) }
68
+ let!(:nested_with_parent) { create(:collection_lw, member_of_collections: [nested_parent]) }
69
69
  let!(:work) { create(:generic_work) }
70
70
  let(:count_of_items) { ActiveFedora::Base.descendant_uris(ActiveFedora.fedora.base_uri, exclude_uri: true).count }
71
71
 
@@ -2,9 +2,9 @@ RSpec.describe Hyrax::Collections::CollectionMemberService, clean_repo: true do
2
2
  let(:blacklight_config) { CatalogController.blacklight_config }
3
3
  let(:repository) { Blacklight::Solr::Repository.new(blacklight_config) }
4
4
  let(:current_ability) { instance_double(Ability, admin?: true) }
5
- let!(:nestable_collection) { create(:public_collection, collection_type_settings: [:nestable]) }
5
+ let!(:nestable_collection) { create(:public_collection_lw, collection_type_settings: [:nestable]) }
6
6
  let(:scope) { double('Scope', current_ability: current_ability, repository: repository, blacklight_config: blacklight_config, collection: nestable_collection) }
7
- let!(:subcollection) { create(:public_collection, member_of_collections: [nestable_collection], collection_type_settings: [:nestable]) }
7
+ let!(:subcollection) { create(:public_collection_lw, member_of_collections: [nestable_collection], collection_type_settings: [:nestable]) }
8
8
  let(:builder) { described_class.new(scope: scope, collection: nestable_collection, params: { "id" => nestable_collection.id.to_s }) }
9
9
 
10
10
  let!(:work1) { create(:generic_work, member_of_collections: [nestable_collection]) }
@@ -14,11 +14,11 @@ RSpec.describe Hyrax::Collections::MigrationService, clean_repo: true do
14
14
 
15
15
  describe ".migrate_all_collections" do
16
16
  context 'when legacy collections are found (e.g. collections created before Hyrax 2.1.0)' do
17
- let!(:col_none) { build(:typeless_collection, id: 'col_none', user: user, edit_users: [user.user_key], do_save: true) }
18
- let!(:col_vu) { build(:typeless_collection, id: 'col_vu', user: user, edit_users: [user.user_key], read_users: [reader1.user_key, reader2.user_key], do_save: true) }
19
- let!(:col_vg) { build(:typeless_collection, id: 'col_vg', user: user, edit_users: [user.user_key], read_groups: ['read_group_1', 'read_group_2'], do_save: true) }
20
- let!(:col_mu) { build(:typeless_collection, id: 'col_mu', user: user, edit_users: [user.user_key, editor1.user_key, editor2.user_key], do_save: true) }
21
- let!(:col_mg) { build(:typeless_collection, id: 'col_mg', user: user, edit_users: [user.user_key], edit_groups: ['edit_group_1', 'edit_group_2'], do_save: true) }
17
+ let!(:col_none) { build(:typeless_collection, user: user, edit_users: [user.user_key], do_save: true) }
18
+ let!(:col_vu) { build(:typeless_collection, user: user, edit_users: [user.user_key], read_users: [reader1.user_key, reader2.user_key], do_save: true) }
19
+ let!(:col_vg) { build(:typeless_collection, user: user, edit_users: [user.user_key], read_groups: ['read_group_1', 'read_group_2'], do_save: true) }
20
+ let!(:col_mu) { build(:typeless_collection, user: user, edit_users: [user.user_key, editor1.user_key, editor2.user_key], do_save: true) }
21
+ let!(:col_mg) { build(:typeless_collection, user: user, edit_users: [user.user_key], edit_groups: ['edit_group_1', 'edit_group_2'], do_save: true) }
22
22
 
23
23
  it 'sets gid and adds permissions' do # rubocop:disable RSpec/ExampleLength
24
24
  Collection.all.each do |col|
@@ -158,11 +158,11 @@ RSpec.describe Hyrax::Collections::MigrationService, clean_repo: true do
158
158
  let!(:col_mg) { build(:typeless_collection, id: 'col_mg', user: user, edit_users: [user.user_key], edit_groups: ['edit_group_1', 'edit_group_2'], do_save: true) }
159
159
 
160
160
  context "and collection wasn't migrated at all" do
161
- let!(:col_none) { build(:typeless_collection, id: 'col_none', user: user, edit_users: [user.user_key], do_save: true) }
162
- let!(:col_vu) { build(:typeless_collection, id: 'col_vu', user: user, edit_users: [user.user_key], read_users: [reader1.user_key, reader2.user_key], do_save: true) }
163
- let!(:col_vg) { build(:typeless_collection, id: 'col_vg', user: user, edit_users: [user.user_key], read_groups: ['read_group_1', 'read_group_2'], do_save: true) }
164
- let!(:col_mu) { build(:typeless_collection, id: 'col_mu', user: user, edit_users: [user.user_key, editor1.user_key, editor2.user_key], do_save: true) }
165
- let!(:col_mg) { build(:typeless_collection, id: 'col_mg', user: user, edit_users: [user.user_key], edit_groups: ['edit_group_1', 'edit_group_2'], do_save: true) }
161
+ let!(:col_none) { build(:typeless_collection_lw, user: user, edit_users: [user.user_key], read_users: [], do_save: true) }
162
+ let!(:col_vu) { build(:typeless_collection_lw, user: user, edit_users: [user.user_key], read_users: [reader1.user_key, reader2.user_key], do_save: true) }
163
+ let!(:col_vg) { build(:typeless_collection_lw, user: user, edit_users: [user.user_key], read_groups: ['read_group_1', 'read_group_2'], do_save: true) }
164
+ let!(:col_mu) { build(:typeless_collection_lw, user: user, edit_users: [user.user_key, editor1.user_key, editor2.user_key], do_save: true) }
165
+ let!(:col_mg) { build(:typeless_collection_lw, user: user, edit_users: [user.user_key], edit_groups: ['edit_group_1', 'edit_group_2'], do_save: true) }
166
166
 
167
167
  it 'sets gid and adds permissions' do # rubocop:disable RSpec/ExampleLength
168
168
  Collection.all.each do |col|
@@ -185,11 +185,11 @@ RSpec.describe Hyrax::Collections::MigrationService, clean_repo: true do
185
185
  end
186
186
 
187
187
  context "and collection type gid is set but permission template doesn't exist" do
188
- let!(:col_none) { create(:user_collection, id: 'col_none', user: user, edit_users: [user.user_key], collection_type_gid: default_gid) }
189
- let!(:col_vu) { create(:user_collection, id: 'col_vu', user: user, edit_users: [user.user_key], read_users: [reader1.user_key, reader2.user_key], collection_type_gid: default_gid) }
190
- let!(:col_vg) { create(:user_collection, id: 'col_vg', user: user, edit_users: [user.user_key], read_groups: ['read_group_1', 'read_group_2'], collection_type_gid: default_gid) }
191
- let!(:col_mu) { create(:user_collection, id: 'col_mu', user: user, edit_users: [user.user_key, editor1.user_key, editor2.user_key], collection_type_gid: default_gid) }
192
- let!(:col_mg) { create(:user_collection, id: 'col_mg', user: user, edit_users: [user.user_key], edit_groups: ['edit_group_1', 'edit_group_2'], collection_type_gid: default_gid) }
188
+ let!(:col_none) { build(:user_collection_lw, id: 'col_none', user: user, edit_users: [user.user_key], collection_type_gid: default_gid) }
189
+ let!(:col_vu) { build(:user_collection_lw, id: 'col_vu', user: user, edit_users: [user.user_key], read_users: [reader1.user_key, reader2.user_key], collection_type_gid: default_gid) }
190
+ let!(:col_vg) { build(:user_collection_lw, id: 'col_vg', user: user, edit_users: [user.user_key], read_groups: ['read_group_1', 'read_group_2'], collection_type_gid: default_gid) }
191
+ let!(:col_mu) { build(:user_collection_lw, id: 'col_mu', user: user, edit_users: [user.user_key, editor1.user_key, editor2.user_key], collection_type_gid: default_gid) }
192
+ let!(:col_mg) { build(:user_collection_lw, id: 'col_mg', user: user, edit_users: [user.user_key], edit_groups: ['edit_group_1', 'edit_group_2'], collection_type_gid: default_gid) }
193
193
 
194
194
  it 'sets gid and adds permissions' do # rubocop:disable RSpec/ExampleLength
195
195
  Collection.all.each do |col|
@@ -212,21 +212,21 @@ RSpec.describe Hyrax::Collections::MigrationService, clean_repo: true do
212
212
  end
213
213
 
214
214
  context "and collection type gid isn't set but permission template exists with access set" do
215
- let!(:col_none) { build(:typeless_collection, id: 'col_none', user: user, edit_users: [user.user_key], do_save: true, with_permission_template: true) }
215
+ let!(:col_none) { build(:typeless_collection, user: user, edit_users: [user.user_key], do_save: true, with_permission_template: true) }
216
216
  let!(:col_vu) do
217
- build(:typeless_collection, id: 'col_vu', user: user, edit_users: [user.user_key], read_users: [reader1.user_key, reader2.user_key],
217
+ build(:typeless_collection, user: user, edit_users: [user.user_key], read_users: [reader1.user_key, reader2.user_key],
218
218
  do_save: true, with_permission_template: true)
219
219
  end
220
220
  let!(:col_vg) do
221
- build(:typeless_collection, id: 'col_vg', user: user, edit_users: [user.user_key], read_groups: ['read_group_1', 'read_group_2'],
221
+ build(:typeless_collection, user: user, edit_users: [user.user_key], read_groups: ['read_group_1', 'read_group_2'],
222
222
  do_save: true, with_permission_template: true)
223
223
  end
224
224
  let!(:col_mu) do
225
- build(:typeless_collection, id: 'col_mu', user: user, edit_users: [user.user_key, editor1.user_key, editor2.user_key],
225
+ build(:typeless_collection, user: user, edit_users: [user.user_key, editor1.user_key, editor2.user_key],
226
226
  do_save: true, with_permission_template: true)
227
227
  end
228
228
  let!(:col_mg) do
229
- build(:typeless_collection, id: 'col_mg', user: user, edit_users: [user.user_key], edit_groups: ['edit_group_1', 'edit_group_2'],
229
+ build(:typeless_collection, user: user, edit_users: [user.user_key], edit_groups: ['edit_group_1', 'edit_group_2'],
230
230
  do_save: true, with_permission_template: true)
231
231
  end
232
232
 
@@ -276,21 +276,21 @@ RSpec.describe Hyrax::Collections::MigrationService, clean_repo: true do
276
276
  end
277
277
 
278
278
  context "and collection type gid isn't set and permission template exists with access not set" do
279
- let!(:col_none) { build(:typeless_collection, id: 'col_none', user: user, edit_users: [user.user_key], do_save: true, with_permission_template: true) }
279
+ let!(:col_none) { build(:typeless_collection, user: user, edit_users: [user.user_key], do_save: true, with_permission_template: true) }
280
280
  let!(:col_vu) do
281
- build(:typeless_collection, id: 'col_vu', user: user, edit_users: [user.user_key], read_users: [reader1.user_key, reader2.user_key],
281
+ build(:typeless_collection, user: user, edit_users: [user.user_key], read_users: [reader1.user_key, reader2.user_key],
282
282
  do_save: true, with_permission_template: true)
283
283
  end
284
284
  let!(:col_vg) do
285
- build(:typeless_collection, id: 'col_vg', user: user, edit_users: [user.user_key], read_groups: ['read_group_1', 'read_group_2'],
285
+ build(:typeless_collection, user: user, edit_users: [user.user_key], read_groups: ['read_group_1', 'read_group_2'],
286
286
  do_save: true, with_permission_template: true)
287
287
  end
288
288
  let!(:col_mu) do
289
- build(:typeless_collection, id: 'col_mu', user: user, edit_users: [user.user_key, editor1.user_key, editor2.user_key],
289
+ build(:typeless_collection, user: user, edit_users: [user.user_key, editor1.user_key, editor2.user_key],
290
290
  do_save: true, with_permission_template: true)
291
291
  end
292
292
  let!(:col_mg) do
293
- build(:typeless_collection, id: 'col_mg', user: user, edit_users: [user.user_key], edit_groups: ['edit_group_1', 'edit_group_2'],
293
+ build(:typeless_collection, user: user, edit_users: [user.user_key], edit_groups: ['edit_group_1', 'edit_group_2'],
294
294
  do_save: true, with_permission_template: true)
295
295
  end
296
296
 
@@ -322,8 +322,8 @@ RSpec.describe Hyrax::Collections::MigrationService, clean_repo: true do
322
322
 
323
323
  context 'when newer collections are found (e.g. collections created at or after Hyrax 2.1.0)' do
324
324
  let!(:collection) do
325
- create(:collection, id: 'col_newer', user: user, with_permission_template: true, collection_type_settings: [:discoverable],
326
- edit_users: [user.user_key], create_access: true)
325
+ build(:collection_lw, id: 'col_newer', user: user, with_permission_template: true, collection_type_settings: [:discoverable],
326
+ edit_users: [user.user_key])
327
327
  end
328
328
  let!(:permission_template) { collection.permission_template }
329
329
  let!(:collection_type_gid) { collection.collection_type_gid }
@@ -1,5 +1,5 @@
1
1
  RSpec.describe Hyrax::Collections::NestedCollectionPersistenceService, with_nested_reindexing: true do
2
- let(:parent) { create(:collection) }
2
+ let(:parent) { build(:collection_lw) }
3
3
  let(:child) { create(:collection) }
4
4
 
5
5
  describe '.persist_nested_collection_for' do
@@ -153,57 +153,57 @@ RSpec.describe Hyrax::Collections::NestedCollectionQueryService, clean_repo: tru
153
153
 
154
154
  # using create option here because permission template is required for testing :deposit access
155
155
  let(:coll_a) do
156
- create(:public_collection,
157
- id: 'Collection_A',
158
- collection_type_gid: collection_type.gid,
159
- user: user,
160
- create_access: true)
156
+ build(:public_collection_lw,
157
+ id: 'Collection_A',
158
+ collection_type_gid: collection_type.gid,
159
+ user: user,
160
+ with_permission_template: true)
161
161
  end
162
162
  let(:coll_b) do
163
- create(:public_collection,
164
- id: 'Collection_B',
165
- collection_type_gid: collection_type.gid,
166
- user: user,
167
- create_access: true,
168
- member_of_collections: [coll_a])
163
+ build(:public_collection_lw,
164
+ id: 'Collection_B',
165
+ collection_type_gid: collection_type.gid,
166
+ user: user,
167
+ with_permission_template: true,
168
+ member_of_collections: [coll_a])
169
169
  end
170
170
  let(:coll_c) do
171
- create(:public_collection,
172
- id: 'Collection_C',
173
- collection_type_gid: collection_type.gid,
174
- user: user,
175
- create_access: true,
176
- member_of_collections: [coll_b])
171
+ build(:public_collection_lw,
172
+ id: 'Collection_C',
173
+ collection_type_gid: collection_type.gid,
174
+ user: user,
175
+ with_permission_template: true,
176
+ member_of_collections: [coll_b])
177
177
  end
178
178
  let(:coll_d) do
179
- create(:public_collection,
180
- id: 'Collection_D',
181
- collection_type_gid: collection_type.gid,
182
- user: user,
183
- create_access: true,
184
- member_of_collections: [coll_c])
179
+ build(:public_collection_lw,
180
+ id: 'Collection_D',
181
+ collection_type_gid: collection_type.gid,
182
+ user: user,
183
+ with_permission_template: true,
184
+ member_of_collections: [coll_c])
185
185
  end
186
186
  let(:coll_e) do
187
- create(:public_collection,
187
+ create(:public_collection_lw,
188
188
  id: 'Collection_E',
189
189
  collection_type_gid: collection_type.gid,
190
190
  user: user,
191
- create_access: true,
191
+ with_permission_template: true,
192
192
  member_of_collections: [coll_d])
193
193
  end
194
194
  let(:another) do
195
- create(:public_collection,
195
+ create(:public_collection_lw,
196
196
  id: 'Another_One',
197
197
  collection_type_gid: collection_type.gid,
198
198
  user: user,
199
- create_access: true)
199
+ with_permission_template: true)
200
200
  end
201
201
  let(:wrong) do
202
- create(:public_collection,
203
- id: 'Wrong_Type',
204
- collection_type_gid: another_collection_type.gid,
205
- user: user,
206
- create_access: true)
202
+ build(:public_collection_lw,
203
+ id: 'Wrong_Type',
204
+ collection_type_gid: another_collection_type.gid,
205
+ user: user,
206
+ with_permission_template: true)
207
207
  end
208
208
 
209
209
  before do
@@ -245,18 +245,18 @@ RSpec.describe Hyrax::Collections::NestedCollectionQueryService, clean_repo: tru
245
245
  describe 'and are of the same collection type', with_nested_reindexing: true do
246
246
  # using create option here because permission template is required for testing :deposit access
247
247
  let!(:parent) do
248
- create(:public_collection,
248
+ create(:public_collection_lw,
249
249
  id: 'Parent_Collecton',
250
250
  collection_type_gid: collection_type.gid,
251
251
  user: user,
252
- create_access: true)
252
+ with_permission_template: true)
253
253
  end
254
254
  let!(:child) do
255
- create(:public_collection,
255
+ create(:public_collection_lw,
256
256
  id: 'Child_Collection',
257
257
  collection_type_gid: collection_type.gid,
258
258
  user: user,
259
- create_access: true)
259
+ with_permission_template: true)
260
260
  end
261
261
 
262
262
  it { is_expected.to eq(true) }
@@ -325,8 +325,8 @@ RSpec.describe Hyrax::Collections::NestedCollectionQueryService, clean_repo: tru
325
325
 
326
326
  describe 'nesting attributes object', with_nested_reindexing: true do
327
327
  let(:user) { create(:user) }
328
- let!(:parent) { create(:collection, id: 'Parent_Coll', collection_type_gid: collection_type.gid, user: user) }
329
- let!(:child) { create(:user_collection, id: 'Child_Coll', collection_type_gid: collection_type.gid, user: user) }
328
+ let!(:parent) { build(:collection_lw, id: 'Parent_Coll', collection_type_gid: collection_type.gid, user: user) }
329
+ let!(:child) { create(:user_collection_lw, id: 'Child_Coll', collection_type_gid: collection_type.gid, user: user) }
330
330
  let(:nesting_attributes) { Hyrax::Collections::NestedCollectionQueryService::NestingAttributes.new(id: child.id, scope: scope) }
331
331
 
332
332
  before do
@@ -8,7 +8,7 @@ RSpec.describe Hyrax::Statistics::Depositors::Summary, :clean_repo do
8
8
  let(:end_date) { nil }
9
9
  let!(:work1) { create(:work, user: user1) }
10
10
  let!(:work2) { create(:work, user: user2) }
11
- let!(:collection1) { create(:public_collection, user: user1) }
11
+ let!(:collection1) { create(:public_collection_lw, user: user1) }
12
12
  let(:service) { described_class.new(start_date, end_date) }
13
13
 
14
14
  before do
@@ -1,12 +1,19 @@
1
1
  RSpec.describe Hyrax::Statistics::Works::ByResourceType do
2
2
  let(:service) { described_class.new }
3
+ let(:user) { create(:user) }
3
4
 
4
5
  describe "#query", :clean_repo do
5
6
  before do
6
- create(:generic_work, resource_type: ['Conference Proceeding'])
7
- create(:generic_work, resource_type: ['Conference Proceeding'])
8
- create(:generic_work, resource_type: ['Image'])
9
- create(:generic_work, resource_type: ['Journal'])
7
+ # Creating factories here led to failures found within
8
+ # https://travis-ci.org/samvera/hyrax/jobs/454752377
9
+ # One should be able to invoke create(:generic_work)...
10
+ # ...however, there are difficulties here which relate to the "terms"
11
+ # requestHandler
12
+ # @see https://github.com/samvera/hyrax/issues/3491
13
+ GenericWork.create(title: ['test'], resource_type: ['Conference Proceeding']).save!
14
+ GenericWork.create(title: ['test'], resource_type: ['Conference Proceeding']).save!
15
+ GenericWork.create(title: ['test'], resource_type: ['Image']).save!
16
+ GenericWork.create(title: ['test'], resource_type: ['Journal']).save!
10
17
  end
11
18
 
12
19
  subject { service.query }
@@ -40,6 +40,7 @@ require 'rspec/active_model/mocks'
40
40
  require 'capybara/rspec'
41
41
  require 'capybara/rails'
42
42
  require 'selenium-webdriver'
43
+ require 'chromedriver-helper'
43
44
  require 'equivalent-xml'
44
45
  require 'equivalent-xml/rspec_matchers'
45
46
  require 'database_cleaner'
@@ -169,13 +170,6 @@ RSpec.configure do |config|
169
170
  DatabaseCleaner.start
170
171
  end
171
172
 
172
- if example.metadata[:type] == :view
173
- # View tests should not hit any services. This ensures the tests are unit
174
- # testing only the views and run fast.
175
- WebMock.disable_net_connect!(allow_localhost: false)
176
- else
177
- WebMock.disable_net_connect!(allow_localhost: true)
178
- end
179
173
  # using :workflow is preferable to :clean_repo, use the former if possible
180
174
  # It's important that this comes after DatabaseCleaner.start
181
175
  ensure_deposit_available_for(user) if example.metadata[:workflow]
@@ -195,7 +189,15 @@ RSpec.configure do |config|
195
189
  end
196
190
 
197
191
  config.include(ControllerLevelHelpers, type: :view)
198
- config.before(:each, type: :view) { initialize_controller_helpers(view) }
192
+
193
+ config.before(:each, type: :view) do
194
+ initialize_controller_helpers(view)
195
+ WebMock.disable_net_connect!(allow_localhost: false)
196
+ end
197
+
198
+ config.after(:each, type: :view) do
199
+ WebMock.disable_net_connect!(allow_localhost: true)
200
+ end
199
201
 
200
202
  config.before(:all, type: :feature) do
201
203
  # Assets take a long time to compile. This causes two problems:
@@ -43,7 +43,16 @@ module Selectors
43
43
  def select_member_of_collection(collection)
44
44
  find('#s2id_member_of_collection_ids').click
45
45
  find('.select2-input').set(collection.title.first)
46
- sleep 10
46
+ # Crude way of waiting for the AJAX response
47
+ select2_results = []
48
+ time_elapsed = 0
49
+ while select2_results.empty? && time_elapsed < 30
50
+ begin_time = Time.now.to_f
51
+ doc = Nokogiri::XML.parse(page.body)
52
+ select2_results = doc.xpath('//html:li[contains(@class,"select2-result")]', html: 'http://www.w3.org/1999/xhtml')
53
+ end_time = Time.now.to_f
54
+ time_elapsed += end_time - begin_time
55
+ end
47
56
  expect(page).to have_css('.select2-result')
48
57
  within ".select2-result" do
49
58
  find("span", text: collection.title.first).click
@@ -1,10 +1,43 @@
1
1
  RSpec.describe 'catalog/_thumbnail_list_collection.html.erb', type: :view do
2
- before do
3
- stub_template 'catalog/_thumbnail_list_collection.html.erb' => '<div class="col-sm-3"><span class="fa fa-cubes collection-icon-search"></span></div>'
4
- render
2
+ context "When the collection thumbnail is attached" do
3
+ let(:attributes) do
4
+ { id: "xxx",
5
+ "has_model_ssim": ["Collection"],
6
+ "title_tesim": ["Collection Title"],
7
+ "description_tesim": ["Collection Description"],
8
+ "system_modified_dtsi": 'date',
9
+ "thumbnail_path_ss": '/xxx/yyy?file=thumbnail' }
10
+ end
11
+ let(:doc) { SolrDocument.new(attributes) }
12
+ let(:current_ability) { Ability.new(build(:user)) }
13
+
14
+ before do
15
+ render 'catalog/thumbnail_list_collection', document: doc
16
+ end
17
+
18
+ it 'displays the collection thumbnail in the search results' do
19
+ expect(rendered).to include '/xxx/yyy?file=thumbnail'
20
+ end
5
21
  end
6
22
 
7
- it 'displays the collection icon in the search results' do
8
- expect(rendered).to match '<div class="col-sm-3"><span class="fa fa-cubes collection-icon-search"></span></div>'
23
+ context "When the collection thumbnail is not attached" do
24
+ let(:attributes) do
25
+ { id: "xxx",
26
+ "has_model_ssim": ["Collection"],
27
+ "title_tesim": ["Collection Title"],
28
+ "description_tesim": ["Collection Description"],
29
+ "system_modified_dtsi": 'date',
30
+ "thumbnail_path_ss" => Hyrax::CollectionIndexer.thumbnail_path_service.default_image }
31
+ end
32
+ let(:doc) { SolrDocument.new(attributes) }
33
+ let(:current_ability) { Ability.new(build(:user)) }
34
+
35
+ before do
36
+ render 'catalog/thumbnail_list_collection', document: doc
37
+ end
38
+
39
+ it 'displays the collection icon in the search results' do
40
+ expect(rendered).to include '/assets/collection-'
41
+ end
9
42
  end
10
43
  end
@@ -1,4 +1,6 @@
1
- gem 'hyrax', '2.4.1'
1
+ # Hack for https://github.com/rails/rails/issues/35153
2
+ gsub_file 'Gemfile', /^gem ["']sqlite3["']$/, 'gem "sqlite3", "~> 1.3.0"'
3
+ gem 'hyrax', '2.5.0'
2
4
  run 'bundle install'
3
5
  generate 'hyrax:install', '-f'
4
6
  rails_command 'db:migrate'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyrax
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2018-11-16 00:00:00.000000000 Z
17
+ date: 2019-03-18 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: rails
@@ -300,14 +300,14 @@ dependencies:
300
300
  requirements:
301
301
  - - ">="
302
302
  - !ruby/object:Gem::Version
303
- version: 10.5.0
303
+ version: 10.6.1
304
304
  type: :runtime
305
305
  prerelease: false
306
306
  version_requirements: !ruby/object:Gem::Requirement
307
307
  requirements:
308
308
  - - ">="
309
309
  - !ruby/object:Gem::Version
310
- version: 10.5.0
310
+ version: 10.6.1
311
311
  - !ruby/object:Gem::Dependency
312
312
  name: hydra-works
313
313
  requirement: !ruby/object:Gem::Requirement
@@ -730,6 +730,20 @@ dependencies:
730
730
  - - "~>"
731
731
  - !ruby/object:Gem::Version
732
732
  version: 0.3.0
733
+ - !ruby/object:Gem::Dependency
734
+ name: chromedriver-helper
735
+ requirement: !ruby/object:Gem::Requirement
736
+ requirements:
737
+ - - "~>"
738
+ - !ruby/object:Gem::Version
739
+ version: '2.1'
740
+ type: :development
741
+ prerelease: false
742
+ version_requirements: !ruby/object:Gem::Requirement
743
+ requirements:
744
+ - - "~>"
745
+ - !ruby/object:Gem::Version
746
+ version: '2.1'
733
747
  - !ruby/object:Gem::Dependency
734
748
  name: database_cleaner
735
749
  requirement: !ruby/object:Gem::Requirement
@@ -750,14 +764,14 @@ dependencies:
750
764
  requirements:
751
765
  - - "~>"
752
766
  - !ruby/object:Gem::Version
753
- version: '2.0'
767
+ version: '2.2'
754
768
  type: :development
755
769
  prerelease: false
756
770
  version_requirements: !ruby/object:Gem::Requirement
757
771
  requirements:
758
772
  - - "~>"
759
773
  - !ruby/object:Gem::Version
760
- version: '2.0'
774
+ version: '2.2'
761
775
  - !ruby/object:Gem::Dependency
762
776
  name: equivalent-xml
763
777
  requirement: !ruby/object:Gem::Requirement
@@ -1054,20 +1068,6 @@ dependencies:
1054
1068
  - - "<="
1055
1069
  - !ruby/object:Gem::Version
1056
1070
  version: 3.5.0
1057
- - !ruby/object:Gem::Dependency
1058
- name: chromedriver-helper
1059
- requirement: !ruby/object:Gem::Requirement
1060
- requirements:
1061
- - - "<"
1062
- - !ruby/object:Gem::Version
1063
- version: '2.0'
1064
- type: :development
1065
- prerelease: false
1066
- version_requirements: !ruby/object:Gem::Requirement
1067
- requirements:
1068
- - - "<"
1069
- - !ruby/object:Gem::Version
1070
- version: '2.0'
1071
1071
  description: Hyrax is a featureful Samvera front-end based on the latest and greatest
1072
1072
  Samvera software components.
1073
1073
  email:
@@ -2476,6 +2476,7 @@ files:
2476
2476
  - spec/factories/workflows.rb
2477
2477
  - spec/factory_tests/adminsets_factory_spec.rb
2478
2478
  - spec/factory_tests/collections_factory_spec.rb
2479
+ - spec/features/actor_stack_spec.rb
2479
2480
  - spec/features/admin_spec.rb
2480
2481
  - spec/features/batch_create_spec.rb
2481
2482
  - spec/features/batch_edit_spec.rb
@@ -3079,7 +3080,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
3079
3080
  version: '0'
3080
3081
  requirements: []
3081
3082
  rubyforge_project:
3082
- rubygems_version: 2.6.13
3083
+ rubygems_version: 2.7.9
3083
3084
  signing_key:
3084
3085
  specification_version: 4
3085
3086
  summary: Hyrax is a front-end based on the robust Samvera framework, providing a user
@@ -3223,6 +3224,7 @@ test_files:
3223
3224
  - spec/factories/workflows.rb
3224
3225
  - spec/factory_tests/adminsets_factory_spec.rb
3225
3226
  - spec/factory_tests/collections_factory_spec.rb
3227
+ - spec/features/actor_stack_spec.rb
3226
3228
  - spec/features/admin_spec.rb
3227
3229
  - spec/features/batch_create_spec.rb
3228
3230
  - spec/features/batch_edit_spec.rb