hydra-head 3.0.0pre1
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.
- data/.gitignore +71 -0
- data/.gitmodules +6 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +257 -0
- data/README.textile +150 -0
- data/README_RAILS3_CHANGES.textile +42 -0
- data/Rakefile +5 -0
- data/TESTING.textile +85 -0
- data/app/controllers/assets_controller.rb +117 -0
- data/app/controllers/contributors_controller.rb +54 -0
- data/app/controllers/file_assets_controller.rb +152 -0
- data/app/controllers/permissions_controller.rb +137 -0
- data/app/controllers/user_sessions_controller.rb +14 -0
- data/app/helpers/article_metadata_helper.rb +80 -0
- data/app/helpers/blacklight_helper.rb +192 -0
- data/app/helpers/downloads_helper.rb +19 -0
- data/app/helpers/generic_content_objects_helper.rb +16 -0
- data/app/helpers/hydra_assets_helper.rb +75 -0
- data/app/helpers/hydra_djatoka_helper.rb +23 -0
- data/app/helpers/hydra_fedora_metadata_helper.rb +365 -0
- data/app/helpers/hydra_helper.rb +155 -0
- data/app/helpers/hydra_uploader_helper.rb +18 -0
- data/app/helpers/inline_editable_metadata_helper.rb +15 -0
- data/app/helpers/javascript_includes_helper.rb +93 -0
- data/app/helpers/release_process_helper.rb +32 -0
- data/app/models/audio_asset.rb +8 -0
- data/app/models/file_asset.rb +111 -0
- data/app/models/generic_content.rb +21 -0
- data/app/models/generic_image.rb +62 -0
- data/app/models/image_asset.rb +8 -0
- data/app/models/mods_asset.rb +6 -0
- data/app/models/role_mapper.rb +22 -0
- data/app/models/superuser.rb +6 -0
- data/app/models/video_asset.rb +8 -0
- data/app/views/_add_assets_links.html.erb +13 -0
- data/app/views/_brown_sidebar.html +15 -0
- data/app/views/_user_util_links.html.erb +31 -0
- data/app/views/catalog/_citation.html.erb +11 -0
- data/app/views/catalog/_constraints_element.html.erb +34 -0
- data/app/views/catalog/_delete_partials/_default.html.erb +29 -0
- data/app/views/catalog/_document_list.html.erb +11 -0
- data/app/views/catalog/_edit_partials/_default.html.erb +64 -0
- data/app/views/catalog/_edit_partials/_default_details.html.erb +15 -0
- data/app/views/catalog/_email_form.html.erb +9 -0
- data/app/views/catalog/_facets.html.erb +37 -0
- data/app/views/catalog/_flash_msg.html.erb +17 -0
- data/app/views/catalog/_home.html.erb +6 -0
- data/app/views/catalog/_home_text.html.erb +10 -0
- data/app/views/catalog/_index_partials/_default.html.erb +20 -0
- data/app/views/catalog/_index_partials/_default_details.html.erb +11 -0
- data/app/views/catalog/_index_partials/_default_group.html.erb +15 -0
- data/app/views/catalog/_search_form.html.erb +12 -0
- data/app/views/catalog/_show_partials/_default.html.erb +23 -0
- data/app/views/catalog/_show_partials/_default_details.html.erb +12 -0
- data/app/views/catalog/_show_partials/_facets.html.erb +52 -0
- data/app/views/catalog/_sms_form.html.erb +21 -0
- data/app/views/catalog/_sort_and_per_page.html.erb +22 -0
- data/app/views/catalog/_uva_tabs.html.erb +10 -0
- data/app/views/catalog/about.html.erb +0 -0
- data/app/views/catalog/show.html.erb +48 -0
- data/app/views/contributors/_add_contributor_split_button.html.erb +10 -0
- data/app/views/contributors/_edit_conference.html.erb +29 -0
- data/app/views/contributors/_edit_organization.html.erb +29 -0
- data/app/views/contributors/_edit_person.html.erb +42 -0
- data/app/views/contributors/_index.html.erb +12 -0
- data/app/views/contributors/_new.html.erb +10 -0
- data/app/views/contributors/_show_conference.html.erb +22 -0
- data/app/views/contributors/_show_organization.html.erb +29 -0
- data/app/views/contributors/_show_person.html.erb +17 -0
- data/app/views/contributors/new.html.erb +13 -0
- data/app/views/downloads/index.html.erb +1 -0
- data/app/views/file_assets/_deletable_result.html.erb +5 -0
- data/app/views/file_assets/_index.html.erb +15 -0
- data/app/views/file_assets/_new.html.erb +2 -0
- data/app/views/file_assets/_result.html.erb +16 -0
- data/app/views/file_assets/index.html.erb +5 -0
- data/app/views/fluid_infusion/_uploader.html.erb +81 -0
- data/app/views/fluid_infusion/_uploader_generic_content_objects.js.erb +38 -0
- data/app/views/fluid_infusion/_uploader_js.erb +45 -0
- data/app/views/generic_content_objects/_edit_description.html.erb +50 -0
- data/app/views/generic_content_objects/_new.html.erb +0 -0
- data/app/views/generic_content_objects/_show_description.html.erb +68 -0
- data/app/views/generic_content_objects/contributors/_edit_conference.html.erb +29 -0
- data/app/views/generic_content_objects/contributors/_edit_organization.html.erb +29 -0
- data/app/views/generic_content_objects/contributors/_edit_person.html.erb +37 -0
- data/app/views/generic_content_objects/contributors/_new.html.erb +10 -0
- data/app/views/generic_content_objects/contributors/_show_conference.html.erb +22 -0
- data/app/views/generic_content_objects/contributors/_show_organization.html.erb +22 -0
- data/app/views/generic_content_objects/contributors/_show_person.html.erb +38 -0
- data/app/views/generic_contents/_edit.html.erb +59 -0
- data/app/views/generic_contents/_index.html.erb +23 -0
- data/app/views/generic_contents/_show.html.erb +18 -0
- data/app/views/generic_contents/_show_content.html.erb +4 -0
- data/app/views/generic_images/_edit.html.erb +59 -0
- data/app/views/generic_images/_index.html.erb +24 -0
- data/app/views/generic_images/_show.html.erb +18 -0
- data/app/views/generic_images/_show_all.html.erb +14 -0
- data/app/views/generic_images/_show_content.html.erb +7 -0
- data/app/views/layouts/application.html.erb +57 -0
- data/app/views/layouts/hydra-head.html.erb +12 -0
- data/app/views/mods_assets/_edit.html.erb +49 -0
- data/app/views/mods_assets/_edit_description.html.erb +82 -0
- data/app/views/mods_assets/_edit_journal.html.erb +72 -0
- data/app/views/mods_assets/_index.html.erb +1 -0
- data/app/views/mods_assets/_index_list.html.erb +37 -0
- data/app/views/mods_assets/_index_table.html.erb +7 -0
- data/app/views/mods_assets/_progress_box.html.erb +82 -0
- data/app/views/mods_assets/_show.html.erb +44 -0
- data/app/views/mods_assets/_show_description.html.erb +44 -0
- data/app/views/mods_assets/_show_journal.html.erb +42 -0
- data/app/views/mods_assets/_show_permissions.html.erb +14 -0
- data/app/views/permissions/_edit_person_permissions.html.erb +35 -0
- data/app/views/permissions/_index.html.erb +55 -0
- data/app/views/permissions/_new.html.erb +18 -0
- data/app/views/permissions/index.html.erb +1 -0
- data/app/views/permissions/new.html.erb +1 -0
- data/app/views/shared/_delete_asset_confirmation.html.erb +17 -0
- data/app/views/user_sessions/_login_form.html.erb +10 -0
- data/app/views/user_sessions/logged_out.html.erb +1 -0
- data/config/routes.rb +12 -0
- data/fedora_conf/conf/fedora.fcfg +1021 -0
- data/hydra-head.gemspec +70 -0
- data/lib/application_controller.rb +25 -0
- data/lib/application_helper.rb +2 -0
- data/lib/engine.rb +30 -0
- data/lib/generators/hydra/head_generator.rb +152 -0
- data/lib/generators/hydra/templates/config/fedora.yml +17 -0
- data/lib/generators/hydra/templates/config/initializers/blacklight_config.rb +246 -0
- data/lib/generators/hydra/templates/config/initializers/fedora_config.rb +23 -0
- data/lib/generators/hydra/templates/config/initializers/hydra_config.rb +29 -0
- data/lib/generators/hydra/templates/config/role_map_cucumber.yml +10 -0
- data/lib/generators/hydra/templates/config/role_map_development.yml +12 -0
- data/lib/generators/hydra/templates/config/role_map_production.yml +2 -0
- data/lib/generators/hydra/templates/config/role_map_test.yml +15 -0
- data/lib/generators/hydra/templates/config/solr.yml +10 -0
- data/lib/generators/hydra/templates/config/solr_mappings.yml +22 -0
- data/lib/generators/hydra/templates/fedora_conf/conf/fedora.fcfg +1021 -0
- data/lib/generators/hydra/templates/migrations/add_user_attributes_table.rb +15 -0
- data/lib/generators/hydra/templates/migrations/create_superusers.rb +12 -0
- data/lib/generators/hydra/templates/solr_conf/conf/schema.xml +118 -0
- data/lib/generators/hydra/templates/solr_conf/conf/solrconfig.xml +332 -0
- data/lib/generators/hydra/templates/solr_conf/solr.xml +35 -0
- data/lib/hydra-head.rb +29 -0
- data/lib/hydra-head/engine.rb +9 -0
- data/lib/hydra-head/routes.rb +87 -0
- data/lib/hydra-head/version.rb +4 -0
- data/lib/hydra.rb +22 -0
- data/lib/hydra/access_controls_enforcement.rb +236 -0
- data/lib/hydra/access_controls_evaluation.rb +97 -0
- data/lib/hydra/assets_controller_helper.rb +144 -0
- data/lib/hydra/catalog.rb +64 -0
- data/lib/hydra/common_mods_index_methods.rb +42 -0
- data/lib/hydra/controller.rb +7 -0
- data/lib/hydra/file_assets_helper.rb +144 -0
- data/lib/hydra/fixtures.rb +43 -0
- data/lib/hydra/generic_content.rb +113 -0
- data/lib/hydra/generic_image.rb +100 -0
- data/lib/hydra/image.rb +177 -0
- data/lib/hydra/model_methods.rb +95 -0
- data/lib/hydra/model_mixins.rb +2 -0
- data/lib/hydra/model_mixins/common_metadata.rb +24 -0
- data/lib/hydra/model_mixins/mods_object.rb +16 -0
- data/lib/hydra/mods_article.rb +505 -0
- data/lib/hydra/mods_dataset.rb +165 -0
- data/lib/hydra/mods_generic_content.rb +494 -0
- data/lib/hydra/mods_image.rb +494 -0
- data/lib/hydra/repository_controller.rb +102 -0
- data/lib/hydra/rights_metadata.rb +189 -0
- data/lib/hydra/superuser_attributes.rb +12 -0
- data/lib/hydra/testing_server.rb +183 -0
- data/lib/hydra/user.rb +22 -0
- data/lib/mediashelf/active_fedora_helper.rb +72 -0
- data/lib/railties/all_tests.rake +23 -0
- data/lib/railties/hydra-fixtures.rake +184 -0
- data/lib/railties/hydra_jetty.rake +79 -0
- data/lib/railties/hyhead_cucumber.rake +127 -0
- data/lib/railties/hyhead_rspec.rake +137 -0
- data/lib/stanford/searchworks_helper.rb +1338 -0
- data/lib/stanford/solr_helper.rb +108 -0
- data/lib/uva/mods_index_methods.rb +24 -0
- data/solr_conf/conf/schema.xml +122 -0
- data/solr_conf/conf/solrconfig.xml +332 -0
- data/solr_conf/solr.xml +35 -0
- data/tasks/hydra-head-fixtures.rake +54 -0
- data/tasks/hydra-head.rake +247 -0
- data/tasks/hydra_jetty.rake +79 -0
- data/tasks/replicator.rake +27 -0
- data/tasks/solrizer-fedora.rake +53 -0
- data/tasks/solrizer.rake +13 -0
- data/test_support/etc/Gemfile +29 -0
- data/test_support/etc/rvmrc +32 -0
- data/test_support/features/button_add_assets.feature +22 -0
- data/test_support/features/button_add_generic_content.feature +11 -0
- data/test_support/features/button_add_image.feature +11 -0
- data/test_support/features/button_add_mods_asset.feature +11 -0
- data/test_support/features/contributor_add.feature +39 -0
- data/test_support/features/file_assets_list.feature +32 -0
- data/test_support/features/file_upload.feature +40 -0
- data/test_support/features/home_page.feature +9 -0
- data/test_support/features/html_validity.feature +47 -0
- data/test_support/features/mods_asset_contributors_edit.feature +80 -0
- data/test_support/features/mods_asset_create.feature +12 -0
- data/test_support/features/mods_asset_edit.feature +33 -0
- data/test_support/features/mods_asset_edit_without_permission.feature +10 -0
- data/test_support/features/mods_asset_search_result.feature +13 -0
- data/test_support/features/mods_asset_show.feature +39 -0
- data/test_support/features/permissions_add.feature +15 -0
- data/test_support/features/permissions_edit.feature +63 -0
- data/test_support/features/step_definitions/catalog_index_steps.rb +14 -0
- data/test_support/features/step_definitions/create_asset_steps.rb +7 -0
- data/test_support/features/step_definitions/edit_metadata_steps.rb +73 -0
- data/test_support/features/step_definitions/file_list_steps.rb +28 -0
- data/test_support/features/step_definitions/hydra_metadata_steps.rb +3 -0
- data/test_support/features/step_definitions/hydra_steps.rb +8 -0
- data/test_support/features/step_definitions/inline_editable_edit_steps.rb +77 -0
- data/test_support/features/step_definitions/search_steps.rb +88 -0
- data/test_support/features/step_definitions/searching_steps.rb +22 -0
- data/test_support/features/step_definitions/show_document_steps.rb +85 -0
- data/test_support/features/step_definitions/user_steps.rb +36 -0
- data/test_support/features/step_definitions/web_steps.rb +219 -0
- data/test_support/features/support/env.rb +55 -0
- data/test_support/features/support/paths.rb +80 -0
- data/test_support/features/switch_users.feature +14 -0
- data/test_support/features/view_catalog_index.feature +18 -0
- data/test_support/fixtures/empty_file.txt +0 -0
- data/test_support/fixtures/hydrangea_fixture_archivist_only_mods_article.foxml.xml +1212 -0
- data/test_support/fixtures/hydrangea_fixture_file_asset1.foxml.xml +4946 -0
- data/test_support/fixtures/hydrangea_fixture_mods_article1.foxml.xml +234 -0
- data/test_support/fixtures/hydrangea_fixture_mods_article2.foxml.xml +177 -0
- data/test_support/fixtures/hydrangea_fixture_mods_article3.foxml.xml +170 -0
- data/test_support/fixtures/hydrangea_fixture_mods_dataset1.foxml.xml +187 -0
- data/test_support/fixtures/hydrangea_fixture_uploaded_svg1.foxml.xml +676 -0
- data/test_support/fixtures/image.jp2 +0 -0
- data/test_support/fixtures/libra-oa_1.foxml.xml +2324 -0
- data/test_support/fixtures/libra-oa_2.foxml.xml +2422 -0
- data/test_support/spec/controllers/assets_controller_spec.rb +113 -0
- data/test_support/spec/controllers/catalog_controller_spec.rb +148 -0
- data/test_support/spec/controllers/catalog_controller_viewing_context_spec.rb +62 -0
- data/test_support/spec/controllers/contributors_controller_spec.rb +47 -0
- data/test_support/spec/controllers/file_assets_controller_spec.rb +189 -0
- data/test_support/spec/controllers/hydra_controller_spec.rb +15 -0
- data/test_support/spec/controllers/permissions_controller_spec.rb +80 -0
- data/test_support/spec/controllers/user_sessions_controller_spec.rb +35 -0
- data/test_support/spec/generators/hydra-head_generator_spec.rb +14 -0
- data/test_support/spec/helpers/access_controls_enforcement_spec.rb +212 -0
- data/test_support/spec/helpers/access_controls_evaluation_spec.rb +35 -0
- data/test_support/spec/helpers/assets_controller_helper_spec.rb +71 -0
- data/test_support/spec/helpers/blacklight_helper_spec.rb +64 -0
- data/test_support/spec/helpers/file_assets_helper_spec.rb +107 -0
- data/test_support/spec/helpers/hydra-repository_controller_spec.rb +32 -0
- data/test_support/spec/helpers/hydra_assets_helper_spec.rb +195 -0
- data/test_support/spec/helpers/hydra_djatoka_helper_spec.rb +32 -0
- data/test_support/spec/helpers/hydra_fedora_metadata_helper_spec.rb +215 -0
- data/test_support/spec/helpers/hydra_helper_spec.rb +73 -0
- data/test_support/spec/helpers/hydra_model_methods_spec.rb +95 -0
- data/test_support/spec/helpers/hydra_uploader_helper_spec.rb +18 -0
- data/test_support/spec/helpers/javascript_includes_helper_spec.rb +43 -0
- data/test_support/spec/integration/file_asset_spec.rb +150 -0
- data/test_support/spec/lib/active_fedora_helper_spec.rb +56 -0
- data/test_support/spec/lib/catalog_spec.rb +16 -0
- data/test_support/spec/lib/common_mods_index_methods_spec.rb +28 -0
- data/test_support/spec/models/audio_asset_spec.rb +23 -0
- data/test_support/spec/models/file_asset_spec.rb +42 -0
- data/test_support/spec/models/generic_content_spec.rb +29 -0
- data/test_support/spec/models/generic_image_spec.rb +58 -0
- data/test_support/spec/models/hydra_rights_metadata_spec.rb +162 -0
- data/test_support/spec/models/image_asset_spec.rb +23 -0
- data/test_support/spec/models/mods_asset_spec.rb +29 -0
- data/test_support/spec/models/role_mapper_spec.rb +22 -0
- data/test_support/spec/models/user_spec.rb +52 -0
- data/test_support/spec/models/video_asset_spec.rb +23 -0
- data/test_support/spec/rcov.opts +3 -0
- data/test_support/spec/spec.opts +4 -0
- data/test_support/spec/spec_helper.rb +44 -0
- data/test_support/spec/support/matchers/helper_matcher.rb +14 -0
- data/test_support/spec/support/matchers/solr_matchers.rb +60 -0
- data/test_support/spec/unit/hydra-head-engine_spec.rb +8 -0
- data/test_support/spec/unit/hydra-head_spec.rb +8 -0
- data/test_support/spec/utilities/hydra_testing_server_spec.rb +49 -0
- data/test_support/spec/views/uploader.html.erb_spec.rb +30 -0
- data/vendor/cache/RedCloth-4.2.3.gem +0 -0
- data/vendor/cache/abstract-1.0.0.gem +0 -0
- data/vendor/cache/actionmailer-3.0.9.gem +0 -0
- data/vendor/cache/actionpack-3.0.9.gem +0 -0
- data/vendor/cache/active-fedora-2.3.3.gem +0 -0
- data/vendor/cache/activemodel-3.0.9.gem +0 -0
- data/vendor/cache/activerecord-3.0.9.gem +0 -0
- data/vendor/cache/activeresource-3.0.9.gem +0 -0
- data/vendor/cache/activesupport-3.0.9.gem +0 -0
- data/vendor/cache/arel-2.0.10.gem +0 -0
- data/vendor/cache/blacklight-3.0.0.gem +0 -0
- data/vendor/cache/block_helpers-0.3.3.gem +0 -0
- data/vendor/cache/builder-2.1.2.gem +0 -0
- data/vendor/cache/capybara-1.0.0.gem +0 -0
- data/vendor/cache/childprocess-0.2.0.gem +0 -0
- data/vendor/cache/columnize-0.3.4.gem +0 -0
- data/vendor/cache/crack-0.1.8.gem +0 -0
- data/vendor/cache/cucumber-1.0.2.gem +0 -0
- data/vendor/cache/cucumber-rails-1.0.2.gem +0 -0
- data/vendor/cache/curb-0.7.15.gem +0 -0
- data/vendor/cache/daemons-1.1.4.gem +0 -0
- data/vendor/cache/database_cleaner-0.6.7.gem +0 -0
- data/vendor/cache/diff-lcs-1.1.2.gem +0 -0
- data/vendor/cache/equivalent-xml-0.2.7.gem +0 -0
- data/vendor/cache/erubis-2.6.6.gem +0 -0
- data/vendor/cache/facets-2.8.4.gem +0 -0
- data/vendor/cache/factory_girl-1.3.3.gem +0 -0
- data/vendor/cache/fastercsv-1.5.4.gem +0 -0
- data/vendor/cache/ffi-1.0.9.gem +0 -0
- data/vendor/cache/gherkin-2.4.5.gem +0 -0
- data/vendor/cache/haml-3.1.2.gem +0 -0
- data/vendor/cache/httparty-0.7.8.gem +0 -0
- data/vendor/cache/i18n-0.5.0.gem +0 -0
- data/vendor/cache/jettywrapper-0.0.10.gem +0 -0
- data/vendor/cache/json-1.5.3.gem +0 -0
- data/vendor/cache/json_pure-1.5.3.gem +0 -0
- data/vendor/cache/kaminari-0.12.4.gem +0 -0
- data/vendor/cache/launchy-2.0.3.gem +0 -0
- data/vendor/cache/linecache-0.46.gem +0 -0
- data/vendor/cache/logger-1.2.8.gem +0 -0
- data/vendor/cache/mail-2.2.19.gem +0 -0
- data/vendor/cache/marc-0.4.3.gem +0 -0
- data/vendor/cache/mediashelf-loggable-0.4.2.gem +0 -0
- data/vendor/cache/mime-types-1.16.gem +0 -0
- data/vendor/cache/mocha-0.9.12.gem +0 -0
- data/vendor/cache/multipart-post-1.1.2.gem +0 -0
- data/vendor/cache/nokogiri-1.5.0.gem +0 -0
- data/vendor/cache/om-1.2.5.gem +0 -0
- data/vendor/cache/polyglot-0.3.1.gem +0 -0
- data/vendor/cache/rack-1.2.3.gem +0 -0
- data/vendor/cache/rack-mount-0.6.14.gem +0 -0
- data/vendor/cache/rack-test-0.5.7.gem +0 -0
- data/vendor/cache/rails-3.0.9.gem +0 -0
- data/vendor/cache/railties-3.0.9.gem +0 -0
- data/vendor/cache/rake-0.9.2.gem +0 -0
- data/vendor/cache/rbx-require-relative-0.0.5.gem +0 -0
- data/vendor/cache/rcov-0.9.9.gem +0 -0
- data/vendor/cache/rdoc-3.8.gem +0 -0
- data/vendor/cache/rsolr-1.0.2.gem +0 -0
- data/vendor/cache/rsolr-ext-1.0.3.gem +0 -0
- data/vendor/cache/rspec-2.6.0.gem +0 -0
- data/vendor/cache/rspec-core-2.6.4.gem +0 -0
- data/vendor/cache/rspec-expectations-2.6.0.gem +0 -0
- data/vendor/cache/rspec-mocks-2.6.0.gem +0 -0
- data/vendor/cache/rspec-rails-2.6.1.gem +0 -0
- data/vendor/cache/ruby-debug-0.10.4.gem +0 -0
- data/vendor/cache/ruby-debug-base-0.10.4.gem +0 -0
- data/vendor/cache/rubyzip-0.9.4.gem +0 -0
- data/vendor/cache/sanitize-2.0.3.gem +0 -0
- data/vendor/cache/selenium-webdriver-0.2.2.gem +0 -0
- data/vendor/cache/solr-ruby-0.0.8.gem +0 -0
- data/vendor/cache/solrizer-1.1.0.gem +0 -0
- data/vendor/cache/solrizer-fedora-1.1.0.gem +0 -0
- data/vendor/cache/sqlite3-ruby-1.2.5.gem +0 -0
- data/vendor/cache/stomp-1.1.9.gem +0 -0
- data/vendor/cache/term-ansicolor-1.0.5.gem +0 -0
- data/vendor/cache/thor-0.14.6.gem +0 -0
- data/vendor/cache/treetop-1.4.9.gem +0 -0
- data/vendor/cache/trollop-1.16.2.gem +0 -0
- data/vendor/cache/tzinfo-0.3.29.gem +0 -0
- data/vendor/cache/unicode-0.4.0.gem +0 -0
- data/vendor/cache/will_paginate-2.3.15.gem +0 -0
- data/vendor/cache/xml-simple-1.1.0.gem +0 -0
- data/vendor/cache/xpath-0.1.4.gem +0 -0
- data/vendor/cache/yard-0.7.2.gem +0 -0
- metadata +1110 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
describe Hydra::Controller do
|
|
5
|
+
before(:all) do
|
|
6
|
+
class HydraControllerTest
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should add the necessary helpers to classes that include it" do
|
|
11
|
+
HydraControllerTest.expects(:helper).with(:hydra_assets)
|
|
12
|
+
HydraControllerTest.expects(:helper).with(:hydra_fedora_metadata)
|
|
13
|
+
HydraControllerTest.send(:include, Hydra::Controller)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
# See cucumber tests (ie. /features/edit_document.feature) for more tests, including ones that test the edit method & view
|
|
5
|
+
# You can run the cucumber tests with
|
|
6
|
+
#
|
|
7
|
+
# cucumber --tags @edit
|
|
8
|
+
# or
|
|
9
|
+
# rake cucumber
|
|
10
|
+
|
|
11
|
+
describe PermissionsController do
|
|
12
|
+
describe "index" do
|
|
13
|
+
it "should retrieve the object's rightsMetadata datastream as a Hydra::RightsMetadata object and render the _index partial" do
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
describe "show" do
|
|
17
|
+
it"should render different partial based on the permission type" do
|
|
18
|
+
pending
|
|
19
|
+
renders "permissions/edit_individual"
|
|
20
|
+
renders "permissions/edit_group"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
describe "edit" do
|
|
24
|
+
end
|
|
25
|
+
describe "new" do
|
|
26
|
+
it "should render the _new partial"
|
|
27
|
+
end
|
|
28
|
+
describe "create" do
|
|
29
|
+
it "should create a new permissions entry" do
|
|
30
|
+
stub_solrizer = stub("solrizer", :solrize)
|
|
31
|
+
Solrizer::Fedora::Solrizer.stubs(:new).returns(stub_solrizer)
|
|
32
|
+
mock_ds = mock("Datastream")
|
|
33
|
+
Hydra::RightsMetadata.stubs(:from_xml).returns(mock_ds)
|
|
34
|
+
mock_ds.expects(:permissions).with({"person" => "_person_id_"}, "read")
|
|
35
|
+
# mock_ds.expects(:update_permissions).with({"person"=>{"_person_id_"=>"read"}})
|
|
36
|
+
mock_ds.stubs(:content)
|
|
37
|
+
mock_ds.stubs(:pid=)
|
|
38
|
+
mock_ds.stubs(:dsid=)
|
|
39
|
+
mock_ds.stubs(:save)
|
|
40
|
+
mock_object = mock("object")
|
|
41
|
+
mock_object.stubs(:datastreams_in_memory).returns({"rightsMetadata"=>mock_ds})
|
|
42
|
+
|
|
43
|
+
ActiveFedora::Base.expects(:load_instance).with("_pid_").returns(mock_object)
|
|
44
|
+
|
|
45
|
+
post :create, :asset_id=>"_pid_", :permission => {"actor_id"=>"_person_id_","actor_type"=>"person","access_level"=>"read"}
|
|
46
|
+
# post :create, :asset_id=>"_pid_", :permission => {"person"=>"_person_id_","level"=>"read"}
|
|
47
|
+
end
|
|
48
|
+
it "should rely on .update method"
|
|
49
|
+
end
|
|
50
|
+
describe "update" do
|
|
51
|
+
it "should call Hydra::RightsMetadata properties setter" do
|
|
52
|
+
stub_solrizer = stub("solrizer", :solrize)
|
|
53
|
+
Solrizer::Fedora::Solrizer.stubs(:new).returns(stub_solrizer)
|
|
54
|
+
mock_ds = mock("Datastream")
|
|
55
|
+
Hydra::RightsMetadata.stubs(:from_xml).returns(mock_ds)
|
|
56
|
+
mock_ds.expects(:update_permissions).with({"group" => {"_group_id_"=>"discover"}})
|
|
57
|
+
mock_ds.stubs(:content)
|
|
58
|
+
mock_ds.stubs(:pid=)
|
|
59
|
+
mock_ds.stubs(:dsid=)
|
|
60
|
+
mock_ds.stubs(:save)
|
|
61
|
+
mock_object = mock("object")
|
|
62
|
+
mock_object.stubs(:datastreams_in_memory).returns({"rightsMetadata"=>mock_ds})
|
|
63
|
+
|
|
64
|
+
ActiveFedora::Base.expects(:load_instance).with("_pid_").returns(mock_object)
|
|
65
|
+
# must define new routes that can handle url like this
|
|
66
|
+
# /assets/_pid_/permissions/group/_group_id_
|
|
67
|
+
# /assets/:asset_id/permissions/:actor_type/:actor_id
|
|
68
|
+
|
|
69
|
+
# this is what currently works
|
|
70
|
+
# post :update, :asset_id=>"_pid_", :actor_type=>"group", :actor_id=>"_group_id_", :permission => {"group"=>"_group_id_","level"=>"discover"}
|
|
71
|
+
|
|
72
|
+
post :update, :asset_id=>"_pid_", :permission => {"group"=>{"_group_id_"=>"discover"}}
|
|
73
|
+
end
|
|
74
|
+
it "should add a rightsMetadata datastream if it doesn't exist"
|
|
75
|
+
it "should not cause the metadata to be indexed twice" do
|
|
76
|
+
# should load the object as ActiveFedora::Base, initialize the rightsMetadata datastream as Hydra::RightsMetadata, update the datastream, save the datastream, and tell Solrizer to re-index the object from pid
|
|
77
|
+
# re-indexing from pid rather than passing in the current object prevents double-indexing of the edited metadatata datastream
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe UserSessionsController do
|
|
4
|
+
|
|
5
|
+
before(:each) do
|
|
6
|
+
@user = mock("User")
|
|
7
|
+
@user.stubs(:can_be_superuser?).returns true
|
|
8
|
+
@user2 = mock("User")
|
|
9
|
+
@user2.stubs(:can_be_superuser?).returns false
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should allow for toggling on and off session[:superuser_mode]" do
|
|
13
|
+
controller.stubs(:current_user).returns(@user)
|
|
14
|
+
request.env["HTTP_REFERER"] = ""
|
|
15
|
+
get :superuser
|
|
16
|
+
session[:superuser_mode].should be_true
|
|
17
|
+
get :superuser
|
|
18
|
+
session[:superuser_mode].should be_nil
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should not allow superuser_mode to be set in session if current_user is not a superuser" do
|
|
22
|
+
controller.stubs(:current_user).returns(@user2)
|
|
23
|
+
request.env["HTTP_REFERER"] = ""
|
|
24
|
+
get :superuser
|
|
25
|
+
session[:superuser_mode].should be_nil
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should redirect to the referer" do
|
|
29
|
+
controller.stubs(:current_user).returns(@user)
|
|
30
|
+
request.env["HTTP_REFERER"] = file_assets_path
|
|
31
|
+
get :superuser
|
|
32
|
+
response.should redirect_to(file_assets_path)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
3
|
+
require "generators/hydra/head_generator"
|
|
4
|
+
require "generators/blacklight/blacklight_generator"
|
|
5
|
+
|
|
6
|
+
describe Hydra::HeadGenerator do
|
|
7
|
+
|
|
8
|
+
it "should be tested, but it's not clear how..."
|
|
9
|
+
it "should inject Hydra behaviors into User model by adding include Hydra::User" do
|
|
10
|
+
pending "Not sure how to test this..."
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# Need way to find way to stub current_user and RoleMapper in order to run these tests
|
|
2
|
+
require File.expand_path( File.join( File.dirname(__FILE__),'..','spec_helper') )
|
|
3
|
+
|
|
4
|
+
describe Hydra::AccessControlsEnforcement do
|
|
5
|
+
before(:each) do
|
|
6
|
+
@extra_controller_params = {}
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "enforce_access_controls" do
|
|
10
|
+
describe "[index]" do
|
|
11
|
+
it "should trigger enforce_index_permissions" do
|
|
12
|
+
helper.params[:action] = "index"
|
|
13
|
+
helper.expects(:enforce_index_permissions)
|
|
14
|
+
helper.enforce_access_controls
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
describe "[show]" do
|
|
18
|
+
it "should trigger enforce_show_permissions" do
|
|
19
|
+
helper.params[:action] = "show"
|
|
20
|
+
helper.expects(:enforce_show_permissions)
|
|
21
|
+
helper.enforce_access_controls
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "[edit]" do
|
|
26
|
+
it "should trigger enforce_edit_permissions" do
|
|
27
|
+
helper.params[:action] = "edit"
|
|
28
|
+
helper.expects(:enforce_edit_permissions)
|
|
29
|
+
helper.enforce_access_controls
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
describe "[update]" do
|
|
33
|
+
it "should trigger enforce_update_permissions" do
|
|
34
|
+
helper.params[:action] = "update"
|
|
35
|
+
helper.expects(:enforce_update_permissions)
|
|
36
|
+
helper.enforce_access_controls
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "add_access_controls_to_solr_params" do
|
|
43
|
+
it "should set up gated discovery" do
|
|
44
|
+
stub_solr_params = {}
|
|
45
|
+
helper.stubs(:reader?).returns(false)
|
|
46
|
+
helper.stubs(:params).returns({:action=>:index})
|
|
47
|
+
helper.expects(:apply_gated_discovery).with(stub_solr_params, {})
|
|
48
|
+
helper.send(:add_access_controls_to_solr_params, stub_solr_params, {})
|
|
49
|
+
end
|
|
50
|
+
it "should make blacklight use the :public_qt response handler if user does not have read permissions" do
|
|
51
|
+
stub_solr_params = {}
|
|
52
|
+
helper.stubs(:solr_parameters).returns(stub_solr_params)
|
|
53
|
+
helper.stubs(:reader?).returns(false)
|
|
54
|
+
helper.stubs(:params).returns({:action=>:index})
|
|
55
|
+
helper.stubs(:apply_gated_discovery)
|
|
56
|
+
helper.send(:add_access_controls_to_solr_params, stub_solr_params, {})
|
|
57
|
+
stub_solr_params[:qt].should == Blacklight.config[:public_qt]
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "enforce_index_permissions" do
|
|
62
|
+
it "should be defined but do nothing (currently enforce_index_permissions doesn't do anything but it's there if you want to override)" do
|
|
63
|
+
# just ensure that calling the method does not raise an error
|
|
64
|
+
helper.send(:enforce_index_permissions)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "enforce_show_permissions" do
|
|
69
|
+
it "should deny access to documents if role does not have read permissions" do
|
|
70
|
+
helper.stubs(:reader?).returns(false)
|
|
71
|
+
helper.stubs(:params).returns({:action=>:show,:id=>"hydrangea:fixture_mods_article1"}) # the permissions from this are not actually used because we stub the :reader? method
|
|
72
|
+
helper.expects(:redirect_to).with(:f => nil, :q => nil, :action => 'index')
|
|
73
|
+
helper.send(:enforce_show_permissions)
|
|
74
|
+
flash[:notice].should == "You do not have sufficient access privileges to read this document, which has been marked private."
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
describe "enforce_edit_permissions" do
|
|
78
|
+
it "should deny access to documents if role does not have edit permissions" do
|
|
79
|
+
helper.stubs(:editor?).returns(false)
|
|
80
|
+
helper.stubs(:params).returns({:action=>:edit,:id=>"hydrangea:fixture_mods_article1"} ) # the permissions from this are not actually used because we stub the :editor? method
|
|
81
|
+
helper.expects(:redirect_to).with(:action => :show)
|
|
82
|
+
helper.send(:enforce_edit_permissions)
|
|
83
|
+
flash[:notice].should == "You do not have sufficient privileges to edit this document. You have been redirected to the read-only view."
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
describe "enforce_update_permissions" do
|
|
87
|
+
it "should deny access to documents if role does not have update permissions" do
|
|
88
|
+
helper.stubs(:editor?).returns(false)
|
|
89
|
+
helper.stubs(:params).returns({:action=>:edit,:id=>"hydrangea:fixture_mods_article1"} ) # the permissions from this are not actually used because we stub the :editor? method
|
|
90
|
+
helper.expects(:redirect_to).with(:action => :show)
|
|
91
|
+
helper.send(:enforce_update_permissions)
|
|
92
|
+
flash[:notice].should == "You do not have sufficient privileges to edit this document. You have been redirected to the read-only view."
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
describe "apply_gated_discovery" do
|
|
96
|
+
it "should set the query using build_lucene_query" do
|
|
97
|
+
stub_solr_params = {}
|
|
98
|
+
helper.stubs(:solr_parameters).returns(stub_solr_params)
|
|
99
|
+
user_query = "my important query"
|
|
100
|
+
helper.stubs(:params).returns({:q=>user_query} )
|
|
101
|
+
helper.expects(:build_lucene_query).with(user_query).returns("stub lucene query")
|
|
102
|
+
helper.send(:apply_gated_discovery, stub_solr_params, {})
|
|
103
|
+
stub_solr_params[:q].should == "stub lucene query"
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
describe "build_lucene_query" do
|
|
108
|
+
|
|
109
|
+
it "should return fields for all roles the user is a member of checking against the discover, access, read fields" do
|
|
110
|
+
stub_user = User.new
|
|
111
|
+
stub_user.stubs(:is_being_superuser?).returns false
|
|
112
|
+
stub_user.stubs(:login).returns "archivist1@example.com"
|
|
113
|
+
helper.stubs(:current_user).returns(stub_user)
|
|
114
|
+
# This example assumes that archivist1 is in the archivist and researcher groups.
|
|
115
|
+
# Tried stubbing RoleMapper.roles instead, but that broke 26 other tests because mocha fails to release the expectation.
|
|
116
|
+
# RoleMapper.stubs(:roles).with(stub_user.login).returns(["archivist", "researcher"])
|
|
117
|
+
query = helper.send(:build_lucene_query, "string")
|
|
118
|
+
|
|
119
|
+
["discover","edit","read"].each do |type|
|
|
120
|
+
query.should match(/_query_\:\"#{type}_access_group_t\:archivist/) and
|
|
121
|
+
query.should match(/_query_\:\"#{type}_access_group_t\:researcher/)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
it "should return fields for all the person specific discover, access, read fields" do
|
|
125
|
+
stub_user = User.new
|
|
126
|
+
stub_user.stubs(:is_being_superuser?).returns false
|
|
127
|
+
helper.stubs(:current_user).returns(stub_user)
|
|
128
|
+
query = helper.send(:build_lucene_query, "string")
|
|
129
|
+
["discover","edit","read"].each do |type|
|
|
130
|
+
query.should match(/_query_\:\"#{type}_access_person_t\:#{stub_user.login}/)
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
describe "for superusers" do
|
|
134
|
+
it "should return superuser access level" do
|
|
135
|
+
stub_user = User.new
|
|
136
|
+
stub_user.stubs(:is_being_superuser?).returns true
|
|
137
|
+
helper.stubs(:current_user).returns(stub_user)
|
|
138
|
+
query = helper.send(:build_lucene_query, "string")
|
|
139
|
+
["discover","edit","read"].each do |type|
|
|
140
|
+
query.should match(/_query_\:\"#{type}_access_person_t\:\[\* TO \*\]/)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
it "should not return superuser access to non-superusers" do
|
|
144
|
+
stub_user = User.new
|
|
145
|
+
stub_user.stubs(:is_being_superuser?).returns false
|
|
146
|
+
helper.stubs(:current_user).returns(stub_user)
|
|
147
|
+
query = helper.send(:build_lucene_query, "string")
|
|
148
|
+
["discover","edit","read"].each do |type|
|
|
149
|
+
query.should_not match(/_query_\:\"#{type}_access_person_t\:\[\* TO \*\]/)
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
it "should have necessary fieldnames from initializer" do
|
|
156
|
+
Hydra.config[:permissions][:catchall].should_not be_nil
|
|
157
|
+
Hydra.config[:permissions][:discover][:group].should_not be_nil
|
|
158
|
+
Hydra.config[:permissions][:discover][:individual].should_not be_nil
|
|
159
|
+
Hydra.config[:permissions][:read][:group].should_not be_nil
|
|
160
|
+
Hydra.config[:permissions][:read][:individual].should_not be_nil
|
|
161
|
+
Hydra.config[:permissions][:edit][:group].should_not be_nil
|
|
162
|
+
Hydra.config[:permissions][:edit][:individual].should_not be_nil
|
|
163
|
+
Hydra.config[:permissions][:owner].should_not be_nil
|
|
164
|
+
Hydra.config[:permissions][:embargo_release_date].should_not be_nil
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# SPECS FOR SINGLE DOCUMENT REQUESTS
|
|
168
|
+
describe 'Get Document Permissions By Id' do
|
|
169
|
+
before(:each) do
|
|
170
|
+
@doc_id = 'hydrangea:fixture_mods_article1'
|
|
171
|
+
@bad_id = "redrum"
|
|
172
|
+
@response2, @document = helper.get_permissions_solr_response_for_doc_id(@doc_id)
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
it "should raise Blacklight::InvalidSolrID for an unknown id" do
|
|
176
|
+
lambda {
|
|
177
|
+
helper.get_permissions_solr_response_for_doc_id(@bad_id)
|
|
178
|
+
}.should raise_error(Blacklight::Exceptions::InvalidSolrID)
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
it "should raise Blacklight::InvalidSolrID for nil id" do
|
|
182
|
+
lambda {
|
|
183
|
+
helper.get_permissions_solr_response_for_doc_id(nil)
|
|
184
|
+
}.should raise_error(Blacklight::Exceptions::InvalidSolrID)
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
it "should have a non-nil result for a known id" do
|
|
188
|
+
@document.should_not == nil
|
|
189
|
+
end
|
|
190
|
+
it "should have a single document in the response for a known id" do
|
|
191
|
+
@response2.docs.size.should == 1
|
|
192
|
+
end
|
|
193
|
+
it 'should have the expected value in the id field' do
|
|
194
|
+
@document.id.should == @doc_id
|
|
195
|
+
end
|
|
196
|
+
it 'should have non-nil values for permissions fields that are set on the object' do
|
|
197
|
+
@document.get(Hydra.config[:permissions][:catchall]).should_not be_nil
|
|
198
|
+
@document.get(Hydra.config[:permissions][:discover][:group]).should_not be_nil
|
|
199
|
+
@document.get(Hydra.config[:permissions][:edit][:group]).should_not be_nil
|
|
200
|
+
@document.get(Hydra.config[:permissions][:edit][:individual]).should_not be_nil
|
|
201
|
+
@document.get(Hydra.config[:permissions][:read][:group]).should_not be_nil
|
|
202
|
+
|
|
203
|
+
# @document.get(Hydra.config[:permissions][:discover][:individual]).should_not be_nil
|
|
204
|
+
# @document.get(Hydra.config[:permissions][:read][:individual]).should_not be_nil
|
|
205
|
+
# @document.get(Hydra.config[:permissions][:owner]).should_not be_nil
|
|
206
|
+
# @document.get(Hydra.config[:permissions][:embargo_release_date]).should_not be_nil
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe Hydra::AccessControlsEvaluation do
|
|
4
|
+
|
|
5
|
+
describe "test_permission" do
|
|
6
|
+
it "should automatically add logged-in users to 'registered' group" do
|
|
7
|
+
mock_user = mock("User", :login => "logged_in_person")
|
|
8
|
+
helper.stubs(:read_groups).returns(["registered"])
|
|
9
|
+
helper.stubs(:current_user).returns(nil)
|
|
10
|
+
helper.test_permission(:read).should == false
|
|
11
|
+
helper.stubs(:current_user).returns(mock_user)
|
|
12
|
+
helper.test_permission(:read).should == true
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "editor?" do
|
|
17
|
+
it "should return true if current_user.is_being_superuser? is true" do
|
|
18
|
+
mock_user = mock("User", :login => "BigWig")
|
|
19
|
+
mock_user.stubs(:is_being_superuser?).returns true
|
|
20
|
+
helper.stubs(:current_user).returns mock_user
|
|
21
|
+
helper.editor?.should be_true
|
|
22
|
+
end
|
|
23
|
+
it "should return false if the session[:user] is not logged in" do
|
|
24
|
+
helper.stubs(:current_user).returns(nil)
|
|
25
|
+
helper.editor?.should be_false
|
|
26
|
+
end
|
|
27
|
+
it "should return false if the session[:user] does not have an editor role" do
|
|
28
|
+
mock_user = mock("User", :login=>"nobody_special")
|
|
29
|
+
mock_user.stubs(:is_being_superuser?).returns(false)
|
|
30
|
+
helper.stubs(:current_user).returns(mock_user)
|
|
31
|
+
helper.editor?.should be_false
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require File.expand_path( File.join( File.dirname(__FILE__),'..','spec_helper') )
|
|
2
|
+
|
|
3
|
+
describe Hydra::AssetsControllerHelper do
|
|
4
|
+
|
|
5
|
+
describe "prep_updater_method_args" do
|
|
6
|
+
it "should parse the input params" do
|
|
7
|
+
sample_params = {"content_type"=>"mods_asset",
|
|
8
|
+
"action"=>"update",
|
|
9
|
+
"_method"=>"put",
|
|
10
|
+
"field_selectors"=>{"descMetadata"=>{"person_0_computing_id"=>[{"person"=>"0"}, "computing_id"], "journal_0_issue_start_page"=>[{"journal"=>"0"}, "issue", "start_page"], "person_1_description"=>[{"person"=>"1"}, "description"], "person_1_institution"=>[{"person"=>"1"}, "institution"], "journal_0_origin_info_publisher"=>[{"journal"=>"0"}, "origin_info", "publisher"], "abstract"=>["abstract"], "person_0_last_name"=>[{"person"=>"0"}, "last_name"], "person_0_description"=>[{"person"=>"0"}, "description"], "journal_0_issue_volume"=>[{"journal"=>"0"}, "issue", "volume"], "title_info_main_title"=>["title_info", "main_title"], "location_url"=>["location", "url"], "note"=>["note"], "person_1_last_name"=>[{"person"=>"1"}, "last_name"], "subject_topic"=>["subject", "topic"], "person_0_institution"=>[{"person"=>"0"}, "institution"], "person_1_first_name"=>[{"person"=>"1"}, "first_name"], "person_1"=>[{"person"=>"1"}], "journal_0_title_info_main_title"=>[{"journal"=>"0"}, "title_info", "main_title"], "journal_0_issue_level"=>[{"journal"=>"0"}, "issue", "level"], "journal_0_issue_end_page"=>[{"journal"=>"0"}, "issue", "end_page"], "peer_reviewed"=>["peer_reviewed"], "person_0_first_name"=>[{"person"=>"0"}, "first_name"], "person_1_computing_id"=>[{"person"=>"1"}, "computing_id"], "journal_0_issn"=>[{"journal"=>"0"}, "issn"], "journal_0_issue_publication_date"=>[{"journal"=>"0"}, "issue", "publication_date"]}, "rightsMetadata"=>{"embargo_embargo_release_date"=>["embargo", "embargo_release_date"]}, "properties"=>{"release_to"=>["release_to"]}},
|
|
11
|
+
"id"=>"hydrangea:fixture_mods_article3",
|
|
12
|
+
"controller"=>"assets",
|
|
13
|
+
"asset"=>{"descMetadata"=>{"person_0_computing_id"=>{"0"=>""}, "journal_0_issue_start_page"=>{"0"=>"195"}, "person_1_description"=>{"0"=>""}, "person_1_institution"=>{"0"=>"Baltimore"}, "journal_0_origin_info_publisher"=>{"0"=>"PUBLISHER"}, "abstract"=>{"0"=>"ABSTRACT"}, "person_0_last_name"=>{"0"=>"Smith"}, "person_0_description"=>{"0"=>""}, "journal_0_issue_volume"=>{"0"=>"2 "}, "title_info_main_title"=>{"0"=>"Test Article"}, "location_url"=>{"0"=>"http://example.com/foo"}, "note"=>{"0"=>""}, "person_1_last_name"=>{"0"=>"Lacks"}, "subject_topic"=>{"0"=>"TOPIC 1", "1"=>"TOPIC 2", "2"=>"CONTROLLED TERM"}, "person_0_institution"=>{"0"=>"FACULTY, UNIVERSITY"}, "person_1_first_name"=>{"0"=>"Henrietta"}, "journal_0_title_info_main_title"=>{"0"=>"The Journal of Mock Object"}, "journal_0_issue_level"=>{"0"=>""}, "journal_0_issue_end_page"=>{"0"=>"230"}, "person_0_first_name"=>{"0"=>"John"}, "person_1_computing_id"=>{"0"=>""}, "journal_0_issn"=>{"0"=>"1234-5678"}, "journal_0_issue_publication_date"=>{"0"=>"FEB. 2007"}}, "rightsMetadata"=>{"embargo_embargo_release_date"=>{"0"=>""}}, "properties"=>{"released"=>{"0"=>"true"}, "release_to"=>{"0"=>"public"}}}}
|
|
14
|
+
helper.stubs(:params).returns(sample_params)
|
|
15
|
+
helper.prep_updater_method_args[:params].should == {[{:journal=>0}, :issn]=>{"0"=>"1234-5678"}, [{:person=>0}, :description]=>{"0"=>""}, [:abstract]=>{"0"=>"ABSTRACT"}, [{:person=>0}, :last_name]=>{"0"=>"Smith"}, [{:journal=>0}, :issue, :level]=>{"0"=>""}, [:release_to]=>{"0"=>"public"}, [{:person=>1}, :computing_id]=>{"0"=>""}, [{:journal=>0}, :title_info, :main_title]=>{"0"=>"The Journal of Mock Object"}, [:subject, :topic]=>{"0"=>"TOPIC 1", "1"=>"TOPIC 2", "2"=>"CONTROLLED TERM"}, [{:person=>1}, :first_name]=>{"0"=>"Henrietta"}, [{:journal=>0}, :issue, :volume]=>{"0"=>"2 "}, [{:person=>1}, :institution]=>{"0"=>"Baltimore"}, [{:journal=>0}, :origin_info, :publisher]=>{"0"=>"PUBLISHER"}, [{:person=>0}, :computing_id]=>{"0"=>""}, [{:person=>0}, :first_name]=>{"0"=>"John"}, [:title_info, :main_title]=>{"0"=>"Test Article"}, [{:person=>0}, :institution]=>{"0"=>"FACULTY, UNIVERSITY"}, [{:journal=>0}, :issue, :end_page]=>{"0"=>"230"}, [:location, :url]=>{"0"=>"http://example.com/foo"}, [{:person=>1}, :description]=>{"0"=>""}, [{:person=>1}, :last_name]=>{"0"=>"Lacks"}, :released=>{"0"=>"true"}, [:embargo, :embargo_release_date]=>{"0"=>""}, [{:journal=>0}, :issue, :publication_date]=>{"0"=>"FEB. 2007"}, [:note]=>{"0"=>""}, [{:journal=>0}, :issue, :start_page]=>{"0"=>"195"}}
|
|
16
|
+
helper.prep_updater_method_args[:opts].should == {:datastreams=>"properties"}
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "sanitize_update_params" do
|
|
21
|
+
it "should create a hash appropriate for passing into ActiveFedora::Base.update_datastream_attributes" do
|
|
22
|
+
sample_params = {
|
|
23
|
+
"content_type"=>"mods_asset",
|
|
24
|
+
"action"=>"update",
|
|
25
|
+
"_method"=>"put",
|
|
26
|
+
"field_selectors"=>{
|
|
27
|
+
"descMetadata"=>{"person_0_computing_id"=>[{"person"=>"0"}, "computing_id"], "journal_0_issue_start_page"=>[{"journal"=>"0"}, "issue", "start_page"], "person_1_description"=>[{"person"=>"1"}, "description"], "person_1_institution"=>[{"person"=>"1"}, "institution"], "journal_0_origin_info_publisher"=>[{"journal"=>"0"}, "origin_info", "publisher"], "abstract"=>["abstract"], "person_0_last_name"=>[{"person"=>"0"}, "last_name"], "person_0_description"=>[{"person"=>"0"}, "description"], "journal_0_issue_volume"=>[{"journal"=>"0"}, "issue", "volume"], "title_info_main_title"=>["title_info", "main_title"], "location_url"=>["location", "url"], "note"=>["note"], "person_1_last_name"=>[{"person"=>"1"}, "last_name"], "subject_topic"=>["subject", "topic"], "person_0_institution"=>[{"person"=>"0"}, "institution"], "person_1_first_name"=>[{"person"=>"1"}, "first_name"], "person_1"=>[{"person"=>"1"}], "journal_0_title_info_main_title"=>[{"journal"=>"0"}, "title_info", "main_title"], "journal_0_issue_level"=>[{"journal"=>"0"}, "issue", "level"], "journal_0_issue_end_page"=>[{"journal"=>"0"}, "issue", "end_page"], "peer_reviewed"=>["peer_reviewed"], "person_0_first_name"=>[{"person"=>"0"}, "first_name"], "person_1_computing_id"=>[{"person"=>"1"}, "computing_id"], "journal_0_issn"=>[{"journal"=>"0"}, "issn"], "journal_0_issue_publication_date"=>[{"journal"=>"0"}, "issue", "publication_date"]},
|
|
28
|
+
"rightsMetadata"=>{"embargo_embargo_release_date"=>["embargo", "embargo_release_date"]},
|
|
29
|
+
"properties"=>{"release_to"=>["release_to"]}
|
|
30
|
+
},
|
|
31
|
+
"id"=>"hydrangea:fixture_mods_article3",
|
|
32
|
+
"controller"=>"assets",
|
|
33
|
+
"asset"=>{"descMetadata"=>{"person_0_computing_id"=>{"0"=>""}, "journal_0_issue_start_page"=>{"0"=>"195"}, "person_1_description"=>{"0"=>""}, "person_1_institution"=>{"0"=>"Baltimore"}, "journal_0_origin_info_publisher"=>{"0"=>"PUBLISHER"}, "abstract"=>{"0"=>"ABSTRACT"}, "person_0_last_name"=>{"0"=>"Smith"}, "person_0_description"=>{"0"=>""}, "journal_0_issue_volume"=>{"0"=>"2 "}, "title_info_main_title"=>{"0"=>"Test Article"}, "location_url"=>{"0"=>"http://example.com/foo"}, "note"=>{"0"=>""}, "person_1_last_name"=>{"0"=>"Lacks"}, "subject_topic"=>{"0"=>"TOPIC 1", "1"=>"TOPIC 2", "2"=>"CONTROLLED TERM"}, "person_0_institution"=>{"0"=>"FACULTY, UNIVERSITY"}, "person_1_first_name"=>{"0"=>"Henrietta"}, "journal_0_title_info_main_title"=>{"0"=>"The Journal of Mock Object"}, "journal_0_issue_level"=>{"0"=>""}, "journal_0_issue_end_page"=>{"0"=>"230"}, "person_0_first_name"=>{"0"=>"John"}, "person_1_computing_id"=>{"0"=>""}, "journal_0_issn"=>{"0"=>"1234-5678"}, "journal_0_issue_publication_date"=>{"0"=>"FEB. 2007"}}, "rightsMetadata"=>{"embargo_embargo_release_date"=>{"0"=>""}}, "properties"=>{"released"=>{"0"=>"true"}, "release_to"=>{"0"=>"public"}}}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
expected_sane_params = {
|
|
37
|
+
"descMetadata"=>{[{:person=>0}, :institution]=>{"0"=>"FACULTY, UNIVERSITY"}, [{:journal=>0}, :title_info, :main_title]=>{"0"=>"The Journal of Mock Object"}, [{:journal=>0}, :issue, :volume]=>{"0"=>"2 "}, [{:journal=>0}, :issn]=>{"0"=>"1234-5678"}, [{:person=>1}, :first_name]=>{"0"=>"Henrietta"}, [{:person=>0}, :last_name]=>{"0"=>"Smith"}, [:location, :url]=>{"0"=>"http://example.com/foo"}, [:subject, :topic]=>{"0"=>"TOPIC 1", "1"=>"TOPIC 2", "2"=>"CONTROLLED TERM"}, [{:person=>0}, :first_name]=>{"0"=>"John"}, [{:person=>1}, :computing_id]=>{"0"=>""}, [{:journal=>0}, :issue, :end_page]=>{"0"=>"230"}, [:note]=>{"0"=>""}, [:title_info, :main_title]=>{"0"=>"Test Article"}, [{:journal=>0}, :issue, :publication_date]=>{"0"=>"FEB. 2007"}, [{:person=>1}, :description]=>{"0"=>""}, [:abstract]=>{"0"=>"ABSTRACT"}, [{:journal=>0}, :issue, :level]=>{"0"=>""}, [{:person=>1}, :institution]=>{"0"=>"Baltimore"}, [{:person=>0}, :computing_id]=>{"0"=>""}, [{:person=>1}, :last_name]=>{"0"=>"Lacks"}, [{:journal=>0}, :issue, :start_page]=>{"0"=>"195"}, [{:person=>0}, :description]=>{"0"=>""}, [{:journal=>0}, :origin_info, :publisher]=>{"0"=>"PUBLISHER"}}, "rightsMetadata"=>{[:embargo, :embargo_release_date]=>{"0"=>""}},
|
|
38
|
+
"properties"=>{[:release_to]=>{"0"=>"public"}, :released=>{"0"=>"true"}}
|
|
39
|
+
}
|
|
40
|
+
helper.stubs(:params).returns(sample_params)
|
|
41
|
+
sanitized_params = helper.sanitize_update_params
|
|
42
|
+
sanitized_params.should == expected_sane_params
|
|
43
|
+
sanitized_params["descMetadata"].should == expected_sane_params["descMetadata"]
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe "tidy_response_from_update" do
|
|
48
|
+
it "should put response values into an array with fieldname / index / value Hash for each field updated" do
|
|
49
|
+
sample_input = {"descMetadata"=>{"journal_0_issue_start_page"=>{"0"=>"195"}, "person_0_computing_id"=>{"-1"=>""}, "journal_0_origin_info_publisher"=>{"0"=>"PUBLISHER"}, "person_1_institution"=>{"0"=>"Baltimore"}, "person_1_description"=>{"-1"=>""}, "abstract"=>{"0"=>"ABSTRACT"}, "person_0_description"=>{"-1"=>""}, "person_0_last_name"=>{"0"=>"Smith"}, "journal_0_issue_volume"=>{"0"=>"2 "}, "title_info_main_title"=>{"0"=>"Matt's Test Article! Again!?"}, "note"=>{"-1"=>""}, "location_url"=>{"0"=>"http://example.com/foo"}, "person_1_last_name"=>{"0"=>"Lacks"}, "subject_topic"=>{"0"=>"TOPIC 1", "1"=>"TOPIC 2", "2"=>"CONTROLLED TERM"}, "journal_0_issue_level"=>{"0"=>"55 "}, "journal_0_issue_end_page"=>{"0"=>"230"}, "person_1_first_name"=>{"0"=>"Henrietta"}, "person_0_institution"=>{"0"=>"FACULTY, UNIVERSITY"}, "journal_0_title_info_main_title"=>{"0"=>"The Journal of Mock Object"}, "journal_0_issue_publication_date"=>{"0"=>"FEB. 2007"}, "person_1_computing_id"=>{"-1"=>""}, "person_0_first_name"=>{"0"=>"John"}, "journal_0_issn"=>{"0"=>"1234-5678"}}, "rightsMetadata"=>{"embargo_embargo_release_date"=>{"-1"=>""}}, "properties"=>{:released=>{"0"=>"true"}, :release_to=>{"0"=>"public"}, [:release_to]=>{}}}
|
|
50
|
+
expected_output = {"updated"=>[{"value"=>{"0"=>"195"}, "index"=>"journal_0_issue_start_page", "field_name"=>"descMetadata"}, {"value"=>{"-1"=>""}, "index"=>"person_0_computing_id", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"PUBLISHER"}, "index"=>"journal_0_origin_info_publisher", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"Baltimore"}, "index"=>"person_1_institution", "field_name"=>"descMetadata"}, {"value"=>{"-1"=>""}, "index"=>"person_1_description", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"ABSTRACT"}, "index"=>"abstract", "field_name"=>"descMetadata"}, {"value"=>{"-1"=>""}, "index"=>"person_0_description", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"Smith"}, "index"=>"person_0_last_name", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"2 "}, "index"=>"journal_0_issue_volume", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"Matt's Test Article! Again!?"}, "index"=>"title_info_main_title", "field_name"=>"descMetadata"}, {"value"=>{"-1"=>""}, "index"=>"note", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"http://example.com/foo"}, "index"=>"location_url", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"Lacks"}, "index"=>"person_1_last_name", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"TOPIC 1", "1"=>"TOPIC 2", "2"=>"CONTROLLED TERM"}, "index"=>"subject_topic", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"55 "}, "index"=>"journal_0_issue_level", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"230"}, "index"=>"journal_0_issue_end_page", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"Henrietta"}, "index"=>"person_1_first_name", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"FACULTY, UNIVERSITY"}, "index"=>"person_0_institution", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"The Journal of Mock Object"}, "index"=>"journal_0_title_info_main_title", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"FEB. 2007"}, "index"=>"journal_0_issue_publication_date", "field_name"=>"descMetadata"}, {"value"=>{"-1"=>""}, "index"=>"person_1_computing_id", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"John"}, "index"=>"person_0_first_name", "field_name"=>"descMetadata"}, {"value"=>{"0"=>"1234-5678"}, "index"=>"journal_0_issn", "field_name"=>"descMetadata"}, {"value"=>{"-1"=>""}, "index"=>"embargo_embargo_release_date", "field_name"=>"rightsMetadata"}, {"value"=>{"0"=>"true"}, "index"=>:released, "field_name"=>"properties"}, {"value"=>{"0"=>"public"}, "index"=>:release_to, "field_name"=>"properties"}, {"value"=>{}, "index"=>[:release_to], "field_name"=>"properties"}]}
|
|
51
|
+
result = helper.tidy_response_from_update(sample_input)
|
|
52
|
+
(expected_output["updated"] - result["updated"]).should == []
|
|
53
|
+
end
|
|
54
|
+
it "if handling submission from jeditable (which will only submit one value at a time), return the value it submitted" do
|
|
55
|
+
sample_input = {"descMetadata"=>{"journal_0_issue_start_page"=>{"0"=>"195"}} }
|
|
56
|
+
expected_output = {"0"=>"195"}
|
|
57
|
+
helper.stubs(:params).returns({:field_id => "my field id"})
|
|
58
|
+
helper.tidy_response_from_update(sample_input).should == expected_output
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe "update_document" do
|
|
63
|
+
it "should update the document with the provided params" do
|
|
64
|
+
sample_params = "sample params"
|
|
65
|
+
mock_document = mock("document")
|
|
66
|
+
mock_document.expects(:update_datastream_attributes).with(sample_params)
|
|
67
|
+
helper.update_document(mock_document, sample_params)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|