hyrax 3.0.0.pre.beta1 → 3.0.0.pre.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.circleci/config.yml +157 -68
- data/.travis.yml +4 -1
- data/Gemfile +1 -0
- data/README.md +3 -3
- data/app/actors/hyrax/actors/collections_membership_actor.rb +5 -55
- data/app/actors/hyrax/actors/create_with_remote_files_ordered_members_actor.rb +6 -8
- data/app/actors/hyrax/actors/environment.rb +15 -0
- data/app/actors/hyrax/actors/interpret_visibility_actor.rb +22 -37
- data/app/assets/javascripts/hyrax/editor/controlled_vocabulary.es6 +1 -1
- data/app/assets/stylesheets/hyrax/_collections.scss +5 -3
- data/app/assets/stylesheets/hyrax/dashboard.scss +3 -3
- data/app/controllers/concerns/hyrax/works_controller_behavior.rb +21 -2
- data/app/controllers/hyrax/homepage_controller.rb +1 -1
- data/app/forms/hyrax/forms/work_form.rb +1 -1
- data/app/helpers/hyrax/collections_helper.rb +13 -0
- data/app/helpers/hyrax/hyrax_helper_behavior.rb +3 -3
- data/app/indexers/hyrax/admin_set_indexer.rb +1 -1
- data/app/indexers/hyrax/basic_metadata_indexer.rb +1 -1
- data/app/indexers/hyrax/collection_indexer.rb +3 -3
- data/app/indexers/hyrax/deep_indexing_service.rb +12 -12
- data/app/indexers/hyrax/file_set_indexer.rb +1 -1
- data/app/indexers/hyrax/indexes_workflow.rb +4 -4
- data/app/indexers/hyrax/work_indexer.rb +1 -1
- data/app/models/concerns/hyrax/basic_metadata.rb +2 -0
- data/app/models/concerns/hyrax/collection_behavior.rb +3 -3
- data/app/models/concerns/hyrax/file_set/querying.rb +1 -1
- data/app/models/concerns/hyrax/human_readable_type.rb +2 -2
- data/app/models/concerns/hyrax/solr_document/characterization.rb +23 -23
- data/app/models/concerns/hyrax/solr_document/metadata.rb +3 -2
- data/app/models/concerns/hyrax/solr_document_behavior.rb +3 -3
- data/app/models/concerns/hyrax/user.rb +10 -2
- data/app/presenters/hyrax/work_show_presenter.rb +2 -2
- data/app/renderers/hyrax/renderers/faceted_attribute_renderer.rb +1 -1
- data/app/search_builders/hyrax/collection_search_builder.rb +1 -1
- data/app/search_builders/hyrax/deposit_search_builder.rb +1 -1
- data/app/search_builders/hyrax/embargo_search_builder.rb +1 -1
- data/app/search_builders/hyrax/lease_search_builder.rb +1 -1
- data/app/services/hyrax/default_middleware_stack.rb +0 -4
- data/app/services/hyrax/statistics/file_sets/by_format.rb +1 -1
- data/app/services/hyrax/statistics/works/by_resource_type.rb +1 -1
- data/app/services/hyrax/visibility_intention.rb +78 -0
- data/app/views/catalog/_index_list_default.html.erb +3 -3
- data/app/views/catalog/_thumbnail_list_collection.html.erb +3 -2
- data/app/views/hyrax/base/_attribute_rows.html.erb +1 -0
- data/app/views/hyrax/base/_form_files.html.erb +2 -2
- data/app/views/hyrax/base/_form_visibility_component.html.erb +1 -1
- data/app/views/hyrax/base/_show_actions.html.erb +6 -6
- data/app/views/hyrax/base/show.html.erb +2 -2
- data/app/views/hyrax/batch_edits/_check_all.html.erb +1 -1
- data/app/views/hyrax/batch_edits/_delete_selected.html.erb +1 -1
- data/app/views/hyrax/collections/_show_document_list_row.html.erb +1 -1
- data/app/views/hyrax/dashboard/collections/_show_document_list_row.html.erb +1 -1
- data/app/views/hyrax/dashboard/show_admin.html.erb +4 -4
- data/app/views/records/show_fields/_based_near.html.erb +1 -1
- data/app/views/records/show_fields/_creator.html.erb +1 -1
- data/app/views/records/show_fields/_keyword.html.erb +1 -1
- data/app/views/records/show_fields/_language.html.erb +1 -1
- data/app/views/records/show_fields/_publisher.html.erb +1 -1
- data/app/views/records/show_fields/_resource_type.html.erb +1 -1
- data/app/views/records/show_fields/_subject.html.erb +1 -1
- data/config/initializers/samvera-nesting_indexer_initializer.rb +3 -3
- data/config/locales/hyrax.de.yml +35 -22
- data/config/locales/hyrax.en.yml +22 -2
- data/config/locales/hyrax.es.yml +21 -1
- data/config/locales/hyrax.fr.yml +21 -1
- data/config/locales/hyrax.it.yml +21 -1
- data/config/locales/hyrax.pt-BR.yml +21 -1
- data/config/locales/hyrax.zh.yml +21 -1
- data/hyrax.gemspec +7 -9
- data/lib/generators/hyrax/templates/catalog_controller.rb +1 -1
- data/lib/generators/hyrax/templates/config/locales/hyrax.pt-BR.yml +10 -10
- data/lib/generators/hyrax/work/templates/locale.pt-BR.yml.erb +1 -1
- data/lib/hyrax/configuration.rb +18 -0
- data/lib/hyrax/engine.rb +8 -0
- data/lib/hyrax/transactions/container.rb +6 -0
- data/lib/hyrax/transactions/destroy_work.rb +21 -0
- data/lib/hyrax/transactions/steps/destroy_work.rb +24 -0
- data/lib/hyrax/version.rb +1 -1
- data/lib/wings.rb +45 -0
- data/lib/wings/active_fedora_converter.rb +56 -0
- data/lib/wings/model_transformer.rb +158 -0
- data/lib/wings/resource_factory.rb +8 -0
- data/lib/wings/valkyrie/metadata_adapter.rb +29 -0
- data/lib/wings/valkyrie/persister.rb +50 -0
- data/lib/wings/valkyrie/query_service.rb +43 -0
- data/lib/wings/valkyrie/resource_factory.rb +45 -0
- data/lib/wings/valkyrizable.rb +24 -0
- data/lib/wings/value_mapper.rb +59 -0
- 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 +6 -175
- data/spec/actors/hyrax/actors/create_with_remote_files_ordered_members_actor_spec.rb +30 -22
- data/spec/actors/hyrax/actors/interpret_visibility_actor_spec.rb +2 -0
- 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 +9 -9
- data/spec/controllers/hyrax/dashboard/nest_collections_controller_spec.rb +1 -1
- data/spec/controllers/hyrax/generic_works_controller_spec.rb +10 -1
- data/spec/controllers/hyrax/homepage_controller_spec.rb +3 -3
- 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 +18 -18
- data/spec/features/delete_work_spec.rb +1 -1
- data/spec/features/search_spec.rb +2 -2
- data/spec/features/work_show_spec.rb +5 -2
- data/spec/forms/hyrax/forms/batch_upload_form_spec.rb +1 -0
- 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/forms/hyrax/forms/work_form_spec.rb +2 -0
- data/spec/helpers/blacklight_helper_spec.rb +3 -1
- data/spec/helpers/hyrax/collections_helper_spec.rb +42 -0
- data/spec/helpers/hyrax/dashboard_helper_behavior_spec.rb +4 -4
- data/spec/helpers/hyrax_helper_spec.rb +8 -4
- data/spec/hyrax/transactions/destroy_work_spec.rb +35 -0
- data/spec/hyrax/transactions/steps/destroy_work_spec.rb +33 -0
- 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/file_set_spec.rb +2 -2
- data/spec/models/hyrax/collection_type_spec.rb +2 -2
- data/spec/models/user_spec.rb +26 -1
- data/spec/presenters/hyrax/collection_presenter_spec.rb +11 -11
- data/spec/presenters/hyrax/work_show_presenter_spec.rb +11 -0
- 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/curation_concern_spec.rb +1 -1
- data/spec/services/hyrax/default_middleware_stack_spec.rb +1 -2
- 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/services/hyrax/visibility_intention_spec.rb +144 -0
- data/spec/services/hyrax/workflow/changes_required_notification_spec.rb +1 -1
- data/spec/spec_helper.rb +10 -8
- data/spec/support/selectors.rb +10 -1
- data/spec/test_app_templates/Gemfile.extra +2 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +6 -0
- data/spec/views/catalog/_index_list_default.html.erb_spec.rb +3 -2
- data/spec/views/catalog/_thumbnail_list_collection.html.erb_spec.rb +38 -5
- data/spec/views/hyrax/base/_attributes.html.erb_spec.rb +1 -1
- data/spec/views/hyrax/base/_show_actions.html.erb_spec.rb +9 -9
- data/spec/views/hyrax/base/show.html.erb_spec.rb +3 -2
- data/spec/views/hyrax/collections/_show_document_list_row.html.erb_spec.rb +3 -2
- data/spec/views/hyrax/dashboard/collections/_show_document_list_row.html.erb_spec.rb +3 -2
- data/spec/wings/active_fedora_converter_spec.rb +31 -0
- data/spec/wings/model_transformer_spec.rb +288 -0
- data/spec/wings/valkyrie/metadata_adapter_spec.rb +10 -0
- data/spec/wings/valkyrie/persister_spec.rb +71 -0
- data/spec/wings/valkyrie/query_service_spec.rb +81 -0
- data/spec/wings/valkyrie/resource_factory_spec.rb +32 -0
- data/spec/wings/value_mapper_spec.rb +60 -0
- data/spec/wings_spec.rb +8 -0
- data/template.rb +3 -1
- metadata +86 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 12ca8250128a0ea9333aacfe4a4b71832c0b1df954c5cd8299d2e8c9a897e097
|
4
|
+
data.tar.gz: ab169cfb14af7a7139e84070f1dce85532241b05654e20de78538799fbe6827a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3568d5aa17c020e9baafd2e450fe2aeb7748c7a0e32a9e921d774607e9a9dbd9a042edd04c19e7b023578c9dc50f4f43c2f3379d9eb73d61552c610adfb2eaee
|
7
|
+
data.tar.gz: 00d6e736c3741544c4b627b7746ebc8e50cadfaadea9bc362c3b159c2ba5f57cc23fe2756423a29b48bf7ad7533c25922865a091940882734f5253b266674ed7
|
data/.circleci/config.yml
CHANGED
@@ -2,99 +2,162 @@
|
|
2
2
|
#
|
3
3
|
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
|
4
4
|
#
|
5
|
-
version: 2
|
6
|
-
|
7
|
-
|
5
|
+
version: 2.1
|
6
|
+
executors:
|
7
|
+
ruby:
|
8
8
|
docker:
|
9
|
-
|
10
|
-
|
11
|
-
- image: ualbertalib/docker-fcrepo4:4.7
|
12
|
-
environment:
|
13
|
-
CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
|
14
|
-
- image: solr:7-alpine
|
15
|
-
command: bin/solr -cloud -noprompt -f -p 8985
|
16
|
-
|
17
|
-
# Specify service dependencies here if necessary
|
18
|
-
# CircleCI maintains a library of pre-built images
|
19
|
-
# documented at https://circleci.com/docs/2.0/circleci-images/
|
20
|
-
# - image: circleci/postgres:9.4
|
21
|
-
|
22
|
-
working_directory: ~/repo
|
23
|
-
parallelism: 2
|
24
|
-
|
9
|
+
- image: circleci/ruby:2.5.3
|
10
|
+
working_directory: ~/hyrax
|
25
11
|
environment:
|
26
|
-
|
27
|
-
RACK_ENV: test
|
28
|
-
FCREPO_TEST_PORT: 8080/fcrepo
|
12
|
+
BUNDLE_PATH: vendor/bundle
|
29
13
|
BUNDLE_JOBS: 4
|
30
14
|
BUNDLE_RETRY: 3
|
31
|
-
NOKOGIRI_USE_SYSTEM_LIBRARIES: true
|
32
|
-
ENGINE_CART_RAILS_OPTIONS: --skip-git --skip-bundle --skip-listen --skip-spring --skip-yarn --skip-keeps --skip-action-cable --skip-coffee --skip-puma --skip-test
|
33
|
-
SPEC_OPTS: --profile 10 --format RspecJunitFormatter --out /tmp/test-results/rspec.xml --format progress
|
34
|
-
COVERALLS_PARALLEL: true
|
35
15
|
|
16
|
+
jobs:
|
17
|
+
bundle:
|
18
|
+
executor: ruby
|
36
19
|
steps:
|
37
20
|
- restore_cache:
|
38
21
|
keys:
|
39
|
-
- source-
|
40
|
-
- source-
|
41
|
-
- source-
|
22
|
+
- v1-source-{{ .Branch }}-{{ .Revision }}
|
23
|
+
- v1-source-{{ .Branch }}-
|
24
|
+
- v1-source-
|
42
25
|
|
43
26
|
- checkout
|
44
27
|
|
45
28
|
- save_cache:
|
46
|
-
key: source-
|
29
|
+
key: v1-source-{{ .Branch }}-{{ .Revision }}
|
47
30
|
paths:
|
48
31
|
- ".git"
|
49
32
|
|
50
|
-
# BUNDLE_PATH is unset to allow for `bundle config path` to take precedence.
|
51
|
-
- run:
|
52
|
-
name: Extra environment setup
|
53
|
-
command: |
|
54
|
-
echo 'unset BUNDLE_PATH' >> $BASH_ENV
|
55
|
-
|
56
33
|
- restore_cache:
|
57
34
|
keys:
|
58
|
-
- v1-
|
59
|
-
- v1-
|
60
|
-
|
61
|
-
# Download and cache dependencies
|
62
|
-
- restore_cache:
|
63
|
-
keys:
|
64
|
-
- v1-dependencies-{{ .Branch }}-{{ checksum "./.internal_test_app/.generated_engine_cart" }}
|
65
|
-
- v1-dependencies-{{ .Branch }}
|
66
|
-
- v1-dependencies-
|
35
|
+
- v1-bundle-{{ checksum "Gemfile" }}--{{ checksum "hyrax.gemspec" }}
|
36
|
+
- v1-bundle
|
67
37
|
|
68
38
|
- run:
|
69
39
|
name: Install dependencies
|
70
|
-
command:
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
40
|
+
command: bundle check || bundle install
|
41
|
+
|
42
|
+
- save_cache:
|
43
|
+
key: v1-bundle-{{ checksum "Gemfile.lock" }}--{{ checksum "hyrax.gemspec" }}
|
44
|
+
paths:
|
45
|
+
- ~/hyrax/vendor/bundle
|
46
|
+
|
47
|
+
- persist_to_workspace:
|
48
|
+
root: ~/
|
49
|
+
paths:
|
50
|
+
- hyrax/*
|
51
|
+
- hyrax/**/*
|
52
|
+
|
53
|
+
lint:
|
54
|
+
executor: ruby
|
55
|
+
steps:
|
56
|
+
- attach_workspace:
|
57
|
+
at: ~/
|
75
58
|
|
76
59
|
- run:
|
77
60
|
name: Call Rubocop
|
78
61
|
command: bundle exec rubocop
|
79
62
|
|
63
|
+
build:
|
64
|
+
docker:
|
65
|
+
- image: circleci/ruby:2.5.3-node
|
66
|
+
|
67
|
+
working_directory: ~/hyrax
|
68
|
+
|
69
|
+
environment:
|
70
|
+
BUNDLE_PATH: vendor/bundle
|
71
|
+
BUNDLE_JOBS: 4
|
72
|
+
BUNDLE_RETRY: 3
|
73
|
+
RAILS_ENV: test
|
74
|
+
RACK_ENV: test
|
75
|
+
FCREPO_TEST_PORT: 8080/fcrepo
|
76
|
+
NOKOGIRI_USE_SYSTEM_LIBRARIES: true
|
77
|
+
ENGINE_CART_RAILS_OPTIONS: --skip-git --skip-bundle --skip-listen --skip-spring --skip-yarn --skip-keeps --skip-action-cable --skip-coffee --skip-puma --skip-test
|
78
|
+
SPEC_OPTS: --profile 10 --format RspecJunitFormatter --out /tmp/test-results/rspec.xml --format progress
|
79
|
+
COVERALLS_PARALLEL: true
|
80
|
+
|
81
|
+
steps:
|
82
|
+
- attach_workspace:
|
83
|
+
at: ~/
|
84
|
+
# Update to the latest release of Chrome
|
85
|
+
- run: wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
|
86
|
+
- run: sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
|
87
|
+
- run: sudo apt-get update
|
88
|
+
- run: sudo apt-get -y install google-chrome-stable
|
89
|
+
- restore_cache:
|
90
|
+
keys:
|
91
|
+
- v1-test-app-{{ checksum "template.rb" }}--{{ checksum "Gemfile.lock" }}
|
92
|
+
|
93
|
+
- run:
|
94
|
+
name: Check dependencies
|
95
|
+
command: bundle check || bundle install
|
96
|
+
|
97
|
+
- run:
|
98
|
+
name: Generate test app
|
99
|
+
command: (git diff --name-only master | grep -qG 'generators\/hyrax') || bundle exec rake engine_cart:generate
|
100
|
+
|
80
101
|
- run:
|
81
|
-
name:
|
102
|
+
name: Ensure test app dependencies are installed
|
82
103
|
command: |
|
83
|
-
|
84
|
-
bundle install
|
104
|
+
cd .internal_test_app
|
105
|
+
bundle check || bundle install
|
85
106
|
|
86
107
|
- save_cache:
|
108
|
+
key: v1-test-app-{{ checksum "template.rb" }}--{{ checksum "Gemfile.lock" }}
|
87
109
|
paths:
|
88
|
-
-
|
89
|
-
|
110
|
+
- ".internal_test_app"
|
111
|
+
|
112
|
+
- persist_to_workspace:
|
113
|
+
root: ~/
|
114
|
+
paths:
|
115
|
+
- hyrax/*
|
116
|
+
- hyrax/**/*
|
117
|
+
|
118
|
+
test:
|
119
|
+
docker:
|
120
|
+
- image: circleci/ruby:2.6.0-node-browsers-legacy
|
121
|
+
- image: circleci/redis:4
|
122
|
+
- image: ualbertalib/docker-fcrepo4:4.7
|
123
|
+
environment:
|
124
|
+
CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
|
125
|
+
- image: solr:7-alpine
|
126
|
+
command: bin/solr -cloud -noprompt -f -p 8985
|
127
|
+
|
128
|
+
working_directory: ~/hyrax
|
129
|
+
parallelism: 2
|
130
|
+
|
131
|
+
environment: &spec_env
|
132
|
+
BUNDLE_PATH: vendor/bundle
|
133
|
+
BUNDLE_JOBS: 4
|
134
|
+
BUNDLE_RETRY: 3
|
135
|
+
RAILS_ENV: test
|
136
|
+
RACK_ENV: test
|
137
|
+
FCREPO_TEST_PORT: 8080/fcrepo
|
138
|
+
NOKOGIRI_USE_SYSTEM_LIBRARIES: true
|
139
|
+
ENGINE_CART_RAILS_OPTIONS: --skip-git --skip-bundle --skip-listen --skip-spring --skip-yarn --skip-keeps --skip-action-cable --skip-coffee --skip-puma --skip-test
|
140
|
+
SPEC_OPTS: --profile 10 --format RspecJunitFormatter --out /tmp/test-results/rspec.xml --format progress
|
141
|
+
COVERALLS_PARALLEL: true
|
142
|
+
|
143
|
+
steps: &run_specs
|
144
|
+
- attach_workspace:
|
145
|
+
at: ~/
|
146
|
+
|
147
|
+
- run:
|
148
|
+
name: Ensure top-level Gemfile.lock is valid
|
149
|
+
command: bundle check || bundle install
|
90
150
|
|
91
151
|
- run:
|
92
|
-
name:
|
93
|
-
command:
|
94
|
-
background: true
|
152
|
+
name: Uninstall chromedriver Gems
|
153
|
+
command: gem uninstall -ax chromedriver-helper
|
95
154
|
|
96
155
|
- run:
|
97
|
-
name:
|
156
|
+
name: Install chromedriver Gems
|
157
|
+
command: gem install chromedriver-helper
|
158
|
+
|
159
|
+
- run:
|
160
|
+
name: Load config into solr
|
98
161
|
command: |
|
99
162
|
cd .internal_test_app/solr/config
|
100
163
|
zip -1 -r solr_hyrax_config.zip ./*
|
@@ -107,18 +170,44 @@ jobs:
|
|
107
170
|
mkdir /tmp/test-results
|
108
171
|
bundle exec rspec $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
|
109
172
|
|
110
|
-
- run:
|
111
|
-
name: Clean dependencies
|
112
|
-
command: bundle clean
|
113
|
-
|
114
|
-
- save_cache:
|
115
|
-
paths:
|
116
|
-
- ./vendor/bundle
|
117
|
-
key: v1-dependencies-{{ .Branch }}-{{ checksum "./.internal_test_app/.generated_engine_cart" }}
|
118
|
-
|
119
173
|
# collect reports
|
120
174
|
- store_test_results:
|
121
175
|
path: /tmp/test-results
|
122
176
|
- store_artifacts:
|
123
177
|
path: /tmp/test-results
|
124
178
|
destination: test-results
|
179
|
+
|
180
|
+
test-ruby-2-5:
|
181
|
+
docker:
|
182
|
+
- image: circleci/ruby:2.5.3-node-browsers-legacy
|
183
|
+
- image: circleci/redis:4
|
184
|
+
- image: ualbertalib/docker-fcrepo4:4.7
|
185
|
+
environment:
|
186
|
+
CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
|
187
|
+
- image: solr:7-alpine
|
188
|
+
command: bin/solr -cloud -noprompt -f -p 8985
|
189
|
+
|
190
|
+
working_directory: ~/hyrax
|
191
|
+
parallelism: 2
|
192
|
+
environment: *spec_env
|
193
|
+
steps: *run_specs
|
194
|
+
|
195
|
+
workflows:
|
196
|
+
version: 2
|
197
|
+
ci:
|
198
|
+
jobs:
|
199
|
+
- bundle
|
200
|
+
- lint:
|
201
|
+
requires:
|
202
|
+
- bundle
|
203
|
+
- build:
|
204
|
+
requires:
|
205
|
+
- bundle
|
206
|
+
- test:
|
207
|
+
requires:
|
208
|
+
- build
|
209
|
+
- lint
|
210
|
+
- test-ruby-2-5:
|
211
|
+
requires:
|
212
|
+
- build
|
213
|
+
- lint
|
data/.travis.yml
CHANGED
@@ -3,7 +3,9 @@ sudo: required
|
|
3
3
|
dist: trusty
|
4
4
|
|
5
5
|
addons:
|
6
|
-
|
6
|
+
apt:
|
7
|
+
packages:
|
8
|
+
- chromium-chromedriver
|
7
9
|
cache:
|
8
10
|
bundler: true
|
9
11
|
|
@@ -31,3 +33,4 @@ services:
|
|
31
33
|
- redis-server
|
32
34
|
before_script:
|
33
35
|
- jdk_switcher use oraclejdk8
|
36
|
+
- ln -s /usr/lib/chromium-browser/chromedriver ~/bin/chromedriver
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -64,7 +64,7 @@ The Samvera community is here to help. Please see our [support guide](./.github/
|
|
64
64
|
# Getting started
|
65
65
|
|
66
66
|
This document contains instructions specific to setting up an app with __Hyrax
|
67
|
-
v3.0.0-
|
67
|
+
v3.0.0-beta2__. If you are looking for instructions on installing a different
|
68
68
|
version, be sure to select the appropriate branch or tag from the drop-down
|
69
69
|
menu above.
|
70
70
|
|
@@ -133,7 +133,7 @@ Note here that the following commands assume you're setting up Hyrax in a develo
|
|
133
133
|
|
134
134
|
First, you'll need a working Ruby installation. You can install this via your operating system's package manager -- you are likely to get farther with OSX, Linux, or UNIX than Windows but your mileage may vary -- but we recommend using a Ruby version manager such as [RVM](https://rvm.io/) or [rbenv](https://github.com/sstephenson/rbenv).
|
135
135
|
|
136
|
-
Hyrax supports Ruby 2.
|
136
|
+
Hyrax supports Ruby 2.4, 2.5, and 2.6. When starting a new project, we recommend using the latest Ruby 2.6 version.
|
137
137
|
|
138
138
|
## Redis
|
139
139
|
|
@@ -163,7 +163,7 @@ NOTE: The steps need to be done in order to create a new Hyrax based app.
|
|
163
163
|
Generate a new Rails application using the template.
|
164
164
|
|
165
165
|
```
|
166
|
-
rails _5.1.6_ new my_app -m https://raw.githubusercontent.com/samvera/hyrax/
|
166
|
+
rails _5.1.6_ new my_app -m https://raw.githubusercontent.com/samvera/hyrax/v3.0.0-beta2/template.rb
|
167
167
|
```
|
168
168
|
|
169
169
|
Generating a new Rails application using Hyrax's template above takes cares of a number of steps for you, including:
|
@@ -32,13 +32,9 @@ module Hyrax
|
|
32
32
|
# @return [Boolean]
|
33
33
|
#
|
34
34
|
# rubocop:disable Metrics/MethodLength
|
35
|
-
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
36
35
|
def assign_nested_attributes_for_collection(env)
|
37
36
|
attributes_collection = env.attributes.delete(:member_of_collections_attributes)
|
38
|
-
|
39
|
-
return assign_for_collection_ids(env) unless attributes_collection
|
40
|
-
|
41
|
-
emit_deprecation if env.attributes.delete(:member_of_collection_ids)
|
37
|
+
return true unless attributes_collection
|
42
38
|
|
43
39
|
return false unless
|
44
40
|
valid_membership?(env, collection_ids: attributes_collection.map { |_, attributes| attributes['id'] })
|
@@ -58,46 +54,6 @@ module Hyrax
|
|
58
54
|
true
|
59
55
|
end
|
60
56
|
# rubocop:enable Metrics/MethodLength
|
61
|
-
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
62
|
-
|
63
|
-
##
|
64
|
-
# @deprecated supports old :member_of_collection_ids arguments
|
65
|
-
def emit_deprecation
|
66
|
-
Deprecation.warn(self, ':member_of_collections_attributes and :member_of_collection_ids were both ' \
|
67
|
-
' passed. :member_of_collection_ids is ignored when both are passed and is ' \
|
68
|
-
'deprecated for removal in Hyrax 3.0.')
|
69
|
-
end
|
70
|
-
|
71
|
-
##
|
72
|
-
# @deprecated supports old :member_of_collection_ids arguments
|
73
|
-
def assign_for_collection_ids(env)
|
74
|
-
collection_ids = env.attributes.delete(:member_of_collection_ids)
|
75
|
-
|
76
|
-
return false unless valid_membership?(env, collection_ids: collection_ids)
|
77
|
-
|
78
|
-
if collection_ids
|
79
|
-
Deprecation.warn(self, ':member_of_collection_ids has been deprecated for removal in Hyrax 3.0. ' \
|
80
|
-
'use :member_of_collections_attributes instead.')
|
81
|
-
|
82
|
-
collection_ids = [] if collection_ids.empty?
|
83
|
-
other_collections = collections_without_edit_access(env)
|
84
|
-
|
85
|
-
collections = ::Collection.find(collection_ids)
|
86
|
-
raise "Tried to assign collections with ids: #{collection_ids}, but none were found" unless
|
87
|
-
collections
|
88
|
-
|
89
|
-
env.curation_concern.member_of_collections = collections
|
90
|
-
env.curation_concern.member_of_collections.concat(other_collections)
|
91
|
-
end
|
92
|
-
|
93
|
-
true
|
94
|
-
end
|
95
|
-
|
96
|
-
##
|
97
|
-
# @deprecated supports old :member_of_collection_ids arguments
|
98
|
-
def collections_without_edit_access(env)
|
99
|
-
env.curation_concern.member_of_collections.select { |coll| env.current_ability.cannot?(:edit, coll) }
|
100
|
-
end
|
101
57
|
|
102
58
|
# Adds the item to the ordered members so that it displays in the items
|
103
59
|
# along side the FileSets on the show page
|
@@ -140,17 +96,11 @@ module Hyrax
|
|
140
96
|
attributes_collection =
|
141
97
|
env.attributes.fetch(:member_of_collections_attributes) { nil }
|
142
98
|
|
143
|
-
if
|
144
|
-
|
145
|
-
return unless attributes_collection && attributes_collection.size == 1
|
99
|
+
# Determine if the work is being created in one and only one collection.
|
100
|
+
return unless attributes_collection && attributes_collection.size == 1
|
146
101
|
|
147
|
-
|
148
|
-
|
149
|
-
else
|
150
|
-
collection_ids = env.attributes.fetch(:member_of_collection_ids) { [] }
|
151
|
-
return unless collection_ids.size == 1
|
152
|
-
collection_id = collection_ids.first
|
153
|
-
end
|
102
|
+
# Extract the collection id from attributes_collection,
|
103
|
+
collection_id = attributes_collection.first.second['id']
|
154
104
|
|
155
105
|
# Do not apply permissions to work if collection type is configured not to
|
156
106
|
collection = ::Collection.find(collection_id)
|
@@ -42,13 +42,11 @@ module Hyrax
|
|
42
42
|
# Browse everything may also return a local file. And although it's in the
|
43
43
|
# url property, it may have spaces, and not be a valid URI.
|
44
44
|
class CreateWithRemoteFilesOrderedMembersActor < CreateWithRemoteFilesActor
|
45
|
-
attr_reader :ordered_members
|
46
|
-
|
47
45
|
# @param [HashWithIndifferentAccess] remote_files
|
48
46
|
# @return [TrueClass]
|
49
47
|
def attach_files(env, remote_files)
|
50
48
|
return true unless remote_files
|
51
|
-
|
49
|
+
env.store(self, :ordered_members, env.curation_concern.ordered_members.to_a)
|
52
50
|
remote_files.each do |file_info|
|
53
51
|
next if file_info.blank? || file_info[:url].blank?
|
54
52
|
# Escape any space characters, so that this is a legal URI
|
@@ -60,7 +58,7 @@ module Hyrax
|
|
60
58
|
auth_header = file_info.fetch(:auth_header, {})
|
61
59
|
create_file_from_url(env, uri, file_info[:file_name], auth_header)
|
62
60
|
end
|
63
|
-
add_ordered_members(env
|
61
|
+
add_ordered_members(env)
|
64
62
|
true
|
65
63
|
end
|
66
64
|
|
@@ -72,7 +70,7 @@ module Hyrax
|
|
72
70
|
actor.create_metadata(visibility: env.curation_concern.visibility)
|
73
71
|
actor.attach_to_work(env.curation_concern)
|
74
72
|
fs.save!
|
75
|
-
ordered_members << fs
|
73
|
+
env.retrieve(self, :ordered_members) << fs
|
76
74
|
if uri.scheme == 'file'
|
77
75
|
# Turn any %20 into spaces.
|
78
76
|
file_path = CGI.unescape(uri.path)
|
@@ -84,9 +82,9 @@ module Hyrax
|
|
84
82
|
end
|
85
83
|
|
86
84
|
# Add all file_sets as ordered_members in a single action
|
87
|
-
def add_ordered_members(
|
88
|
-
actor = Hyrax::Actors::OrderedMembersActor.new(ordered_members, user)
|
89
|
-
actor.attach_ordered_members_to_work(
|
85
|
+
def add_ordered_members(env)
|
86
|
+
actor = Hyrax::Actors::OrderedMembersActor.new(env.retrieve(self, :ordered_members), env.user)
|
87
|
+
actor.attach_ordered_members_to_work(env.curation_concern)
|
90
88
|
end
|
91
89
|
|
92
90
|
class_attribute :file_set_actor_class
|