hyrax 3.0.0.pre.beta1 → 3.0.0.pre.beta2

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.
Files changed (170) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +157 -68
  3. data/.travis.yml +4 -1
  4. data/Gemfile +1 -0
  5. data/README.md +3 -3
  6. data/app/actors/hyrax/actors/collections_membership_actor.rb +5 -55
  7. data/app/actors/hyrax/actors/create_with_remote_files_ordered_members_actor.rb +6 -8
  8. data/app/actors/hyrax/actors/environment.rb +15 -0
  9. data/app/actors/hyrax/actors/interpret_visibility_actor.rb +22 -37
  10. data/app/assets/javascripts/hyrax/editor/controlled_vocabulary.es6 +1 -1
  11. data/app/assets/stylesheets/hyrax/_collections.scss +5 -3
  12. data/app/assets/stylesheets/hyrax/dashboard.scss +3 -3
  13. data/app/controllers/concerns/hyrax/works_controller_behavior.rb +21 -2
  14. data/app/controllers/hyrax/homepage_controller.rb +1 -1
  15. data/app/forms/hyrax/forms/work_form.rb +1 -1
  16. data/app/helpers/hyrax/collections_helper.rb +13 -0
  17. data/app/helpers/hyrax/hyrax_helper_behavior.rb +3 -3
  18. data/app/indexers/hyrax/admin_set_indexer.rb +1 -1
  19. data/app/indexers/hyrax/basic_metadata_indexer.rb +1 -1
  20. data/app/indexers/hyrax/collection_indexer.rb +3 -3
  21. data/app/indexers/hyrax/deep_indexing_service.rb +12 -12
  22. data/app/indexers/hyrax/file_set_indexer.rb +1 -1
  23. data/app/indexers/hyrax/indexes_workflow.rb +4 -4
  24. data/app/indexers/hyrax/work_indexer.rb +1 -1
  25. data/app/models/concerns/hyrax/basic_metadata.rb +2 -0
  26. data/app/models/concerns/hyrax/collection_behavior.rb +3 -3
  27. data/app/models/concerns/hyrax/file_set/querying.rb +1 -1
  28. data/app/models/concerns/hyrax/human_readable_type.rb +2 -2
  29. data/app/models/concerns/hyrax/solr_document/characterization.rb +23 -23
  30. data/app/models/concerns/hyrax/solr_document/metadata.rb +3 -2
  31. data/app/models/concerns/hyrax/solr_document_behavior.rb +3 -3
  32. data/app/models/concerns/hyrax/user.rb +10 -2
  33. data/app/presenters/hyrax/work_show_presenter.rb +2 -2
  34. data/app/renderers/hyrax/renderers/faceted_attribute_renderer.rb +1 -1
  35. data/app/search_builders/hyrax/collection_search_builder.rb +1 -1
  36. data/app/search_builders/hyrax/deposit_search_builder.rb +1 -1
  37. data/app/search_builders/hyrax/embargo_search_builder.rb +1 -1
  38. data/app/search_builders/hyrax/lease_search_builder.rb +1 -1
  39. data/app/services/hyrax/default_middleware_stack.rb +0 -4
  40. data/app/services/hyrax/statistics/file_sets/by_format.rb +1 -1
  41. data/app/services/hyrax/statistics/works/by_resource_type.rb +1 -1
  42. data/app/services/hyrax/visibility_intention.rb +78 -0
  43. data/app/views/catalog/_index_list_default.html.erb +3 -3
  44. data/app/views/catalog/_thumbnail_list_collection.html.erb +3 -2
  45. data/app/views/hyrax/base/_attribute_rows.html.erb +1 -0
  46. data/app/views/hyrax/base/_form_files.html.erb +2 -2
  47. data/app/views/hyrax/base/_form_visibility_component.html.erb +1 -1
  48. data/app/views/hyrax/base/_show_actions.html.erb +6 -6
  49. data/app/views/hyrax/base/show.html.erb +2 -2
  50. data/app/views/hyrax/batch_edits/_check_all.html.erb +1 -1
  51. data/app/views/hyrax/batch_edits/_delete_selected.html.erb +1 -1
  52. data/app/views/hyrax/collections/_show_document_list_row.html.erb +1 -1
  53. data/app/views/hyrax/dashboard/collections/_show_document_list_row.html.erb +1 -1
  54. data/app/views/hyrax/dashboard/show_admin.html.erb +4 -4
  55. data/app/views/records/show_fields/_based_near.html.erb +1 -1
  56. data/app/views/records/show_fields/_creator.html.erb +1 -1
  57. data/app/views/records/show_fields/_keyword.html.erb +1 -1
  58. data/app/views/records/show_fields/_language.html.erb +1 -1
  59. data/app/views/records/show_fields/_publisher.html.erb +1 -1
  60. data/app/views/records/show_fields/_resource_type.html.erb +1 -1
  61. data/app/views/records/show_fields/_subject.html.erb +1 -1
  62. data/config/initializers/samvera-nesting_indexer_initializer.rb +3 -3
  63. data/config/locales/hyrax.de.yml +35 -22
  64. data/config/locales/hyrax.en.yml +22 -2
  65. data/config/locales/hyrax.es.yml +21 -1
  66. data/config/locales/hyrax.fr.yml +21 -1
  67. data/config/locales/hyrax.it.yml +21 -1
  68. data/config/locales/hyrax.pt-BR.yml +21 -1
  69. data/config/locales/hyrax.zh.yml +21 -1
  70. data/hyrax.gemspec +7 -9
  71. data/lib/generators/hyrax/templates/catalog_controller.rb +1 -1
  72. data/lib/generators/hyrax/templates/config/locales/hyrax.pt-BR.yml +10 -10
  73. data/lib/generators/hyrax/work/templates/locale.pt-BR.yml.erb +1 -1
  74. data/lib/hyrax/configuration.rb +18 -0
  75. data/lib/hyrax/engine.rb +8 -0
  76. data/lib/hyrax/transactions/container.rb +6 -0
  77. data/lib/hyrax/transactions/destroy_work.rb +21 -0
  78. data/lib/hyrax/transactions/steps/destroy_work.rb +24 -0
  79. data/lib/hyrax/version.rb +1 -1
  80. data/lib/wings.rb +45 -0
  81. data/lib/wings/active_fedora_converter.rb +56 -0
  82. data/lib/wings/model_transformer.rb +158 -0
  83. data/lib/wings/resource_factory.rb +8 -0
  84. data/lib/wings/valkyrie/metadata_adapter.rb +29 -0
  85. data/lib/wings/valkyrie/persister.rb +50 -0
  86. data/lib/wings/valkyrie/query_service.rb +43 -0
  87. data/lib/wings/valkyrie/resource_factory.rb +45 -0
  88. data/lib/wings/valkyrizable.rb +24 -0
  89. data/lib/wings/value_mapper.rb +59 -0
  90. data/spec/abilities/collection_ability_spec.rb +5 -5
  91. data/spec/abilities/permission_template_ability_spec.rb +1 -1
  92. data/spec/actors/hyrax/actors/collections_membership_actor_spec.rb +6 -175
  93. data/spec/actors/hyrax/actors/create_with_remote_files_ordered_members_actor_spec.rb +30 -22
  94. data/spec/actors/hyrax/actors/interpret_visibility_actor_spec.rb +2 -0
  95. data/spec/controllers/catalog_controller_spec.rb +1 -1
  96. data/spec/controllers/hyrax/admin/collection_types_controller_spec.rb +1 -1
  97. data/spec/controllers/hyrax/batch_edits_controller_spec.rb +9 -9
  98. data/spec/controllers/hyrax/collections_controller_spec.rb +5 -5
  99. data/spec/controllers/hyrax/dashboard/collection_members_controller_spec.rb +16 -13
  100. data/spec/controllers/hyrax/dashboard/collections_controller_spec.rb +9 -9
  101. data/spec/controllers/hyrax/dashboard/nest_collections_controller_spec.rb +1 -1
  102. data/spec/controllers/hyrax/generic_works_controller_spec.rb +10 -1
  103. data/spec/controllers/hyrax/homepage_controller_spec.rb +3 -3
  104. data/spec/controllers/hyrax/my/shares_controller_spec.rb +1 -1
  105. data/spec/features/actor_stack_spec.rb +48 -0
  106. data/spec/features/catalog_search_spec.rb +2 -2
  107. data/spec/features/collection_multi_membership_spec.rb +2 -2
  108. data/spec/features/collection_spec.rb +7 -7
  109. data/spec/features/collection_type_spec.rb +2 -2
  110. data/spec/features/dashboard/collection_spec.rb +18 -18
  111. data/spec/features/delete_work_spec.rb +1 -1
  112. data/spec/features/search_spec.rb +2 -2
  113. data/spec/features/work_show_spec.rb +5 -2
  114. data/spec/forms/hyrax/forms/batch_upload_form_spec.rb +1 -0
  115. data/spec/forms/hyrax/forms/collection_form_spec.rb +5 -5
  116. data/spec/forms/hyrax/forms/permission_template_form_spec.rb +1 -1
  117. data/spec/forms/hyrax/forms/work_form_spec.rb +2 -0
  118. data/spec/helpers/blacklight_helper_spec.rb +3 -1
  119. data/spec/helpers/hyrax/collections_helper_spec.rb +42 -0
  120. data/spec/helpers/hyrax/dashboard_helper_behavior_spec.rb +4 -4
  121. data/spec/helpers/hyrax_helper_spec.rb +8 -4
  122. data/spec/hyrax/transactions/destroy_work_spec.rb +35 -0
  123. data/spec/hyrax/transactions/steps/destroy_work_spec.rb +33 -0
  124. data/spec/indexers/hyrax/collection_indexer_spec.rb +1 -1
  125. data/spec/jobs/characterize_job_spec.rb +1 -1
  126. data/spec/lib/hyrax/resource_sync/change_list_writer_spec.rb +35 -21
  127. data/spec/lib/hyrax/resource_sync/resource_list_writer_spec.rb +1 -1
  128. data/spec/models/collection_spec.rb +18 -18
  129. data/spec/models/concerns/hyrax/collection_nesting_spec.rb +2 -2
  130. data/spec/models/file_set_spec.rb +2 -2
  131. data/spec/models/hyrax/collection_type_spec.rb +2 -2
  132. data/spec/models/user_spec.rb +26 -1
  133. data/spec/presenters/hyrax/collection_presenter_spec.rb +11 -11
  134. data/spec/presenters/hyrax/work_show_presenter_spec.rb +11 -0
  135. data/spec/search_builders/hyrax/collection_member_search_builder_spec.rb +1 -1
  136. data/spec/search_builders/hyrax/collection_search_builder_spec.rb +1 -1
  137. data/spec/search_builders/hyrax/dashboard/nested_collections_search_builder_spec.rb +1 -1
  138. data/spec/search_builders/hyrax/work_relation_spec.rb +1 -1
  139. data/spec/services/hyrax/adapters/nesting_index_adapter_spec.rb +2 -2
  140. data/spec/services/hyrax/collections/collection_member_service_spec.rb +2 -2
  141. data/spec/services/hyrax/collections/migration_service_spec.rb +27 -27
  142. data/spec/services/hyrax/collections/nested_collection_persistence_service_spec.rb +1 -1
  143. data/spec/services/hyrax/collections/nested_collection_query_service_spec.rb +38 -38
  144. data/spec/services/hyrax/curation_concern_spec.rb +1 -1
  145. data/spec/services/hyrax/default_middleware_stack_spec.rb +1 -2
  146. data/spec/services/hyrax/statistics/depositors/summary_spec.rb +1 -1
  147. data/spec/services/hyrax/statistics/works/by_resource_type_spec.rb +11 -4
  148. data/spec/services/hyrax/visibility_intention_spec.rb +144 -0
  149. data/spec/services/hyrax/workflow/changes_required_notification_spec.rb +1 -1
  150. data/spec/spec_helper.rb +10 -8
  151. data/spec/support/selectors.rb +10 -1
  152. data/spec/test_app_templates/Gemfile.extra +2 -0
  153. data/spec/test_app_templates/lib/generators/test_app_generator.rb +6 -0
  154. data/spec/views/catalog/_index_list_default.html.erb_spec.rb +3 -2
  155. data/spec/views/catalog/_thumbnail_list_collection.html.erb_spec.rb +38 -5
  156. data/spec/views/hyrax/base/_attributes.html.erb_spec.rb +1 -1
  157. data/spec/views/hyrax/base/_show_actions.html.erb_spec.rb +9 -9
  158. data/spec/views/hyrax/base/show.html.erb_spec.rb +3 -2
  159. data/spec/views/hyrax/collections/_show_document_list_row.html.erb_spec.rb +3 -2
  160. data/spec/views/hyrax/dashboard/collections/_show_document_list_row.html.erb_spec.rb +3 -2
  161. data/spec/wings/active_fedora_converter_spec.rb +31 -0
  162. data/spec/wings/model_transformer_spec.rb +288 -0
  163. data/spec/wings/valkyrie/metadata_adapter_spec.rb +10 -0
  164. data/spec/wings/valkyrie/persister_spec.rb +71 -0
  165. data/spec/wings/valkyrie/query_service_spec.rb +81 -0
  166. data/spec/wings/valkyrie/resource_factory_spec.rb +32 -0
  167. data/spec/wings/value_mapper_spec.rb +60 -0
  168. data/spec/wings_spec.rb +8 -0
  169. data/template.rb +3 -1
  170. metadata +86 -36
@@ -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
@@ -5,7 +5,7 @@ RSpec.describe Hyrax::CurationConcern do
5
5
  describe ".actor" do
6
6
  subject { described_class.actor }
7
7
 
8
- it { is_expected.to be_kind_of Hyrax::Actors::TransactionalRequest }
8
+ it { is_expected.to be_kind_of Hyrax::Actors::AbstractActor }
9
9
  end
10
10
 
11
11
  describe ".actor_factory" do
@@ -7,7 +7,6 @@ RSpec.describe Hyrax::DefaultMiddlewareStack do
7
7
 
8
8
  it "has the correct stack frames" do
9
9
  expect(subject.middlewares).to eq [
10
- Hyrax::Actors::TransactionalRequest,
11
10
  Hyrax::Actors::OptimisticLockValidator,
12
11
  Hyrax::Actors::CreateWithRemoteFilesActor,
13
12
  Hyrax::Actors::CreateWithFilesActor,
@@ -30,7 +29,7 @@ RSpec.describe Hyrax::DefaultMiddlewareStack do
30
29
 
31
30
  describe 'Hyrax::CurationConcern.actor' do
32
31
  it "calls the Hyrax::ActorFactory" do
33
- expect(Hyrax::CurationConcern.actor).to be_instance_of Hyrax::Actors::TransactionalRequest
32
+ expect(Hyrax::CurationConcern.actor).to be_instance_of Hyrax::Actors::OptimisticLockValidator
34
33
  end
35
34
  end
36
35
  end
@@ -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 }
@@ -0,0 +1,144 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Hyrax::VisibilityIntention do
4
+ subject(:intention) { described_class.new(attributes) }
5
+ let(:attributes) { {} }
6
+
7
+ describe '#embargo_params' do
8
+ it 'is empty when no embargo is requested' do
9
+ expect(intention.embargo_params).to be_empty
10
+ end
11
+
12
+ context 'when an embargo is requested with no release date' do
13
+ let(:attributes) { { visibility: described_class::EMBARGO_REQUEST } }
14
+
15
+ it 'raises an error' do
16
+ expect { intention.embargo_params }.to raise_error ArgumentError
17
+ end
18
+ end
19
+
20
+ context 'when an embargo is requested with valid release date' do
21
+ let(:attributes) do
22
+ { visibility: described_class::EMBARGO_REQUEST, release_date: date }
23
+ end
24
+
25
+ let(:date) { Time.zone.today }
26
+
27
+ it 'builds private -> public embargo' do
28
+ expect(intention.embargo_params).to eq [date, described_class::PRIVATE, described_class::PUBLIC]
29
+ end
30
+ end
31
+
32
+ context 'when an embargo is requested with specific visibilities' do
33
+ let(:attributes) do
34
+ { visibility: described_class::EMBARGO_REQUEST,
35
+ release_date: date,
36
+ after: after,
37
+ during: during }
38
+ end
39
+
40
+ let(:after) { 'custom_after_embargo_visibility' }
41
+ let(:date) { Time.zone.today }
42
+ let(:during) { 'custom_during_embargo_visibility' }
43
+
44
+ it 'builds private -> public embargo' do
45
+ expect(intention.embargo_params).to eq [date, during, after]
46
+ end
47
+ end
48
+ end
49
+
50
+ describe '#lease_params' do
51
+ it 'is empty when no lease is requested' do
52
+ expect(intention.lease_params).to be_empty
53
+ end
54
+
55
+ context 'when an lease is requested with no release date' do
56
+ let(:attributes) { { visibility: described_class::LEASE_REQUEST } }
57
+
58
+ it 'raises an error' do
59
+ expect { intention.lease_params }.to raise_error ArgumentError
60
+ end
61
+ end
62
+
63
+ context 'when lease embargo is requested with valid release date' do
64
+ let(:attributes) do
65
+ { visibility: described_class::LEASE_REQUEST, release_date: date }
66
+ end
67
+
68
+ let(:date) { Time.zone.today }
69
+
70
+ it 'builds public -> private lease' do
71
+ expect(intention.lease_params).to eq [date, described_class::PUBLIC, described_class::PRIVATE]
72
+ end
73
+ end
74
+
75
+ context 'when an lease is requested with specific visibilities' do
76
+ let(:attributes) do
77
+ { visibility: described_class::LEASE_REQUEST,
78
+ release_date: date,
79
+ after: after,
80
+ during: during }
81
+ end
82
+
83
+ let(:after) { 'custom_after_lease_visibility' }
84
+ let(:date) { Time.zone.today }
85
+ let(:during) { 'custom_during_lease_visibility' }
86
+
87
+ it 'builds private -> public embargo' do
88
+ expect(intention.lease_params).to eq [date, during, after]
89
+ end
90
+ end
91
+ end
92
+
93
+ describe '#valid_embargo?' do
94
+ it 'is false by default' do
95
+ expect(intention.valid_embargo?).to be_falsey
96
+ end
97
+
98
+ context 'when an embargo is requested with no release date' do
99
+ let(:attributes) { { visibility: described_class::EMBARGO_REQUEST } }
100
+
101
+ it 'is false' do
102
+ expect(intention.valid_embargo?).to be_falsey
103
+ end
104
+ end
105
+
106
+ context 'when an embargo is requested with valid release date' do
107
+ let(:attributes) do
108
+ { visibility: described_class::EMBARGO_REQUEST, release_date: Time.zone.now.to_s }
109
+ end
110
+
111
+ it 'is true' do
112
+ expect(intention.valid_embargo?).to be_truthy
113
+ end
114
+ end
115
+ end
116
+
117
+ describe '#wants_embargo?' do
118
+ it 'is false by default' do
119
+ expect(intention.wants_embargo?).to be_falsey
120
+ end
121
+
122
+ context 'when an embargo is requested' do
123
+ let(:attributes) { { visibility: described_class::EMBARGO_REQUEST } }
124
+
125
+ it 'is true' do
126
+ expect(intention.wants_embargo?).to be_truthy
127
+ end
128
+ end
129
+ end
130
+
131
+ describe '#wants_lease?' do
132
+ it 'is false by default' do
133
+ expect(intention.wants_lease?).to be_falsey
134
+ end
135
+
136
+ context 'when a lease is requested' do
137
+ let(:attributes) { { visibility: described_class::LEASE_REQUEST } }
138
+
139
+ it 'is true' do
140
+ expect(intention.wants_lease?).to be_truthy
141
+ end
142
+ end
143
+ end
144
+ end