worthwhile 0.0.1.alpha → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/.rspec +1 -0
- data/.travis.yml +19 -0
- data/Gemfile +7 -11
- data/README.md +8 -12
- data/Rakefile +17 -2
- data/app/actors/concerns/worthwhile/manages_embargoes_actor.rb +79 -0
- data/app/actors/curation_concern/base_actor.rb +68 -0
- data/app/actors/curation_concern/generic_file_actor.rb +40 -0
- data/app/actors/curation_concern/generic_work_actor.rb +92 -0
- data/app/actors/curation_concern/linked_resource_actor.rb +4 -0
- data/app/assets/images/default.png +0 -0
- data/app/assets/images/nope.png +0 -0
- data/app/assets/javascripts/.gitkeep +0 -0
- data/app/assets/javascripts/modernizr.js +3 -0
- data/app/assets/javascripts/worthwhile/.gitkeep +0 -0
- data/app/assets/javascripts/worthwhile/accept_contributor_agreement.js +15 -0
- data/app/assets/javascripts/worthwhile/application.js +18 -0
- data/app/assets/javascripts/worthwhile/browse_everything_implement.js +7 -0
- data/app/assets/javascripts/worthwhile/embargoes.js +17 -0
- data/app/assets/javascripts/worthwhile/facet_mine.js +22 -0
- data/app/assets/javascripts/worthwhile/help_modal.js +36 -0
- data/app/assets/javascripts/worthwhile/link_groups.js.coffee +123 -0
- data/app/assets/javascripts/worthwhile/link_users.js.coffee +126 -0
- data/app/assets/javascripts/worthwhile/manage_repeating_fields.js +74 -0
- data/app/assets/javascripts/worthwhile/proxy_rights.js.coffee +95 -0
- data/app/assets/javascripts/worthwhile/proxy_submission.js +23 -0
- data/app/assets/javascripts/worthwhile/select_works.js.coffee +20 -0
- data/app/assets/javascripts/worthwhile/worthwhile.js +45 -0
- data/app/assets/stylesheets/worthwhile.css.scss +23 -0
- data/app/assets/stylesheets/worthwhile/_global-variables.css.scss +5 -0
- data/app/assets/stylesheets/worthwhile/_modules.css.scss +14 -0
- data/app/assets/stylesheets/worthwhile/_positioning.css.scss +138 -0
- data/app/assets/stylesheets/worthwhile/_theme.css.scss +46 -0
- data/app/assets/stylesheets/worthwhile/_typography.css.scss +142 -0
- data/app/assets/stylesheets/worthwhile/_variables_bootstrap.css.scss +7 -0
- data/app/assets/stylesheets/worthwhile/_worthwhile.css.scss +7 -0
- data/app/assets/stylesheets/worthwhile/downloads.css.scss +3 -0
- data/app/assets/stylesheets/worthwhile/help_requests.css.scss +3 -0
- data/app/assets/stylesheets/worthwhile/modules/accessibility.css.scss +50 -0
- data/app/assets/stylesheets/worthwhile/modules/accordion.css.scss +33 -0
- data/app/assets/stylesheets/worthwhile/modules/attributes.css.scss +26 -0
- data/app/assets/stylesheets/worthwhile/modules/classify_work.css.scss +100 -0
- data/app/assets/stylesheets/worthwhile/modules/collections.css.scss +42 -0
- data/app/assets/stylesheets/worthwhile/modules/embargoes.css.scss +15 -0
- data/app/assets/stylesheets/worthwhile/modules/emphatic_action_area.css.scss +14 -0
- data/app/assets/stylesheets/worthwhile/modules/forms.css.scss +116 -0
- data/app/assets/stylesheets/worthwhile/modules/multi_value_fields.css.scss +52 -0
- data/app/assets/stylesheets/worthwhile/modules/pagination.css.scss +4 -0
- data/app/assets/stylesheets/worthwhile/modules/search_results.css.scss +55 -0
- data/app/assets/stylesheets/worthwhile/modules/site_actions.css.scss +53 -0
- data/app/assets/stylesheets/worthwhile/modules/site_search.css.scss +46 -0
- data/app/controllers/catalog_controller.rb +3 -0
- data/app/controllers/collections_controller.rb +59 -0
- data/app/controllers/concerns/worthwhile/application_controller_behavior.rb +23 -0
- data/app/controllers/concerns/worthwhile/catalog_controller.rb +347 -0
- data/app/controllers/concerns/worthwhile/curation_concern_controller.rb +131 -0
- data/app/controllers/concerns/worthwhile/files_controller.rb +149 -0
- data/app/controllers/concerns/worthwhile/manages_embargoes.rb +22 -0
- data/app/controllers/concerns/worthwhile/parent_container.rb +31 -0
- data/app/controllers/concerns/worthwhile/themed_layout_controller.rb +31 -0
- data/app/controllers/concerns/worthwhile/without_namespace.rb +15 -0
- data/app/controllers/curation_concern/generic_files_controller.rb +6 -0
- data/app/controllers/curation_concern/generic_works_controller.rb +6 -0
- data/app/controllers/curation_concern/linked_resources_controller.rb +68 -0
- data/app/controllers/curation_concern/permissions_controller.rb +19 -0
- data/app/controllers/downloads_controller.rb +4 -0
- data/app/controllers/embargoes_controller.rb +44 -0
- data/app/controllers/leases_controller.rb +34 -0
- data/app/controllers/registrations_controller.rb +20 -0
- data/app/controllers/sessions_controller.rb +4 -0
- data/app/controllers/worthwhile/application_controller.rb +7 -0
- data/app/controllers/worthwhile/classify_concerns_controller.rb +35 -0
- data/app/datastreams/generic_work_metadata.rb +3 -0
- data/app/datastreams/worthwhile/generic_work_rdf_properties.rb +57 -0
- data/app/datastreams/worthwhile/properties_datastream.rb +28 -0
- data/app/helpers/curate/collections_helper.rb +133 -0
- data/app/helpers/worthwhile/ability_helper.rb +46 -0
- data/app/helpers/worthwhile/attribute_helper.rb +67 -0
- data/app/helpers/worthwhile/catalog_helper.rb +38 -0
- data/app/helpers/worthwhile/collections_helper.rb +19 -0
- data/app/helpers/worthwhile/embargo_helper.rb +17 -0
- data/app/helpers/worthwhile/generic_file_helper.rb +19 -0
- data/app/helpers/worthwhile/lease_helper.rb +18 -0
- data/app/helpers/worthwhile/main_app_helpers.rb +14 -0
- data/app/helpers/worthwhile/render_constraints_helper.rb +42 -0
- data/app/helpers/worthwhile/search_paths_helper.rb +13 -0
- data/app/helpers/worthwhile/thumbnail_helper.rb +11 -0
- data/app/helpers/worthwhile/title_helper.rb +23 -0
- data/app/helpers/worthwhile/url_helper.rb +16 -0
- data/app/inputs/multi_value_input.rb +72 -0
- data/app/models/collection.rb +15 -0
- data/app/models/concerns/curation_concern/collection_model.rb +62 -0
- data/app/models/concerns/curation_concern/curatable.rb +77 -0
- data/app/models/concerns/curation_concern/has_representative.rb +14 -0
- data/app/models/concerns/curation_concern/human_readable_type.rb +23 -0
- data/app/models/concerns/curation_concern/with_basic_metadata.rb +49 -0
- data/app/models/concerns/curation_concern/with_editors.rb +44 -0
- data/app/models/concerns/curation_concern/with_generic_files.rb +23 -0
- data/app/models/concerns/curation_concern/with_linked_resources.rb +21 -0
- data/app/models/concerns/curation_concern/work.rb +24 -0
- data/app/models/concerns/worthwhile/ability.rb +34 -0
- data/app/models/concerns/worthwhile/generic_file/versioned_content.rb +18 -0
- data/app/models/concerns/worthwhile/generic_file_base.rb +64 -0
- data/app/models/concerns/worthwhile/solr_document_behavior.rb +140 -0
- data/app/models/generic_work.rb +5 -0
- data/app/models/worthwhile/classify_concern.rb +47 -0
- data/app/models/worthwhile/content_version.rb +23 -0
- data/app/models/worthwhile/contributor_agreement.rb +23 -0
- data/app/models/worthwhile/generic_file.rb +5 -0
- data/app/models/worthwhile/linked_resource.rb +41 -0
- data/app/models/worthwhile/quick_classification_query.rb +31 -0
- data/app/services/worthwhile/curation_concern.rb +21 -0
- data/app/services/worthwhile/embargo_service.rb +26 -0
- data/app/services/worthwhile/lease_service.rb +23 -0
- data/app/views/catalog/_action_menu_partials/_collection.html.erb +27 -0
- data/app/views/catalog/_action_menu_partials/_default.html.erb +27 -0
- data/app/views/catalog/_document.html.erb +3 -0
- data/app/views/catalog/_document_list.html.erb +5 -0
- data/app/views/catalog/_home_text.html.erb +8 -0
- data/app/views/catalog/_index_default.html.erb +17 -0
- data/app/views/catalog/_index_header_list_default.html.erb +17 -0
- data/app/views/catalog/_navbar.html.erb +12 -0
- data/app/views/catalog/_show_partials/_default.html.erb +22 -0
- data/app/views/catalog/_show_partials/_default_details.html.erb +15 -0
- data/app/views/catalog/_show_partials/_facets.html.erb +52 -0
- data/app/views/catalog/index.html.erb +48 -0
- data/app/views/collections/_batch_edits_actions.html.erb +3 -0
- data/app/views/collections/_button_for_creating_empty_collection.html.erb +3 -0
- data/app/views/collections/_collection.html.erb +1 -0
- data/app/views/collections/_dashboard_document_list.html.erb +6 -0
- data/app/views/collections/_document_list.html.erb +7 -0
- data/app/views/collections/_edit_actions.html.erb +5 -0
- data/app/views/collections/_edit_descriptions.html.erb +20 -0
- data/app/views/collections/_form.html.erb +26 -0
- data/app/views/collections/_form_for_select_collection.html.erb +34 -0
- data/app/views/collections/_form_permission.html.erb +36 -0
- data/app/views/collections/_form_required_information.html.erb +11 -0
- data/app/views/collections/_identifier_and_action.html.erb +15 -0
- data/app/views/collections/_media_display.html.erb +1 -0
- data/app/views/collections/_paginate.html.erb +6 -0
- data/app/views/collections/_search_collection_dashboard_form.html.erb +10 -0
- data/app/views/collections/_show_actions.html.erb +8 -0
- data/app/views/collections/_show_descriptions.html.erb +10 -0
- data/app/views/collections/_show_fields.html.erb +0 -0
- data/app/views/collections/_single_item_action_fields.html.erb +6 -0
- data/app/views/collections/_sort_and_per_page.html.erb +29 -0
- data/app/views/collections/_view_type_group.html.erb +13 -0
- data/app/views/collections/edit.html.erb +22 -0
- data/app/views/collections/new.html.erb +15 -0
- data/app/views/collections/show.html.erb +24 -0
- data/app/views/curate/collections/_add_to_collection_modal.html.erb +15 -0
- data/app/views/curate/collections/_button_remove_from_collection.html.erb +6 -0
- data/app/views/curate/collections/_form_to_add_member.html.erb +27 -0
- data/app/views/curate/collections/add_member_form.html.erb +6 -0
- data/app/views/curation_concern/base/_attributes.html.erb +25 -0
- data/app/views/curation_concern/base/_collections.html.erb +26 -0
- data/app/views/curation_concern/base/_form.html.erb +27 -0
- data/app/views/curation_concern/base/_form_additional_information.html.erb +9 -0
- data/app/views/curation_concern/base/_form_content_license.html.erb +16 -0
- data/app/views/curation_concern/base/_form_contributor_agreement.html.erb +29 -0
- data/app/views/curation_concern/base/_form_descriptive_fields.erb +23 -0
- data/app/views/curation_concern/base/_form_files_and_links.html.erb +29 -0
- data/app/views/curation_concern/base/_form_permission.html.erb +52 -0
- data/app/views/curation_concern/base/_form_permission_embargo.html.erb +6 -0
- data/app/views/curation_concern/base/_form_permission_lease.html.erb +6 -0
- data/app/views/curation_concern/base/_form_permission_under_embargo.html.erb +16 -0
- data/app/views/curation_concern/base/_form_permission_under_lease.html.erb +18 -0
- data/app/views/curation_concern/base/_form_representative_image.html.erb +13 -0
- data/app/views/curation_concern/base/_form_required_information.html.erb +11 -0
- data/app/views/curation_concern/base/_form_supplementary_fields.html.erb +15 -0
- data/app/views/curation_concern/base/_legally_binding_text.html.erb +33 -0
- data/app/views/curation_concern/base/_related_files.html.erb +24 -0
- data/app/views/curation_concern/base/_related_resources.html.erb +40 -0
- data/app/views/curation_concern/base/_representative_media.html.erb +8 -0
- data/app/views/curation_concern/base/edit.html.erb +15 -0
- data/app/views/curation_concern/base/new.html.erb +14 -0
- data/app/views/curation_concern/base/show.html.erb +32 -0
- data/app/views/curation_concern/base/unauthorized.html.erb +3 -0
- data/app/views/curation_concern/generic_files/_form.html.erb +35 -0
- data/app/views/curation_concern/generic_files/_media_display.html.erb +20 -0
- data/app/views/curation_concern/generic_files/edit.html.erb +5 -0
- data/app/views/curation_concern/generic_files/show.html.erb +15 -0
- data/app/views/curation_concern/generic_works/_generic_work.html.erb +3 -0
- data/app/views/curation_concern/linked_resources/_form.html.erb +11 -0
- data/app/views/curation_concern/linked_resources/edit.html.erb +5 -0
- data/app/views/curation_concern/linked_resources/new.html.erb +5 -0
- data/app/views/curation_concern/permissions/confirm.html.erb +13 -0
- data/app/views/curation_concern/worthwhile/generic_files/_actions.html.erb +16 -0
- data/app/views/curation_concern/worthwhile/generic_files/_generic_file.html.erb +12 -0
- data/app/views/embargoes/_embargo_history.html.erb +7 -0
- data/app/views/embargoes/_list_active_embargoes.html.erb +16 -0
- data/app/views/embargoes/_list_deactivated_embargoes.html.erb +10 -0
- data/app/views/embargoes/_list_expired_active_embargoes.html.erb +44 -0
- data/app/views/embargoes/edit.html.erb +43 -0
- data/app/views/embargoes/index.html.erb +18 -0
- data/app/views/layouts/boilerplate.html.erb +22 -0
- data/app/views/layouts/common_objects.html.erb +36 -0
- data/app/views/layouts/curate_nd.html.erb +33 -0
- data/app/views/layouts/curate_nd/1_column.html.erb +22 -0
- data/app/views/layouts/curate_nd/2_column.html.erb +26 -0
- data/app/views/layouts/curate_nd/catalog.html.erb +38 -0
- data/app/views/layouts/curate_nd/dashboard.html.erb +22 -0
- data/app/views/leases/_lease_history.html.erb +7 -0
- data/app/views/leases/_list_active_leases.html.erb +16 -0
- data/app/views/leases/_list_deactivated_leases.html.erb +4 -0
- data/app/views/leases/_list_expired_active_leases.html.erb +38 -0
- data/app/views/leases/edit.html.erb +43 -0
- data/app/views/leases/index.html.erb +18 -0
- data/app/views/shared/_add_content.html.erb +32 -0
- data/app/views/shared/_brand_bar.html.erb +10 -0
- data/app/views/shared/_flash_message.html.erb +17 -0
- data/app/views/shared/_footer.html.erb +10 -0
- data/app/views/shared/_ga.html.erb +6 -0
- data/app/views/shared/_header.html.erb +12 -0
- data/app/views/shared/_my_actions.html.erb +21 -0
- data/app/views/shared/_site_actions.html.erb +7 -0
- data/app/views/shared/_site_search.html.erb +12 -0
- data/app/views/shared/_title_bar.html.erb +16 -0
- data/app/views/worthwhile/classify_concerns/new.html.erb +27 -0
- data/app/workers/visibility_copy_worker.rb +29 -0
- data/config/initializers/simple_form.rb +31 -0
- data/config/locales/sufia.en.yml +26 -0
- data/config/locales/worthwhile.en.yml +68 -0
- data/config/routes.rb +4 -0
- data/lib/generators/worthwhile/install_generator.rb +74 -0
- data/lib/generators/worthwhile/templates/worthwhile.css.scss +3 -0
- data/lib/generators/worthwhile/templates/worthwhile.js +1 -0
- data/lib/generators/worthwhile/templates/worthwhile_config.rb +3 -0
- data/lib/generators/worthwhile/templates/worthwhile_helper.rb +4 -0
- data/lib/worthwhile.rb +3 -1
- data/lib/worthwhile/configuration.rb +74 -0
- data/lib/worthwhile/controller_resource.rb +10 -0
- data/lib/worthwhile/engine.rb +20 -0
- data/lib/worthwhile/rails/routes.rb +78 -0
- data/lib/worthwhile/spec_support.rb +10 -0
- data/lib/worthwhile/version.rb +1 -1
- data/spec/abilities/generic_file_abilities_spec.rb +62 -0
- data/spec/abilities/generic_work_abilities_spec.rb +58 -0
- data/spec/actors/curation_concern/generic_work_actor_spec.rb +215 -0
- data/spec/actors/curation_concern/linked_resource_actor_spec.rb +36 -0
- data/spec/actors/worthwile/manages_embargoes_actor_spec.rb +95 -0
- data/spec/controllers/catalog_controller_spec.rb +114 -0
- data/spec/controllers/collections_controller_spec.rb +216 -0
- data/spec/controllers/curation_concern/generic_files_controller_spec.rb +258 -0
- data/spec/controllers/curation_concern/generic_works_controller_spec.rb +171 -0
- data/spec/controllers/curation_concern/linked_resources_controller_spec.rb +123 -0
- data/spec/controllers/curation_concern/permissions_controller_spec.rb +29 -0
- data/spec/controllers/downloads_controller_spec.rb +53 -0
- data/spec/controllers/embargoes_controller_spec.rb +107 -0
- data/spec/controllers/leases_controller_spec.rb +95 -0
- data/spec/controllers/worthwhile/classify_concerns_controller_spec.rb +35 -0
- data/spec/factories/collections_factory.rb +21 -0
- data/spec/factories/create_curation_concern.rb +3 -0
- data/spec/factories/generic_files.rb +18 -0
- data/spec/factories/generic_works.rb +37 -0
- data/spec/factories/linked_resources_factory.rb +18 -0
- data/spec/factories/users.rb +15 -0
- data/spec/features/add_external_link_spec.rb +25 -0
- data/spec/features/add_file_spec.rb +28 -0
- data/spec/features/collection_spec.rb +238 -0
- data/spec/features/embargo_spec.rb +45 -0
- data/spec/features/lease_spec.rb +43 -0
- data/spec/features/update_file_spec.rb +28 -0
- data/spec/fixtures/files/image.png +0 -0
- data/spec/helpers/catalog_helper_spec.rb +58 -0
- data/spec/helpers/configuration_helper_spec.rb +13 -0
- data/spec/helpers/render_constraints_helper_spec.rb +19 -0
- data/spec/helpers/thumbnail_helper_spec.rb +21 -0
- data/spec/helpers/url_helper_spec.rb +19 -0
- data/spec/matchers.rb +24 -0
- data/spec/matchers/metadata_field_matchers.rb +28 -0
- data/spec/models/collection_spec.rb +136 -0
- data/spec/models/curation_concern/collection_model_spec.rb +50 -0
- data/spec/models/curation_concern/work_spec.rb +30 -0
- data/spec/models/generic_work_spec.rb +24 -0
- data/spec/models/worthwhile/content_version_spec.rb +27 -0
- data/spec/models/worthwhile/generic_file_spec.rb +77 -0
- data/spec/models/worthwhile/linked_resource_spec.rb +76 -0
- data/spec/routing/worthwhile/routes_spec.rb +23 -0
- data/spec/services/embargo_service_spec.rb +38 -0
- data/spec/services/lease_service_spec.rb +37 -0
- data/spec/spec_helper.rb +30 -5
- data/spec/support/controllers/engine_helpers.rb +7 -0
- data/spec/support/curation_concern/factory_helpers.rb +14 -0
- data/spec/support/features.rb +19 -0
- data/spec/support/features/fixture_file_upload.rb +14 -0
- data/spec/support/features/session_helpers.rb +41 -0
- data/spec/support/shared/shared_examples_has_dc_metadata.rb +17 -0
- data/spec/support/shared/shared_examples_is_a_curation_concern_model.rb +40 -0
- data/spec/support/shared/shared_examples_is_embargoable.rb +8 -0
- data/spec/support/shared/shared_examples_with_access_rights.rb +63 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +8 -29
- data/spec/views/curation_concern/base/_attributes.html.erb_spec.rb +25 -0
- data/spec/views/curation_concern/base/show.html.erb_spec.rb +25 -0
- data/spec/views/shared/_add_content.html.erb_spec.rb +42 -0
- data/spec/views/shared/_my_actions.html.erb_spec.rb +23 -0
- data/spec/workers/visibility_copy_worker_spec.rb +68 -0
- data/vendor/assets/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/vendor/assets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/vendor/assets/javascripts/handlebars.js +2278 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.autocomplete.js +602 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.core.js +356 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect-highlight.js +50 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect.js +1276 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.menu.js +610 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.position.js +498 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.widget.js +528 -0
- data/vendor/assets/javascripts/jquery.tokeninput.js +1061 -0
- data/vendor/assets/stylesheets/jquery-ui-lightness.css +474 -0
- data/vendor/assets/stylesheets/token-input-facebook.css +122 -0
- data/vendor/assets/stylesheets/token-input-mac.css +204 -0
- data/vendor/assets/stylesheets/token-input.css +127 -0
- data/worthwhile.gemspec +9 -3
- metadata +469 -9
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe LeasesController do
|
|
4
|
+
let(:user) { FactoryGirl.create(:user) }
|
|
5
|
+
let(:a_work) { FactoryGirl.create(:generic_work, user: user) }
|
|
6
|
+
let(:not_my_work) { FactoryGirl.create(:generic_work) }
|
|
7
|
+
|
|
8
|
+
before { sign_in user }
|
|
9
|
+
|
|
10
|
+
describe "#index" do
|
|
11
|
+
context "when I am NOT a repository manager" do
|
|
12
|
+
it "should redirect" do
|
|
13
|
+
get :index
|
|
14
|
+
expect(response).to redirect_to root_path
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
context "when I am a repository manager" do
|
|
18
|
+
before { allow_any_instance_of(User).to receive(:groups).and_return(['admin']) }
|
|
19
|
+
it "should show me the page" do
|
|
20
|
+
get :index
|
|
21
|
+
expect(response).to be_success
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "#edit" do
|
|
27
|
+
context "when I do not have edit permissions for the object" do
|
|
28
|
+
it "should redirect" do
|
|
29
|
+
get :edit, id: not_my_work
|
|
30
|
+
expect(response.status).to eq 401
|
|
31
|
+
expect(response).to render_template :unauthorized
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
context "when I have permission to edit the object" do
|
|
35
|
+
it "should show me the page" do
|
|
36
|
+
get :edit, id: a_work
|
|
37
|
+
expect(response).to be_success
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
describe "#destroy" do
|
|
45
|
+
context "when I do not have edit permissions for the object" do
|
|
46
|
+
it "should deny access" do
|
|
47
|
+
get :destroy, id: not_my_work
|
|
48
|
+
expect(response.status).to eq 401
|
|
49
|
+
expect(response).to render_template :unauthorized
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
context "when I have permission to edit the object" do
|
|
54
|
+
before do
|
|
55
|
+
expect(ActiveFedora::Base).to receive(:find).with(a_work.pid).and_return(a_work)
|
|
56
|
+
a_work.visibility_during_lease = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
|
|
57
|
+
a_work.visibility_after_lease = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
|
58
|
+
a_work.lease_expiration_date = release_date.to_s
|
|
59
|
+
expect(Sufia.queue).to receive(:push).with(an_instance_of(VisibilityCopyWorker))
|
|
60
|
+
get :destroy, id: a_work
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
context "with an active lease" do
|
|
64
|
+
let(:release_date) { Date.today+2 }
|
|
65
|
+
it "should deactivate the lease without updating visibility and redirect" do
|
|
66
|
+
expect(a_work.visibility).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
|
|
67
|
+
expect(response).to redirect_to edit_lease_path(a_work)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
context "with an expired lease" do
|
|
72
|
+
let(:release_date) { Date.today-2 }
|
|
73
|
+
|
|
74
|
+
it "should deactivate the lease, update the visibility and redirect" do
|
|
75
|
+
expect(a_work.visibility).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
|
76
|
+
expect(response).to redirect_to edit_lease_path(a_work)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
describe "#update" do
|
|
83
|
+
context "when I have permission to edit the object" do
|
|
84
|
+
before do
|
|
85
|
+
expect(ActiveFedora::Base).to receive(:find).with(a_work.pid).and_return(a_work)
|
|
86
|
+
end
|
|
87
|
+
it "should deactivate lease and redirect" do
|
|
88
|
+
expect(a_work).to receive(:deactivate_lease!)
|
|
89
|
+
expect(a_work).to receive(:save)
|
|
90
|
+
patch :update, batch_document_ids: [a_work.pid]
|
|
91
|
+
expect(response).to redirect_to leases_path
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Worthwhile::ClassifyConcernsController do
|
|
4
|
+
routes { Worthwhile::Engine.routes }
|
|
5
|
+
let(:user) { FactoryGirl.create(:user) }
|
|
6
|
+
|
|
7
|
+
describe '#new' do
|
|
8
|
+
it 'requires authentication' do
|
|
9
|
+
get :new
|
|
10
|
+
expect(response).to redirect_to(main_app.user_session_path)
|
|
11
|
+
end
|
|
12
|
+
it 'renders when signed in' do
|
|
13
|
+
sign_in(user)
|
|
14
|
+
get :new
|
|
15
|
+
expect(response).to be_successful
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe '#create' do
|
|
20
|
+
it 'redirect to login page if user is not logged in' do
|
|
21
|
+
post :create, classify: { curation_concern_type: 'GenericWork' }
|
|
22
|
+
expect(response).to redirect_to(main_app.user_session_path)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'requires authentication' do
|
|
26
|
+
sign_in(user)
|
|
27
|
+
# Had to stub the actual handling of curation_concern paths since those paths live outside the engine while the path to this controller lives inside the engine.
|
|
28
|
+
new_curation_concern_generic_work_path = "/stub/path"
|
|
29
|
+
subject.should_receive(:new_polymorphic_path).with([:curation_concern, GenericWork]).and_return(new_curation_concern_generic_work_path)
|
|
30
|
+
post :create, classify_concern: { curation_concern_type: 'GenericWork' }
|
|
31
|
+
expect(response).to redirect_to(new_curation_concern_generic_work_path)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
factory :collection do
|
|
3
|
+
ignore do
|
|
4
|
+
user {FactoryGirl.create(:user)}
|
|
5
|
+
end
|
|
6
|
+
sequence(:title) {|n| "Title #{n}"}
|
|
7
|
+
before(:create) { |work, evaluator|
|
|
8
|
+
work.apply_depositor_metadata(evaluator.user.user_key)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
factory :public_collection do
|
|
12
|
+
visibility Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
factory :private_collection do
|
|
16
|
+
visibility Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
factory :generic_file, class: Worthwhile::GenericFile do
|
|
3
|
+
factory :file_with_work do
|
|
4
|
+
ignore do
|
|
5
|
+
user { FactoryGirl.create(:user) }
|
|
6
|
+
content nil
|
|
7
|
+
end
|
|
8
|
+
batch { FactoryGirl.create(:generic_work, user: user) }
|
|
9
|
+
|
|
10
|
+
after(:build) do |file, evaluator|
|
|
11
|
+
file.apply_depositor_metadata(evaluator.user.user_key)
|
|
12
|
+
if evaluator.content
|
|
13
|
+
file.add_file(evaluator.content.read, 'content', evaluator.content.original_filename)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
factory :work, aliases: [:generic_work, :private_generic_work], class: GenericWork do
|
|
3
|
+
ignore do
|
|
4
|
+
user { FactoryGirl.create(:user) }
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
title ["Test title"]
|
|
8
|
+
visibility Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
|
9
|
+
|
|
10
|
+
before(:create) do |work, evaluator|
|
|
11
|
+
work.apply_depositor_metadata(evaluator.user.user_key)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
factory :public_generic_work do
|
|
16
|
+
visibility Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
factory :work_with_files do
|
|
20
|
+
after(:build) { |work, _| 2.times { work.generic_files << FactoryGirl.build(:generic_file) }}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
factory :embargoed_work do
|
|
24
|
+
after(:build) { |work, _| work.apply_embargo(Date.tomorrow.to_s, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC) }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
factory :embargoed_work_with_files do
|
|
28
|
+
after(:build) { |work, _| 2.times { work.generic_files << FactoryGirl.build(:generic_file) }}
|
|
29
|
+
after(:build) { |work, _| work.apply_embargo(Date.tomorrow.to_s, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC) }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
factory :leased_work_with_files do
|
|
33
|
+
after(:build) { |work, _| 2.times { work.generic_files << FactoryGirl.build(:generic_file) }}
|
|
34
|
+
after(:build) { |work, _| work.apply_lease(Date.tomorrow.to_s, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE) }
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
factory :linked_resource, class: Worthwhile::LinkedResource do
|
|
3
|
+
ignore do
|
|
4
|
+
user {FactoryGirl.create(:user)}
|
|
5
|
+
end
|
|
6
|
+
visibility Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
|
|
7
|
+
url 'http://www.youtube.com/watch?v=oHg5SJYRHA0'
|
|
8
|
+
batch { FactoryGirl.create(:generic_work, user: user) }
|
|
9
|
+
before(:create) { |file, evaluator|
|
|
10
|
+
file.apply_depositor_metadata(evaluator.user.user_key)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
factory :private_linked_resource do
|
|
14
|
+
visibility Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
factory :user do
|
|
3
|
+
sequence(:email) {|n| "email-#{srand}@test.com" }
|
|
4
|
+
password 'a password'
|
|
5
|
+
password_confirmation 'a password'
|
|
6
|
+
factory :admin do
|
|
7
|
+
after(:build) do |user|
|
|
8
|
+
def user.groups
|
|
9
|
+
["admin"]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Adding a work with external links" do
|
|
4
|
+
let(:user) { FactoryGirl.create(:user) }
|
|
5
|
+
before do
|
|
6
|
+
sign_in user
|
|
7
|
+
visit '/'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "adds external links" do
|
|
11
|
+
click_link 'New Generic Work'
|
|
12
|
+
fill_in 'External link', with: 'http://dp.la'
|
|
13
|
+
fill_in 'Title', with: 'DPLA link'
|
|
14
|
+
check 'I have read and accept the contributor license agreement'
|
|
15
|
+
click_button 'Create Generic work'
|
|
16
|
+
expect(page).to have_link 'http://dp.la'
|
|
17
|
+
|
|
18
|
+
click_link 'Add an External Link'
|
|
19
|
+
fill_in 'External link', with: 'http://loc.gov'
|
|
20
|
+
click_button 'Add External Link to Generic Work'
|
|
21
|
+
expect(page).to have_link 'http://dp.la'
|
|
22
|
+
expect(page).to have_link 'http://loc.gov'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Add an attached file" do
|
|
4
|
+
let(:user) { FactoryGirl.create(:user) }
|
|
5
|
+
let!(:work) { FactoryGirl.create(:work, user: user) }
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
sign_in user
|
|
9
|
+
|
|
10
|
+
# stub out characterization. Travis doesn't have fits installed, and it's not relevant to the test.
|
|
11
|
+
s2 = double('resque message')
|
|
12
|
+
expect(CharacterizeJob).to receive(:new).and_return(s2)
|
|
13
|
+
expect(Sufia.queue).to receive(:push).with(s2).once
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should update the file" do
|
|
17
|
+
visit "/concern/generic_works/#{work.id}"
|
|
18
|
+
click_link 'Attach a File'
|
|
19
|
+
|
|
20
|
+
attach_file("Upload a file", fixture_file_path('files/image.png'))
|
|
21
|
+
click_button "Attach to Generic Work"
|
|
22
|
+
|
|
23
|
+
within '.related_files' do
|
|
24
|
+
expect(page).to have_link "image.png"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
include Worthwhile::SearchPathsHelper
|
|
3
|
+
|
|
4
|
+
describe 'collection' do
|
|
5
|
+
def create_collection(title, description)
|
|
6
|
+
click_link 'Add a Collection'
|
|
7
|
+
fill_in('Title', with: title)
|
|
8
|
+
fill_in('collection_description', with: description)
|
|
9
|
+
click_button("Create Collection")
|
|
10
|
+
expect(page).to have_content 'Items in this Collection'
|
|
11
|
+
expect(page).to have_content title
|
|
12
|
+
expect(page).to have_content description
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
let(:title1) {"Test Collection 1"}
|
|
16
|
+
let(:description1) {"Description for collection 1 we are testing."}
|
|
17
|
+
let(:title2) {"Test Collection 2"}
|
|
18
|
+
let(:description2) {"Description for collection 2 we are testing."}
|
|
19
|
+
|
|
20
|
+
let(:user) { FactoryGirl.create(:user, email: 'user1@example.com') }
|
|
21
|
+
let(:user_key) { user.user_key }
|
|
22
|
+
|
|
23
|
+
before(:all) do
|
|
24
|
+
@old_resque_inline_value = Resque.inline
|
|
25
|
+
Resque.inline = true
|
|
26
|
+
|
|
27
|
+
@gws = []
|
|
28
|
+
(0..12).each do |x|
|
|
29
|
+
@gws[x] = GenericWork.new.tap do |f|
|
|
30
|
+
f.title = ["title #{x}"]
|
|
31
|
+
f.apply_depositor_metadata('user1@example.com')
|
|
32
|
+
f.save!
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
@gw1 = @gws[0]
|
|
36
|
+
@gw2 = @gws[1]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
after(:all) do
|
|
40
|
+
Resque.inline = @old_resque_inline_value
|
|
41
|
+
Batch.destroy_all
|
|
42
|
+
GenericWork.destroy_all
|
|
43
|
+
Collection.destroy_all
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe 'create collection' do
|
|
47
|
+
before do
|
|
48
|
+
sign_in user
|
|
49
|
+
visit search_path_for_my_collections
|
|
50
|
+
end
|
|
51
|
+
it "should create a collection" do
|
|
52
|
+
title = "Genealogies of the American West"
|
|
53
|
+
description = "All about Genealogies of the American West"
|
|
54
|
+
click_link 'Add a Collection'
|
|
55
|
+
fill_in('Title', with: title)
|
|
56
|
+
fill_in('collection_description', with: description)
|
|
57
|
+
click_button("Create Collection")
|
|
58
|
+
expect(page).to have_content 'Items in this Collection'
|
|
59
|
+
expect(page).to have_content title
|
|
60
|
+
expect(page).to have_content description
|
|
61
|
+
end
|
|
62
|
+
it "should create collection from the dashboard and include works" do
|
|
63
|
+
skip "batch collection operations (add/remove)"
|
|
64
|
+
create_collection(title2, description2)
|
|
65
|
+
|
|
66
|
+
visit search_path_for_my_works
|
|
67
|
+
first('input#check_all').click
|
|
68
|
+
click_button "Add to Collection" # opens the modal
|
|
69
|
+
# since there is only one collection, it's not necessary to choose a radio button
|
|
70
|
+
click_button "Update Collection"
|
|
71
|
+
expect(page).to have_content "Items in this Collection"
|
|
72
|
+
expect(page).to have_selector "ol.catalog li:nth-child(9)" # at least 9 works in this collection
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
describe 'delete collection' do
|
|
77
|
+
before (:each) do
|
|
78
|
+
@collection = Collection.new title:'collection title'
|
|
79
|
+
@collection.description = 'collection description'
|
|
80
|
+
@collection.apply_depositor_metadata(user_key)
|
|
81
|
+
@collection.save
|
|
82
|
+
sign_in user
|
|
83
|
+
visit main_app.catalog_index_path(:'f[generic_type_sim][]' => 'Collection', works: 'mine')
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "should delete a collection" do
|
|
87
|
+
page.should have_content(@collection.title)
|
|
88
|
+
within("#document_#{@collection.noid}") do
|
|
89
|
+
first(".itemtrash").click
|
|
90
|
+
end
|
|
91
|
+
page.should_not have_content(@collection.title)
|
|
92
|
+
page.should have_content("Collection was successfully deleted.")
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe 'show collection' do
|
|
97
|
+
before do
|
|
98
|
+
@collection = Collection.new title: 'collection title'
|
|
99
|
+
@collection.description = 'collection description'
|
|
100
|
+
@collection.apply_depositor_metadata(user_key)
|
|
101
|
+
@collection.members = [@gw1,@gw2]
|
|
102
|
+
@collection.save
|
|
103
|
+
sign_in user
|
|
104
|
+
visit search_path_for_my_collections
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "should show a collection with a listing of Descriptive Metadata and catalog-style search results" do
|
|
108
|
+
page.should have_content(@collection.title)
|
|
109
|
+
within('#document_'+@collection.noid) do
|
|
110
|
+
click_link("collection title")
|
|
111
|
+
end
|
|
112
|
+
page.should have_content(@collection.title)
|
|
113
|
+
page.should have_content(@collection.description)
|
|
114
|
+
# Should have search results / contents listing
|
|
115
|
+
page.should have_content(@gw1.title.first)
|
|
116
|
+
page.should have_content(@gw2.title.first)
|
|
117
|
+
page.should_not have_css(".pager")
|
|
118
|
+
|
|
119
|
+
#click_link "Gallery"
|
|
120
|
+
#expect(page).to have_content(@gw1.title)
|
|
121
|
+
#expect(page).to have_content(@gw2.title)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it "should hide collection descriptive metadata when searching a collection" do
|
|
125
|
+
page.should have_content(@collection.title)
|
|
126
|
+
within("#document_#{@collection.noid}") do
|
|
127
|
+
click_link("collection title")
|
|
128
|
+
end
|
|
129
|
+
page.should have_content(@collection.title)
|
|
130
|
+
page.should have_content(@collection.description)
|
|
131
|
+
page.should have_content(@gw1.title.first)
|
|
132
|
+
page.should have_content(@gw2.title.first)
|
|
133
|
+
fill_in('collection_search', with: @gw1.title.first)
|
|
134
|
+
click_button('collection_submit')
|
|
135
|
+
# Should not have Collection Descriptive metadata table
|
|
136
|
+
page.should_not have_content("Descriptions")
|
|
137
|
+
page.should have_content(@collection.title)
|
|
138
|
+
page.should have_content(@collection.description)
|
|
139
|
+
# Should have search results / contents listing
|
|
140
|
+
page.should have_content(@gw1.title.first)
|
|
141
|
+
page.should_not have_content(@gw2.title.first)
|
|
142
|
+
# Should not have Dashboard content in contents listing
|
|
143
|
+
page.should_not have_content("Visibility")
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
describe 'edit collection' do
|
|
148
|
+
before (:each) do
|
|
149
|
+
@collection = Collection.new(title: 'Awesome Title')
|
|
150
|
+
@collection.description = 'collection description'
|
|
151
|
+
@collection.apply_depositor_metadata(user_key)
|
|
152
|
+
@collection.members = [@gw1, @gw2]
|
|
153
|
+
@collection.save
|
|
154
|
+
sign_in user
|
|
155
|
+
visit search_path_for_my_collections
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it "should edit and update collection metadata" do
|
|
159
|
+
page.should have_content(@collection.title)
|
|
160
|
+
within("#document_#{@collection.noid}") do
|
|
161
|
+
click_link('Edit Collection')
|
|
162
|
+
end
|
|
163
|
+
page.should have_field('collection_title', with: @collection.title)
|
|
164
|
+
page.should have_field('collection_description', with: @collection.description)
|
|
165
|
+
new_title = "Altered Title"
|
|
166
|
+
new_description = "Completely new Description text."
|
|
167
|
+
creators = ["Dorje Trollo", "Vajrayogini"]
|
|
168
|
+
fill_in('Title', with: new_title)
|
|
169
|
+
fill_in('collection_description', with: new_description)
|
|
170
|
+
fill_in('Creator', with: creators.first)
|
|
171
|
+
#within('.form-actions') do
|
|
172
|
+
click_button('Update Collection')
|
|
173
|
+
#end
|
|
174
|
+
page.should_not have_content(@collection.title)
|
|
175
|
+
page.should_not have_content(@collection.description)
|
|
176
|
+
page.should have_content(new_title)
|
|
177
|
+
page.should have_content(new_description)
|
|
178
|
+
page.should have_content(creators.first)
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
it "should remove a work from a collection" do
|
|
182
|
+
skip "BUG removing works from a collection"
|
|
183
|
+
page.should have_content(@collection.title)
|
|
184
|
+
within("#document_#{@collection.noid}") do
|
|
185
|
+
click_link('Edit Collection')
|
|
186
|
+
end
|
|
187
|
+
page.should have_field('collection_title', with: @collection.title)
|
|
188
|
+
page.should have_field('collection_description', with: @collection.description)
|
|
189
|
+
page.should have_content(@gw1.title)
|
|
190
|
+
page.should have_content(@gw2.title)
|
|
191
|
+
within("#document_#{@gw1.noid}") do
|
|
192
|
+
click_button('Remove From Collection')
|
|
193
|
+
end
|
|
194
|
+
page.should have_content(@collection.title)
|
|
195
|
+
page.should have_content(@collection.description)
|
|
196
|
+
page.should_not have_content(@gw1.title)
|
|
197
|
+
page.should have_content(@gw2.title)
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
it "should remove all works from a collection" do
|
|
201
|
+
skip "batch collection operations (add/remove)"
|
|
202
|
+
page.should have_content(@collection.title)
|
|
203
|
+
within('#document_'+@collection.noid) do
|
|
204
|
+
click_link('Edit Collection')
|
|
205
|
+
end
|
|
206
|
+
page.should have_field('collection_title', with: @collection.title)
|
|
207
|
+
page.should have_field('collection_description', with: @collection.description)
|
|
208
|
+
page.should have_content(@gw1.title)
|
|
209
|
+
page.should have_content(@gw2.title)
|
|
210
|
+
first('input#check_all').click
|
|
211
|
+
click_button('Remove From Collection')
|
|
212
|
+
page.should have_content(@collection.title)
|
|
213
|
+
page.should have_content(@collection.description)
|
|
214
|
+
page.should_not have_content(@gw1.title)
|
|
215
|
+
page.should_not have_content(@gw2.title)
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
describe 'show pages of a collection' do
|
|
220
|
+
before (:each) do
|
|
221
|
+
@collection = Collection.new title:'collection title'
|
|
222
|
+
@collection.description = 'collection description'
|
|
223
|
+
@collection.apply_depositor_metadata(user_key)
|
|
224
|
+
@collection.members = @gws
|
|
225
|
+
@collection.save!
|
|
226
|
+
sign_in user
|
|
227
|
+
visit search_path_for_my_collections
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
it "should show a collection with a listing of Descriptive Metadata and catalog-style search results" do
|
|
231
|
+
page.should have_content(@collection.title)
|
|
232
|
+
within('#document_'+@collection.noid) do
|
|
233
|
+
click_link("collection title")
|
|
234
|
+
end
|
|
235
|
+
page.should have_css(".pager")
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
end
|