sufia 7.2.0 → 7.3.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +2 -0
- data/.rubocop.yml +3 -0
- data/.rubocop_todo.yml +1 -2
- data/.travis.yml +0 -1
- data/Gemfile +2 -1
- data/README.md +23 -106
- data/app/actors/sufia/apply_permission_template_actor.rb +19 -0
- data/app/actors/sufia/create_with_remote_files_actor.rb +2 -2
- data/app/actors/sufia/default_admin_set_actor.rb +42 -0
- data/app/actors/sufia/interpret_visibility_actor.rb +115 -0
- data/app/assets/images/collection.png +0 -0
- data/app/assets/javascripts/sufia.js +6 -0
- data/app/assets/javascripts/sufia/admin/admin_set/participants.es6 +9 -0
- data/app/assets/javascripts/sufia/admin/admin_set/visibility.es6 +134 -0
- data/app/assets/javascripts/sufia/admin/admin_set_controls.es6 +11 -0
- data/app/assets/javascripts/sufia/app.js +27 -5
- data/app/assets/javascripts/sufia/autocomplete.es6 +15 -0
- data/app/assets/javascripts/sufia/autocomplete/work.es6 +29 -0
- data/app/assets/javascripts/sufia/dashboard_actions.js +2 -4
- data/app/assets/javascripts/sufia/save_work/save_work_control.es6 +14 -2
- data/app/assets/javascripts/sufia/save_work/uploaded_files.es6 +7 -2
- data/app/assets/javascripts/sufia/save_work/visibility_component.es6 +245 -4
- data/app/assets/javascripts/sufia/select_work_type.es6 +38 -0
- data/app/assets/javascripts/sufia/workflow_actions_affix.js +14 -0
- data/app/assets/stylesheets/sufia/_dashboard.scss +50 -29
- data/app/assets/stylesheets/sufia/_footer.scss +30 -0
- data/app/assets/stylesheets/sufia/_header.scss +3 -4
- data/app/assets/stylesheets/sufia/_home-page.scss +10 -8
- data/app/assets/stylesheets/sufia/_select_work_type.scss +43 -0
- data/app/assets/stylesheets/sufia/_sufia.scss +4 -1
- data/app/assets/stylesheets/sufia/_variables.scss +3 -0
- data/app/assets/stylesheets/sufia/admin.scss +66 -169
- data/app/assets/stylesheets/sufia/blacklight_gallery.scss +17 -0
- data/app/authorities/qa/authorities/find_works.rb +15 -0
- data/app/controllers/concerns/sufia/batch_edits_controller_behavior.rb +2 -1
- data/app/controllers/concerns/sufia/batch_uploads_controller_behavior.rb +26 -13
- data/app/controllers/concerns/sufia/collections_controller_behavior.rb +25 -0
- data/app/controllers/concerns/sufia/controller.rb +8 -0
- data/app/controllers/concerns/sufia/deny_access_override_behavior.rb +1 -1
- data/app/controllers/concerns/sufia/file_sets_controller_behavior.rb +5 -14
- data/app/controllers/concerns/sufia/homepage_controller_behavior.rb +2 -0
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +18 -7
- data/app/controllers/concerns/sufia/works_controller_behavior.rb +13 -10
- data/app/controllers/my/collections_controller.rb +5 -0
- data/app/controllers/my/shares_controller.rb +5 -0
- data/app/controllers/my/works_controller.rb +5 -0
- data/app/controllers/stats_controller.rb +1 -1
- data/app/controllers/sufia/admin/admin_sets_controller.rb +20 -2
- data/app/controllers/sufia/admin/permission_template_accesses_controller.rb +15 -0
- data/app/controllers/sufia/admin/permission_templates_controller.rb +29 -0
- data/app/controllers/sufia/admin_controller.rb +2 -0
- data/app/controllers/sufia/trophies_controller.rb +0 -2
- data/app/forms/sufia/forms/admin_set_form.rb +19 -0
- data/app/forms/sufia/forms/batch_edit_form.rb +16 -6
- data/app/forms/sufia/forms/batch_upload_form.rb +3 -2
- data/app/forms/sufia/forms/permission_template_form.rb +115 -0
- data/app/forms/sufia/forms/work_form.rb +6 -0
- data/app/helpers/batch_edits_helper.rb +1 -1
- data/app/helpers/sufia/citations_behavior.rb +0 -5
- data/app/helpers/sufia/citations_behaviors/formatters.rb +0 -1
- data/app/helpers/sufia/sufia_helper_behavior.rb +38 -6
- data/app/indexers/sufia/collection_indexer.rb +6 -0
- data/app/jobs/batch_create_job.rb +7 -15
- data/app/models/batch_upload_item.rb +2 -0
- data/app/models/concerns/sufia/ability.rb +12 -1
- data/app/models/sufia/permission_template.rb +102 -0
- data/app/models/sufia/permission_template_access.rb +18 -0
- data/app/presenters/sufia/admin_set_presenter.rb +1 -1
- data/app/presenters/sufia/model_icon.rb +7 -0
- data/app/presenters/sufia/select_type_list_presenter.rb +37 -0
- data/app/presenters/sufia/select_type_presenter.rb +35 -0
- data/app/presenters/sufia/work_show_presenter.rb +0 -2
- data/app/search_builders/collection_search_builder.rb +0 -2
- data/app/search_builders/sufia/admin_set_search_builder.rb +24 -0
- data/app/search_builders/sufia/catalog_search_builder.rb +10 -4
- data/app/search_builders/sufia/find_works_search_builder.rb +44 -0
- data/app/search_builders/sufia/my_search_builder_behavior.rb +0 -4
- data/app/search_builders/sufia/my_works_search_builder.rb +1 -1
- data/app/services/sufia/actor_factory.rb +6 -2
- data/app/services/sufia/admin_set_create_service.rb +22 -0
- data/app/services/sufia/admin_set_service.rb +46 -16
- data/app/services/sufia/collection_thumbnail_path_service.rb +10 -0
- data/app/services/sufia/workflow/abstract_notification.rb +39 -0
- data/app/services/sufia/workflow/changes_required_notification.rb +22 -0
- data/app/services/sufia/workflow/complete_notification.rb +22 -0
- data/app/services/sufia/workflow/pending_review_notification.rb +21 -0
- data/app/services/sufia/workflow/workflow_by_admin_set_strategy.rb +15 -0
- data/app/views/_masthead.html.erb +4 -4
- data/app/views/_toolbar.html.erb +31 -9
- data/app/views/_user_util_links.html.erb +7 -7
- data/app/views/batch_edits/edit.html.erb +24 -12
- data/app/views/catalog/_thumbnail_list_collection.html.erb +1 -1
- data/app/views/collections/_form.html.erb +2 -2
- data/app/views/collections/_media_display.html.erb +1 -1
- data/app/views/curation_concerns/base/_find_work_widget.html.erb +16 -0
- data/app/views/curation_concerns/base/_form.html.erb +6 -0
- data/app/views/curation_concerns/base/_form_child_work_relationships.html.erb +1 -1
- data/app/views/curation_concerns/base/_form_metadata.html.erb +1 -1
- data/app/views/curation_concerns/base/_form_parent_work_relationships.html.erb +43 -0
- data/app/views/curation_concerns/base/_form_progress.html.erb +7 -4
- data/app/views/curation_concerns/base/_form_relationships.html.erb +6 -6
- data/app/views/curation_concerns/base/_form_share.html.erb +1 -2
- data/app/views/curation_concerns/base/_guts4form.html.erb +1 -1
- data/app/views/curation_concerns/base/_social_media.html.erb +1 -1
- data/app/views/curation_concerns/base/_workflow_actions_widget.erb +3 -0
- data/app/views/curation_concerns/base/edit.html.erb +1 -1
- data/app/views/curation_concerns/base/new.html.erb +1 -1
- data/app/views/curation_concerns/base/show.html.erb +4 -1
- data/app/views/curation_concerns/file_sets/_show_actions.html.erb +0 -3
- data/app/views/dashboard/_create_work_action.html.erb +20 -0
- data/app/views/dashboard/_index_partials/_heading_actions.html.erb +9 -22
- data/app/views/layouts/admin.html.erb +8 -68
- data/app/views/layouts/curation_concerns/1_column.html.erb +4 -31
- data/app/views/layouts/homepage.html.erb +15 -45
- data/app/views/layouts/sufia-dashboard.html.erb +1 -36
- data/app/views/layouts/sufia.html.erb +49 -0
- data/app/views/my/_document_list.html.erb +1 -1
- data/app/views/my/_facet_limit.html.erb +2 -2
- data/app/views/my/_index_partials/_default_group.html.erb +10 -10
- data/app/views/my/_index_partials/_list_collections.html.erb +1 -1
- data/app/views/my/_sort_and_per_page.html.erb +8 -8
- data/app/views/records/edit_fields/_rights.html.erb +0 -1
- data/app/views/shared/_footer.html.erb +1 -1
- data/app/views/shared/_select_work_type_modal.html.erb +34 -0
- data/app/views/sufia/admin/_collections.html.erb +31 -0
- data/app/views/sufia/admin/_sidebar.html.erb +35 -23
- data/app/views/sufia/admin/admin_sets/_form.html.erb +38 -15
- data/app/views/sufia/admin/admin_sets/_form_metadata.html.erb +2 -0
- data/app/views/sufia/admin/admin_sets/_form_participant_table.html.erb +21 -0
- data/app/views/sufia/admin/admin_sets/_form_participants.html.erb +68 -0
- data/app/views/sufia/admin/admin_sets/_form_visibility.html.erb +58 -0
- data/app/views/sufia/admin/admin_sets/index.html.erb +29 -33
- data/app/views/sufia/admin/admin_sets/show.html.erb +3 -0
- data/app/views/sufia/admin/show.html.erb +22 -19
- data/app/views/sufia/batch_uploads/_form.html.erb +2 -1
- data/app/views/sufia/homepage/index.html.erb +11 -3
- data/app/views/sufia/uploads/_js_templates.html.erb +15 -11
- data/app/views/users/_user_row.html.erb +10 -0
- data/app/views/users/index.html.erb +1 -12
- data/config/features.rb +2 -0
- data/config/locales/sufia.en.yml +122 -37
- data/config/routes.rb +4 -1
- data/db/migrate/20161021175854_create_permission_template.rb +11 -0
- data/db/migrate/20161021180154_create_permission_template_access.rb +11 -0
- data/db/migrate/20161116222307_add_release_to_permission_templates.rb +6 -0
- data/lib/generators/sufia/install_generator.rb +12 -3
- data/lib/generators/sufia/templates/catalog_controller.rb +3 -13
- data/lib/generators/sufia/templates/workflow.json.erb +65 -0
- data/lib/generators/sufia/upgrade700_generator.rb +1 -1
- data/lib/generators/sufia/work/templates/locale.en.yml.erb +37 -0
- data/lib/generators/sufia/{work_generator.rb → work/work_generator.rb} +25 -5
- data/lib/sufia.rb +0 -1
- data/lib/sufia/engine.rb +7 -0
- data/lib/sufia/move_all_works_to_admin_set.rb +8 -0
- data/lib/sufia/version.rb +1 -1
- data/lib/tasks/migrate.rake +8 -0
- data/spec/actors/sufia/apply_permission_template_actor_spec.rb +64 -0
- data/spec/actors/sufia/create_with_remote_files_actor_spec.rb +8 -0
- data/spec/actors/sufia/default_admin_set_actor_spec.rb +43 -0
- data/spec/actors/sufia/interpret_visibility_actor_spec.rb +266 -0
- data/spec/authorities/qa/authorities/find_works_spec.rb +55 -0
- data/spec/controllers/batch_edits_controller_spec.rb +1 -6
- data/spec/controllers/citations_controller_spec.rb +49 -10
- data/spec/controllers/collections_controller_spec.rb +39 -0
- data/spec/controllers/curation_concerns/generic_works_controller_spec.rb +22 -1
- data/spec/controllers/dashboard_controller_spec.rb +0 -8
- data/spec/controllers/depositors_controller_spec.rb +2 -2
- data/spec/controllers/downloads_controller_spec.rb +2 -2
- data/spec/controllers/my/collections_controller_spec.rb +5 -0
- data/spec/controllers/my/shares_controller_spec.rb +5 -0
- data/spec/controllers/my/works_controller_spec.rb +5 -0
- data/spec/controllers/stats_controller_spec.rb +1 -1
- data/spec/controllers/sufia/admin/admin_sets_controller_spec.rb +33 -5
- data/spec/controllers/sufia/admin/permission_template_accesses_controller_spec.rb +36 -0
- data/spec/controllers/sufia/admin/permission_templates_controller_spec.rb +46 -0
- data/spec/controllers/sufia/admin_controller_spec.rb +6 -0
- data/spec/controllers/sufia/batch_uploads_controller_spec.rb +40 -42
- data/spec/controllers/sufia/homepage_controller_spec.rb +14 -0
- data/spec/controllers/sufia/trophies_controller_spec.rb +17 -4
- data/spec/controllers/users_controller_spec.rb +13 -4
- data/spec/factories/permission_template_accesses.rb +5 -0
- data/spec/factories/permission_templates.rb +5 -0
- data/spec/factories/sipity_entities.rb +7 -0
- data/spec/factories/users.rb +4 -0
- data/spec/factories/workflow_states.rb +6 -0
- data/spec/factories/workflows.rb +5 -0
- data/spec/features/admin_admin_set_spec.rb +6 -4
- data/spec/features/batch_edit_spec.rb +0 -1
- data/spec/features/collection_spec.rb +4 -4
- data/spec/features/edit_work_spec.rb +1 -0
- data/spec/features/work_show_spec.rb +10 -0
- data/spec/forms/sufia/forms/admin_set_form_spec.rb +2 -1
- data/spec/forms/sufia/forms/batch_edit_form_spec.rb +30 -0
- data/spec/forms/sufia/forms/permission_template_form_spec.rb +196 -0
- data/spec/forms/sufia/forms/work_form_spec.rb +35 -1
- data/spec/helpers/batch_edits_helper_spec.rb +4 -4
- data/spec/helpers/blacklight_helper_spec.rb +1 -1
- data/spec/helpers/sufia_helper_spec.rb +39 -7
- data/spec/indexers/sufia/collection_indexer_spec.rb +12 -0
- data/spec/javascripts/autocomplete_spec.js.coffee +46 -6
- data/spec/javascripts/visibility_component_spec.js +491 -0
- data/spec/jobs/batch_create_job_spec.rb +27 -28
- data/spec/lib/sufia/arkivo_spec.rb +14 -0
- data/spec/lib/sufia/controlled_vocabulary/importer/downloader_spec.rb +31 -0
- data/spec/lib/sufia/move_all_works_to_admin_set_spec.rb +13 -0
- data/spec/lib/sufia/zotero_spec.rb +8 -0
- data/spec/models/sufia/ability_spec.rb +54 -14
- data/spec/models/sufia/permission_template_spec.rb +144 -0
- data/spec/models/sufia/user_usage_stats_spec.rb +8 -2
- data/spec/presenters/sufia/homepage_presenter_spec.rb +1 -1
- data/spec/presenters/sufia/select_type_list_presenter_spec.rb +26 -0
- data/spec/presenters/sufia/select_type_presenter_spec.rb +21 -0
- data/spec/search_builder/sufia/admin_set_search_builder_spec.rb +57 -0
- data/spec/search_builder/sufia/catalog_search_builder_spec.rb +40 -14
- data/spec/search_builder/sufia/find_works_search_builder_spec.rb +60 -0
- data/spec/search_builder/sufia/my_shares_search_builder_spec.rb +4 -1
- data/spec/search_builder/sufia/single_admin_set_search_builder_spec.rb +5 -1
- data/spec/services/sufia/actor_factory_spec.rb +13 -5
- data/spec/services/sufia/admin_set_create_service_spec.rb +27 -0
- data/spec/services/sufia/admin_set_service_spec.rb +104 -17
- data/spec/services/sufia/workflow/changes_required_notification_spec.rb +32 -0
- data/spec/services/sufia/workflow/complete_notification_spec.rb +32 -0
- data/spec/services/sufia/workflow/pending_review_notification_spec.rb +31 -0
- data/spec/services/sufia/workflow/workflow_by_admin_set_strategy_spec.rb +22 -0
- data/spec/spec_helper.rb +24 -5
- data/spec/support/proxies.rb +1 -1
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -0
- data/spec/views/_toolbar.html.erb_spec.rb +23 -6
- data/spec/views/batch_edits/edit.html.erb_spec.rb +7 -1
- data/spec/views/collections/_form_for_select_collection.html.erb_spec.rb +1 -3
- data/spec/views/curation_concerns/base/_find_work_widget.html.erb_spec.rb +22 -0
- data/spec/views/curation_concerns/base/_form.html.erb_spec.rb +7 -0
- data/spec/views/curation_concerns/base/_form_child_work_relationships.html.erb_spec.rb +1 -0
- data/spec/views/curation_concerns/base/_form_parent_work_relationships.html.erb_spec.rb +114 -0
- data/spec/views/curation_concerns/base/_form_progress.html.erb_spec.rb +3 -2
- data/spec/views/curation_concerns/base/_social_media.html.erb_spec.rb +1 -1
- data/spec/views/curation_concerns/base/edit.html.erb_spec.rb +1 -1
- data/spec/views/curation_concerns/base/show.html.erb_spec.rb +5 -1
- data/spec/views/curation_concerns/file_sets/_show_actions.html.erb_spec.rb +2 -2
- data/spec/views/dashboard/create_work_action.html.erb_spec.rb +27 -0
- data/spec/views/dashboard/index_spec.rb +7 -2
- data/spec/views/my/_sort_and_per_page.html.erb_spec.rb +33 -0
- data/spec/views/shared/select_work_type_modal.html.erb_spec.rb +32 -0
- data/spec/views/sufia/admin/admin_sets/_form.html.erb_spec.rb +18 -0
- data/spec/views/sufia/admin/admin_sets/_form_participants.html.erb_spec.rb +13 -0
- data/spec/views/sufia/admin/admin_sets/_form_visibility.html.erb_spec.rb +23 -0
- data/spec/views/sufia/batch_uploads/_form.html.erb_spec.rb +2 -12
- data/spec/views/sufia/homepage/index.html.erb_spec.rb +29 -8
- data/sufia.gemspec +5 -6
- data/tasks/sufia-dev.rake +6 -10
- data/template.rb +15 -0
- metadata +140 -28
- data/app/assets/stylesheets/sufia/widgets.css +0 -288
- data/app/helpers/sufia/citations_behaviors/formatters/endnote_formatter.rb +0 -49
- data/app/models/domain_term.rb +0 -4
- data/app/views/citations/file.html.erb +0 -0
- data/app/views/records/_rights_modal.html.erb +0 -1
- data/db/migrate/20160328222160_create_local_authorities.rb +0 -50
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Note: test app generates multiple work types (concerns) now
|
4
|
+
describe Sufia::SelectTypeListPresenter do
|
5
|
+
let(:instance) { described_class.new(user) }
|
6
|
+
let(:user) { nil }
|
7
|
+
|
8
|
+
describe "#many?" do
|
9
|
+
subject { instance.many? }
|
10
|
+
|
11
|
+
context 'without a logged in user' do
|
12
|
+
it { is_expected.to be false }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'with a logged in user' do
|
16
|
+
let(:user) { create(:user) }
|
17
|
+
it { is_expected.to be true }
|
18
|
+
context "if authorized_models returns only one" do
|
19
|
+
before do
|
20
|
+
allow(instance).to receive(:authorized_models).and_return([double])
|
21
|
+
end
|
22
|
+
it { is_expected.to be false }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Sufia::SelectTypePresenter do
|
4
|
+
let(:instance) { described_class.new(model) }
|
5
|
+
let(:model) { GenericWork }
|
6
|
+
|
7
|
+
describe "#icon_class" do
|
8
|
+
subject { instance.icon_class }
|
9
|
+
it { is_expected.to eq 'fa fa-file-text-o' }
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#description" do
|
13
|
+
subject { instance.description }
|
14
|
+
it { is_expected.to eq 'Generic work works' }
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#name" do
|
18
|
+
subject { instance.name }
|
19
|
+
it { is_expected.to eq 'Generic Work' }
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sufia::AdminSetSearchBuilder do
|
4
|
+
let(:context) do
|
5
|
+
double(blacklight_config: CatalogController.blacklight_config,
|
6
|
+
current_ability: ability)
|
7
|
+
end
|
8
|
+
let(:ability) do
|
9
|
+
instance_double(Ability,
|
10
|
+
admin?: false,
|
11
|
+
user_groups: [],
|
12
|
+
current_user: user)
|
13
|
+
end
|
14
|
+
let(:user) { create(:user) }
|
15
|
+
let(:builder) { described_class.new(context, access) }
|
16
|
+
subject { builder.to_h }
|
17
|
+
|
18
|
+
context "when searching for read access" do
|
19
|
+
let(:access) { :read }
|
20
|
+
it 'is successful' do
|
21
|
+
expect(subject['fq']).to eq ["edit_access_person_ssim:#{user.user_key} OR discover_access_person_ssim:#{user.user_key} OR read_access_person_ssim:#{user.user_key}",
|
22
|
+
"{!terms f=has_model_ssim}AdminSet",
|
23
|
+
"-suppressed_bsi:true"]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "when searching for deposit access" do
|
28
|
+
let(:access) { :deposit }
|
29
|
+
let(:permission_template1) { create(:permission_template, admin_set_id: 7) }
|
30
|
+
let(:permission_template2) { create(:permission_template, admin_set_id: 8) }
|
31
|
+
let(:permission_template3) { create(:permission_template, admin_set_id: 9) }
|
32
|
+
|
33
|
+
before do
|
34
|
+
create(:permission_template_access,
|
35
|
+
permission_template: permission_template1,
|
36
|
+
agent_type: 'user',
|
37
|
+
agent_id: user.user_key,
|
38
|
+
access: 'deposit')
|
39
|
+
create(:permission_template_access,
|
40
|
+
permission_template: permission_template2,
|
41
|
+
agent_type: 'user',
|
42
|
+
agent_id: user.user_key,
|
43
|
+
access: 'manage')
|
44
|
+
create(:permission_template_access,
|
45
|
+
permission_template: permission_template3,
|
46
|
+
agent_type: 'user',
|
47
|
+
agent_id: user.user_key,
|
48
|
+
access: 'view')
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'is successful' do
|
52
|
+
expect(subject['fq']).to eq ["{!terms f=id}7,8",
|
53
|
+
"{!terms f=has_model_ssim}AdminSet",
|
54
|
+
"-suppressed_bsi:true"]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -1,22 +1,48 @@
|
|
1
1
|
describe Sufia::CatalogSearchBuilder do
|
2
|
-
let(:
|
3
|
-
let(:
|
2
|
+
let(:context) { double }
|
3
|
+
let(:builder) { described_class.new(context).with(blacklight_params) }
|
4
|
+
let(:solr_params) { Blacklight::Solr::Request.new }
|
5
|
+
let(:blacklight_params) { { q: user_query } }
|
6
|
+
let(:user_query) { "find me" }
|
4
7
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
describe "#show_works_or_works_that_contain_files" do
|
9
|
+
subject { builder.show_works_or_works_that_contain_files(solr_params) }
|
10
|
+
|
11
|
+
context "with a user query" do
|
12
|
+
it "creates a valid solr join for works and files" do
|
13
|
+
subject
|
14
|
+
expect(solr_params[:user_query]).to eq user_query
|
15
|
+
expect(solr_params[:q]).to eq "{!lucene}_query_:\"{!dismax v=$user_query}\" _query_:\"{!join from=id to=file_set_ids_ssim}{!dismax v=$user_query}\""
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context "without a user query" do
|
20
|
+
let(:blacklight_params) { {} }
|
21
|
+
it "does not modify the query" do
|
22
|
+
subject
|
23
|
+
expect(solr_params[:user_query]).to be_nil
|
24
|
+
expect(solr_params[:q]).to be_nil
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "when doing a fielded search" do
|
29
|
+
let(:blacklight_params) { { q: user_query, search_field: 'depositor' } }
|
30
|
+
# Blacklight sets up these values when we've done a fielded search.
|
31
|
+
# Here we're ensuring they aren't wiped out
|
32
|
+
let(:solr_params) { Blacklight::Solr::Request.new("q" => "{!qf=depositor_ssim pf=depositor_ssim}\"#{user_query}\"") }
|
33
|
+
it "does not modify the query" do
|
34
|
+
subject
|
35
|
+
expect(solr_params[:user_query]).to be_nil
|
36
|
+
expect(solr_params[:q]).to eq '{!qf=depositor_ssim pf=depositor_ssim}"find me"'
|
37
|
+
end
|
11
38
|
end
|
12
39
|
end
|
13
40
|
|
14
|
-
|
15
|
-
|
16
|
-
it "
|
17
|
-
|
18
|
-
expect(solr_params[:
|
19
|
-
expect(solr_params[:q]).to be_nil
|
41
|
+
describe "#show_only_active_records" do
|
42
|
+
subject { builder.show_only_active_records(solr_params) }
|
43
|
+
it "includes suppressed switch" do
|
44
|
+
subject
|
45
|
+
expect(solr_params[:fq]).to eq ["-suppressed_bsi:true"]
|
20
46
|
end
|
21
47
|
end
|
22
48
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sufia::FindWorksSearchBuilder do
|
4
|
+
let(:controller) { Qa::TermsController.new }
|
5
|
+
let(:user) { create(:user) }
|
6
|
+
let(:ability) { instance_double(Ability, admin?: false, user_groups: [], current_user: user) }
|
7
|
+
let(:q) { "foo" }
|
8
|
+
let(:params) { ActionController::Parameters.new(q: q, id: work.id, user: user.email, controller: "qa/terms", action: "search", vocab: "find_works") }
|
9
|
+
|
10
|
+
let(:context) do
|
11
|
+
double(current_ability: ability,
|
12
|
+
current_user: user,
|
13
|
+
params: params)
|
14
|
+
end
|
15
|
+
let!(:work) { create(:generic_work, :public, title: ['foo'], user: user) }
|
16
|
+
|
17
|
+
let(:builder) { described_class.new(context) }
|
18
|
+
let(:solr_params) { Blacklight::Solr::Request.new }
|
19
|
+
|
20
|
+
describe "#filter_on_title" do
|
21
|
+
subject { builder.filter_on_title(solr_params) }
|
22
|
+
it "is successful" do
|
23
|
+
subject
|
24
|
+
expect(solr_params[:fq]).to eq [ActiveFedora::SolrQueryBuilder.construct_query(title_tesim: q)]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#show_only_other_works" do
|
29
|
+
subject { builder.show_only_other_works(solr_params) }
|
30
|
+
it "is successful" do
|
31
|
+
subject
|
32
|
+
expect(solr_params[:fq]).to eq ["-" + ActiveFedora::SolrQueryBuilder.construct_query_for_ids([work.id])]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#show_only_works_not_child" do
|
37
|
+
subject { builder.show_only_works_not_child(solr_params) }
|
38
|
+
it "is successful" do
|
39
|
+
subject
|
40
|
+
ids = ActiveFedora::SolrService.query("{!field f=id}#{work.id}", fl: "member_ids_ssim").flat_map { |x| x.fetch("member_ids_ssim", []) }
|
41
|
+
expect(solr_params[:fq]).to eq ["-" + ActiveFedora::SolrQueryBuilder.construct_query_for_ids([ids])]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "#show_only_works_not_parent" do
|
46
|
+
subject { builder.show_only_works_not_parent(solr_params) }
|
47
|
+
it "is successful" do
|
48
|
+
subject
|
49
|
+
expect(solr_params[:fq]).to eq ["-" + ActiveFedora::SolrQueryBuilder.construct_query(member_ids_ssim: work.id)]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#only_works?" do
|
54
|
+
subject { builder.only_works? }
|
55
|
+
it "is successful" do
|
56
|
+
subject
|
57
|
+
expect(subject). to eq true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -10,6 +10,8 @@ describe Sufia::MySharesSearchBuilder do
|
|
10
10
|
end
|
11
11
|
let(:builder) { described_class.new(scope) }
|
12
12
|
|
13
|
+
let(:solr_params) { { q: user_query } }
|
14
|
+
|
13
15
|
before do
|
14
16
|
allow(builder).to receive(:gated_discovery_filters).and_return(["access_filter1", "access_filter2"])
|
15
17
|
allow(ActiveFedora::SolrQueryBuilder).to receive(:construct_query_for_rel)
|
@@ -21,7 +23,8 @@ describe Sufia::MySharesSearchBuilder do
|
|
21
23
|
|
22
24
|
it "filters things we have access to in which we are not the depositor" do
|
23
25
|
expect(subject).to eq ["access_filter1 OR access_filter2",
|
24
|
-
"{!terms f=has_model_ssim}GenericWork,Collection",
|
26
|
+
"{!terms f=has_model_ssim}GenericWork,Atlas,Collection",
|
27
|
+
"-suppressed_bsi:true",
|
25
28
|
"-depositor"]
|
26
29
|
end
|
27
30
|
end
|
@@ -12,6 +12,10 @@ RSpec.describe Sufia::SingleAdminSetSearchBuilder do
|
|
12
12
|
expect(builder).to receive(:find_one)
|
13
13
|
end
|
14
14
|
subject { builder.with(id: '123').query.fetch('fq') }
|
15
|
-
it
|
15
|
+
it do
|
16
|
+
is_expected.to match_array ["",
|
17
|
+
"-suppressed_bsi:true",
|
18
|
+
"{!terms f=has_model_ssim}AdminSet"]
|
19
|
+
end
|
16
20
|
end
|
17
21
|
end
|
@@ -1,18 +1,22 @@
|
|
1
|
-
describe Sufia::ActorFactory do
|
1
|
+
describe Sufia::ActorFactory, :no_clean do
|
2
2
|
let(:work) { GenericWork.new }
|
3
3
|
let(:user) { double }
|
4
4
|
|
5
5
|
describe '.stack_actors' do
|
6
6
|
subject { described_class.stack_actors(work) }
|
7
7
|
it do
|
8
|
-
is_expected.to eq [
|
8
|
+
is_expected.to eq [CurationConcerns::OptimisticLockValidator,
|
9
|
+
Sufia::CreateWithRemoteFilesActor,
|
9
10
|
Sufia::CreateWithFilesActor,
|
10
11
|
CurationConcerns::Actors::AddToCollectionActor,
|
11
12
|
CurationConcerns::Actors::AddToWorkActor,
|
12
13
|
CurationConcerns::Actors::AssignRepresentativeActor,
|
13
14
|
CurationConcerns::Actors::AttachFilesActor,
|
14
15
|
CurationConcerns::Actors::ApplyOrderActor,
|
15
|
-
|
16
|
+
Sufia::InterpretVisibilityActor,
|
17
|
+
Sufia::DefaultAdminSetActor,
|
18
|
+
CurationConcerns::Actors::InitializeWorkflowActor,
|
19
|
+
Sufia::ApplyPermissionTemplateActor,
|
16
20
|
CurationConcerns::Actors::GenericWorkActor]
|
17
21
|
end
|
18
22
|
end
|
@@ -21,16 +25,20 @@ describe Sufia::ActorFactory do
|
|
21
25
|
subject { described_class.build(work, user) }
|
22
26
|
it "has the correct stack frames" do
|
23
27
|
expect(subject.more_actors).to eq [
|
28
|
+
Sufia::CreateWithRemoteFilesActor,
|
24
29
|
Sufia::CreateWithFilesActor,
|
25
30
|
CurationConcerns::Actors::AddToCollectionActor,
|
26
31
|
CurationConcerns::Actors::AddToWorkActor,
|
27
32
|
CurationConcerns::Actors::AssignRepresentativeActor,
|
28
33
|
CurationConcerns::Actors::AttachFilesActor,
|
29
34
|
CurationConcerns::Actors::ApplyOrderActor,
|
30
|
-
|
35
|
+
Sufia::InterpretVisibilityActor,
|
36
|
+
Sufia::DefaultAdminSetActor,
|
37
|
+
CurationConcerns::Actors::InitializeWorkflowActor,
|
38
|
+
Sufia::ApplyPermissionTemplateActor,
|
31
39
|
CurationConcerns::Actors::GenericWorkActor
|
32
40
|
]
|
33
|
-
expect(subject.first_actor_class).to eq
|
41
|
+
expect(subject.first_actor_class).to eq CurationConcerns::OptimisticLockValidator
|
34
42
|
end
|
35
43
|
end
|
36
44
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Sufia::AdminSetCreateService do
|
4
|
+
let(:admin_set) { AdminSet.new(title: ['test']) }
|
5
|
+
let(:service) { described_class.new(admin_set, user) }
|
6
|
+
let(:user) { create(:user) }
|
7
|
+
|
8
|
+
describe "#create" do
|
9
|
+
subject { service.create }
|
10
|
+
|
11
|
+
context "when the admin_set is valid" do
|
12
|
+
it "is successful" do
|
13
|
+
expect do
|
14
|
+
expect(subject).to be true
|
15
|
+
end.to change { admin_set.persisted? }.from(false).to(true)
|
16
|
+
expect(admin_set.read_groups).to eq ['public']
|
17
|
+
expect(admin_set.edit_groups).to eq ['admin']
|
18
|
+
expect(admin_set.creator).to eq [user.user_key]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context "when the admin_set is invalid" do
|
23
|
+
let(:admin_set) { AdminSet.new } # Missing title
|
24
|
+
it { is_expected.to be false }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,27 +1,114 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe Sufia::AdminSetService do
|
4
|
-
let(:
|
5
|
-
let(:
|
3
|
+
RSpec.describe Sufia::AdminSetService, :no_clean do
|
4
|
+
let(:controller) { ::CatalogController.new }
|
5
|
+
let(:context) do
|
6
|
+
double(current_ability: Ability.new(user),
|
7
|
+
repository: controller.repository,
|
8
|
+
blacklight_config: controller.blacklight_config)
|
9
|
+
end
|
10
|
+
let(:service) { described_class.new(context) }
|
6
11
|
let(:user) { create(:user) }
|
7
12
|
|
8
|
-
describe
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
describe '#search_results_with_work_count' do
|
14
|
+
let(:access) { :read }
|
15
|
+
subject { service.search_results_with_work_count(access) }
|
16
|
+
let(:documents) { [doc1, doc2, doc3] }
|
17
|
+
let(:doc1) { SolrDocument.new(id: 'xyz123') }
|
18
|
+
let(:doc2) { SolrDocument.new(id: 'yyx123') }
|
19
|
+
let(:doc3) { SolrDocument.new(id: 'zxy123') }
|
20
|
+
let(:connection) { instance_double(RSolr::Client) }
|
21
|
+
let(:results) do
|
22
|
+
{ 'facet_counts' =>
|
23
|
+
{
|
24
|
+
'facet_fields' =>
|
25
|
+
{
|
26
|
+
'isPartOf_ssim' => [doc1.id, 8, doc2.id, 2]
|
27
|
+
}
|
28
|
+
} }
|
29
|
+
end
|
30
|
+
|
31
|
+
before do
|
32
|
+
allow(service).to receive(:search_results).and_return(documents)
|
33
|
+
allow(ActiveFedora::SolrService.instance).to receive(:conn).and_return(connection)
|
34
|
+
allow(connection).to receive(:get).with("select", params: { fq: "{!terms f=isPartOf_ssim}xyz123,yyx123,zxy123",
|
35
|
+
"facet.field" => "isPartOf_ssim" }).and_return(results)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns rows with document in the first column and count in the second column" do
|
39
|
+
expect(subject).to eq [[doc1, 8], [doc2, 2], [doc3, nil]]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#select_options" do
|
44
|
+
subject { service.select_options }
|
45
|
+
|
46
|
+
context "with permission_template visibility" do
|
47
|
+
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'Public Set') }
|
48
|
+
let(:solr_doc2) { instance_double(SolrDocument, id: '345', to_s: 'Private Set') }
|
49
|
+
let!(:permission_template1) { create(:permission_template, admin_set_id: '123', visibility: 'open') }
|
50
|
+
let!(:permission_template2) { create(:permission_template, admin_set_id: '345', visibility: 'restricted') }
|
51
|
+
|
52
|
+
before do
|
53
|
+
allow(service).to receive(:search_results)
|
54
|
+
.with(:read)
|
55
|
+
.and_return([solr_doc1, solr_doc2])
|
56
|
+
end
|
57
|
+
|
58
|
+
it do
|
59
|
+
is_expected.to eq [['Public Set', '123', { 'data-visibility' => 'open' }],
|
60
|
+
['Private Set', '345', { 'data-visibility' => 'restricted' }]]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "with permission_template release_date" do
|
65
|
+
let(:today) { Time.zone.today }
|
66
|
+
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'Fixed Release Date Set') }
|
67
|
+
let(:solr_doc2) { instance_double(SolrDocument, id: '345', to_s: 'No Delay Set') }
|
68
|
+
let(:solr_doc3) { instance_double(SolrDocument, id: '567', to_s: 'One Year Max Embargo Set') }
|
69
|
+
let(:solr_doc4) { instance_double(SolrDocument, id: '789', to_s: 'Release Before Date Set') }
|
70
|
+
let!(:permission_template1) { create(:permission_template, admin_set_id: '123', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_FIXED, release_date: today + 2.days) }
|
71
|
+
let!(:permission_template2) { create(:permission_template, admin_set_id: '345', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_NO_DELAY) }
|
72
|
+
let!(:permission_template3) { create(:permission_template, admin_set_id: '567', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_1_YEAR) }
|
73
|
+
let!(:permission_template4) { create(:permission_template, admin_set_id: '789', release_period: Sufia::PermissionTemplate::RELEASE_TEXT_VALUE_BEFORE_DATE, release_date: today + 1.month) }
|
74
|
+
|
75
|
+
before do
|
76
|
+
allow(service).to receive(:search_results)
|
77
|
+
.with(:read)
|
78
|
+
.and_return([solr_doc1, solr_doc2, solr_doc3, solr_doc4])
|
79
|
+
end
|
80
|
+
|
81
|
+
it do
|
82
|
+
is_expected.to eq [['Fixed Release Date Set', '123', { 'data-release-date' => today + 2.days }],
|
83
|
+
['No Delay Set', '345', { 'data-release-date' => today }],
|
84
|
+
['One Year Max Embargo Set', '567', { 'data-release-date' => today + 1.year, 'data-release-before-date' => true }],
|
85
|
+
['Release Before Date Set', '789', { 'data-release-date' => today + 1.month, 'data-release-before-date' => true }]]
|
19
86
|
end
|
20
87
|
end
|
21
88
|
|
22
|
-
context "
|
23
|
-
let(:
|
24
|
-
|
89
|
+
context "with empty permission_template" do
|
90
|
+
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'Empty Template Set') }
|
91
|
+
let!(:permission_template1) { create(:permission_template, admin_set_id: '567') }
|
92
|
+
|
93
|
+
before do
|
94
|
+
allow(service).to receive(:search_results)
|
95
|
+
.with(:read)
|
96
|
+
.and_return([solr_doc1])
|
97
|
+
end
|
98
|
+
|
99
|
+
it { is_expected.to eq [['Empty Template Set', '123', {}]] }
|
100
|
+
end
|
101
|
+
|
102
|
+
context "with no permission_template" do
|
103
|
+
let(:solr_doc1) { instance_double(SolrDocument, id: '123', to_s: 'No Template Set') }
|
104
|
+
|
105
|
+
before do
|
106
|
+
allow(service).to receive(:search_results)
|
107
|
+
.with(:read)
|
108
|
+
.and_return([solr_doc1])
|
109
|
+
end
|
110
|
+
|
111
|
+
it { is_expected.to eq [['No Template Set', '123', {}]] }
|
25
112
|
end
|
26
113
|
end
|
27
114
|
end
|