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,64 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe BlacklightHelper do
|
|
4
|
+
# include ApplicationHelper
|
|
5
|
+
|
|
6
|
+
it "should include HydraHelper" do
|
|
7
|
+
BlacklightHelper.included_modules.should include(HydraHelper)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "Application Name Sanity Check" do
|
|
11
|
+
it "should have the application correct name" do
|
|
12
|
+
helper.application_name.should == "A Hydra Head"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "Overridden blacklight methods" do
|
|
17
|
+
describe "render_head_content" do
|
|
18
|
+
before (:each) do
|
|
19
|
+
helper.expects(:content_for).with(:head).returns("My added content")
|
|
20
|
+
end
|
|
21
|
+
it "adds the content of content_for(:head) to the output" do
|
|
22
|
+
helper.render_head_content.should == "My added content"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
describe "link_to_document" do
|
|
26
|
+
before(:each)do
|
|
27
|
+
@mock_doc = mock('mock doc')
|
|
28
|
+
@mock_doc.expects(:[]).with(:id).returns("123456")
|
|
29
|
+
end
|
|
30
|
+
it "passes on the title attribute to the link_to_with_data method" do
|
|
31
|
+
helper.link_to_document(@mock_doc,:label=>"Some crazy long label...",:title=>"Some crazy longer label").should match(/title=\"Some crazy longer label\"/)
|
|
32
|
+
end
|
|
33
|
+
it "doesn't add an erroneous title attribute if one isn't provided" do
|
|
34
|
+
helper.link_to_document(@mock_doc,:label=>"Some crazy long label...").should_not match(/title=/)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "link back to catalog" do
|
|
39
|
+
it "should return the view parameter in the link back to catalog method if there is one in the users previous search session" do
|
|
40
|
+
session[:search] = {:view=>"list"}
|
|
41
|
+
helper.link_back_to_catalog.should match(/\?view=list/)
|
|
42
|
+
end
|
|
43
|
+
it "should not return the view parameter if it wasn't provided" do
|
|
44
|
+
session[:search] = {}
|
|
45
|
+
helper.link_back_to_catalog.should_not match(/\?view=/)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe "SALT methods" do
|
|
51
|
+
describe "get_data_with_linked_label" do
|
|
52
|
+
before(:each) do
|
|
53
|
+
@doc = {"field"=>["Item1","Item2","Item3"]}
|
|
54
|
+
end
|
|
55
|
+
it "should return a string representing the collection of items with the suplied delimiter" do
|
|
56
|
+
helper.get_data_with_linked_label(@doc,"Items","field",{:delimiter=>", "}).should match(/, /)
|
|
57
|
+
end
|
|
58
|
+
it "should return a string representing the collection of items with the default <br/> delimiter" do
|
|
59
|
+
helper.get_data_with_linked_label(@doc,"Items","field").should match(/<br\/>/)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe Hydra::FileAssetsHelper do
|
|
4
|
+
describe "create_and_save_file_asset_from_params" do
|
|
5
|
+
it "should create the file asset, add posted blob to it and save the file asset" do
|
|
6
|
+
helper.stubs(:params).returns( { :Filedata => "" } )
|
|
7
|
+
mock_fa = mock("file asset")
|
|
8
|
+
mock_fa.expects(:save)
|
|
9
|
+
helper.expects(:create_asset_from_params).returns(mock_fa)
|
|
10
|
+
helper.expects(:add_posted_blob_to_asset)
|
|
11
|
+
helper.create_and_save_file_asset_from_params
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "add_posted_blob_to_asset" do
|
|
16
|
+
it "should set object title and label" do
|
|
17
|
+
mock_file = mock("File")
|
|
18
|
+
file_name = "Posted Filename.foo"
|
|
19
|
+
helper.stubs(:params).returns( :Filedata=>mock_file, :Filename=>file_name, "container_id"=>"hydrangea:2973" )
|
|
20
|
+
mock_fa = mock("file asset")
|
|
21
|
+
mock_fa.expects(:add_file_datastream).with(mock_file, :label=>file_name, :mimeType=>"mymimetype")
|
|
22
|
+
mock_fa.expects(:set_title_and_label).with( file_name, :only_if_blank=>true )
|
|
23
|
+
helper.expects(:mime_type).with(file_name).returns("mymimetype")
|
|
24
|
+
helper.add_posted_blob_to_asset(mock_fa)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should support submissions from swfupload" do
|
|
28
|
+
mock_file = mock("File")
|
|
29
|
+
file_name = "Posted Filename.foo"
|
|
30
|
+
helper.stubs(:params).returns( :Filedata=>mock_file, :Filename=>file_name, "container_id"=>"hydrangea:2973" )
|
|
31
|
+
mock_fa = mock("file asset")
|
|
32
|
+
mock_fa.expects(:add_file_datastream).with(mock_file, :label=>file_name, :mimeType=>"mymimetype")
|
|
33
|
+
mock_fa.stubs(:set_title_and_label)
|
|
34
|
+
helper.expects(:mime_type).with(file_name).returns("mymimetype")
|
|
35
|
+
helper.add_posted_blob_to_asset(mock_fa)
|
|
36
|
+
end
|
|
37
|
+
it "should support submissions from single-file uploader" do
|
|
38
|
+
mock_file = mock("File")
|
|
39
|
+
file_name = "Posted Filename.foo"
|
|
40
|
+
helper.expects(:filename_from_params).returns(file_name)
|
|
41
|
+
helper.stubs(:params).returns( :Filedata=>mock_file, :container_id=>"hydrangea:2973" )
|
|
42
|
+
mock_fa = mock("file asset")
|
|
43
|
+
helper.expects(:mime_type).with(file_name).returns("mymimetype")
|
|
44
|
+
mock_fa.expects(:add_file_datastream).with(mock_file, :label=>file_name, :mimeType=>"mymimetype")
|
|
45
|
+
mock_fa.stubs(:set_title_and_label)
|
|
46
|
+
helper.add_posted_blob_to_asset(mock_fa)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe "create_asset_from_params" do
|
|
51
|
+
it "should create a new file asset and set the label from params[:Filename]" do
|
|
52
|
+
helper.stubs(:params).returns( { :Filename => "Test Filename" } )
|
|
53
|
+
result = helper.create_asset_from_params
|
|
54
|
+
result.should be_kind_of FileAsset
|
|
55
|
+
result.label.should == "Test Filename"
|
|
56
|
+
end
|
|
57
|
+
it "should choose model by filename" do
|
|
58
|
+
pending "this is currently disabled"
|
|
59
|
+
helper.expects(:choose_model_by_filename)
|
|
60
|
+
helper.create_asset_from_params
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe "posted_file" do
|
|
65
|
+
it "should return the posted file" do
|
|
66
|
+
helper.expects(:params).returns(:Filedata=>"test posted file")
|
|
67
|
+
helper.posted_file.should == "test posted file"
|
|
68
|
+
end
|
|
69
|
+
it "should return nil if no file was posted" do
|
|
70
|
+
helper.posted_file.should == nil
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
describe "filename_from_params" do
|
|
75
|
+
it "should return the value of params[:Filename] if it was submitted" do
|
|
76
|
+
helper.stubs(:params).returns(:Filename => "Test Filename")
|
|
77
|
+
helper.filename_from_params.should == "Test Filename"
|
|
78
|
+
end
|
|
79
|
+
it "should default to using the original filename of the posted file" do
|
|
80
|
+
helper.stubs(:params).returns({})
|
|
81
|
+
helper.expects(:posted_file).returns(mock("File", :original_filename=>"Test Original Filename"))
|
|
82
|
+
helper.filename_from_params.should == "Test Original Filename"
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
describe "choose_model_by_filename" do
|
|
87
|
+
it "should return model classes based on filename extensions" do
|
|
88
|
+
pending "This can only be enabled if/when we adopt replacements for ImageAsset, AudioAsset, etc. as default primitives."
|
|
89
|
+
|
|
90
|
+
["filename.wav","filename.mp3","filename.aiff"].each do |fn|
|
|
91
|
+
helper.choose_model_by_filename(fn).should == AudioAsset
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
["filename.mov","filename.flv","filename.mp4", "filename.m4v"].each do |fn|
|
|
95
|
+
helper.choose_model_by_filename(fn).should == VideoAsset
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
["filename.jpeg","filename.jpg","filename.gif", "filename.png"].each do |fn|
|
|
99
|
+
helper.choose_model_by_filename(fn).should == ImageAsset
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
["filename.doc","filename.pdf","filename.jp2", "filename.zip"].each do |fn|
|
|
103
|
+
helper.choose_model_by_filename(fn).should == FileAsset
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require File.expand_path( File.join( 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 Hydra::RepositoryController do
|
|
12
|
+
|
|
13
|
+
describe "load_document_from_params" do
|
|
14
|
+
it "should choose which model to use based on submitted params" do
|
|
15
|
+
mock_model_class = mock("model class")
|
|
16
|
+
mock_model_class.expects(:find).with("object id")
|
|
17
|
+
helper.stubs(:params).returns( {:content_type => "preferred model", :id => "object id"} )
|
|
18
|
+
helper.expects(:retrieve_af_model).with("preferred model").returns(mock_model_class)
|
|
19
|
+
helper.load_document_from_params
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "format_pid" do
|
|
24
|
+
it "convert pids into XHTML safe strings" do
|
|
25
|
+
pid = helper.format_pid("hydra:123")
|
|
26
|
+
pid.should match(/hydra_123/)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe HydraAssetsHelper do
|
|
4
|
+
include HydraAssetsHelper
|
|
5
|
+
|
|
6
|
+
describe "link_to_create_asset" do
|
|
7
|
+
it "should generate login links with redirect params if user is not logged in" do
|
|
8
|
+
helper.expects(:current_user).returns User.new
|
|
9
|
+
helper.link_to_create_asset("Create a foo", "foo_model").should == "<a href=\"/assets/new?content_type=foo_model\" class=\"create_asset\">Create a foo</a>"
|
|
10
|
+
end
|
|
11
|
+
it "should generate login links with redirect params if user is not logged in" do
|
|
12
|
+
helper.expects(:current_user).returns false
|
|
13
|
+
helper.link_to_create_asset("Create a foo", "foo_model").should == "<a href=\"/users/sign_in?redirect_params[action]=new&redirect_params[content_type]=foo_model&redirect_params[controller]=assets\" class=\"create_asset\">Create a foo</a>"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "delete_asset_link" do
|
|
18
|
+
it "should generate a delete link and confirmation dialog" do
|
|
19
|
+
generated_html = helper.delete_asset_link("__PID__", "whizbang")
|
|
20
|
+
generated_html.should have_selector "a.delete_asset[href='/catalog/__PID__/delete']", :content=> "Delete this whizbang"
|
|
21
|
+
generated_html.should be_html_safe
|
|
22
|
+
# generated_html.should have_tag 'a.inline[href=#delete_dialog]', "Delete this whizbang"
|
|
23
|
+
# generated_html.should have_tag 'div#delete_dialog' do
|
|
24
|
+
# with_tag "p", "Do you want to permanently delete this article from the repository?"
|
|
25
|
+
# with_tag "form[action=?]", url_for(:action => "destroy", :controller => "assets", :id => "__PID__", :method => "delete") do
|
|
26
|
+
# with_tag "input[type=hidden][name=_method][value=delete]"
|
|
27
|
+
# with_tag "input[type=submit]"
|
|
28
|
+
# end
|
|
29
|
+
# end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe "get_person_from_role" do
|
|
34
|
+
before(:all) do
|
|
35
|
+
@single_person_doc = {"person_0_role_t" => ["creator"], "person_0_first_name_t" => "GIVEN NAME", "person_0_last_name_t" => "FAMILY NAME"}
|
|
36
|
+
@multiple_persons_doc = {"person_0_role_t" => ["contributor","owner"], "person_0_first_name_t" => "CONTRIBUTOR GIVEN NAME", "person_0_last_name_t" => "CONTRIBUTOR FAMILY NAME",
|
|
37
|
+
"person_1_role_t" => ["creator"], "person_1_first_name_t" => "CREATOR GIVEN NAME", "person_1_last_name_t" => "CREATOR FAMILY NAME"}
|
|
38
|
+
end
|
|
39
|
+
it "should return the appropriate when 1 is available" do
|
|
40
|
+
person = get_person_from_role(@single_person_doc,"creator")
|
|
41
|
+
person[:first].should == "GIVEN NAME" and
|
|
42
|
+
person[:last].should == "FAMILY NAME"
|
|
43
|
+
end
|
|
44
|
+
it "should return the appririate person when there is multiple users" do
|
|
45
|
+
person = get_person_from_role(@multiple_persons_doc,"creator")
|
|
46
|
+
person[:first].should == "CREATOR GIVEN NAME" and
|
|
47
|
+
person[:last].should == "CREATOR FAMILY NAME"
|
|
48
|
+
end
|
|
49
|
+
it "should return the appropriate person when they have multiple roles" do
|
|
50
|
+
person = get_person_from_role(@multiple_persons_doc,"owner")
|
|
51
|
+
person[:first].should == "CONTRIBUTOR GIVEN NAME" and
|
|
52
|
+
person[:last].should == "CONTRIBUTOR FAMILY NAME"
|
|
53
|
+
end
|
|
54
|
+
it "should return nil when there is no user for the given role" do
|
|
55
|
+
get_person_from_role(@multiple_persons_doc,"bad_role").should be_nil
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
describe "get_file_asset_count" do
|
|
60
|
+
before(:each) do
|
|
61
|
+
#setup objects for following cases
|
|
62
|
+
#
|
|
63
|
+
#outbound has_collection_member
|
|
64
|
+
#outbound has_collection_member + inbound is_part_of
|
|
65
|
+
#outbound has_collection_member + outbound has_part + inbound is_part_of
|
|
66
|
+
#outbound has_part
|
|
67
|
+
#outbound has_part + inbound is_part_of
|
|
68
|
+
#inbound is_part_of
|
|
69
|
+
#none
|
|
70
|
+
@asset_object1 = ActiveFedora::Base.new
|
|
71
|
+
@asset_object2 = ActiveFedora::Base.new
|
|
72
|
+
@asset_object3 = ActiveFedora::Base.new
|
|
73
|
+
@asset_object4 = ActiveFedora::Base.new
|
|
74
|
+
@asset_object5 = ActiveFedora::Base.new
|
|
75
|
+
@asset_object6 = ActiveFedora::Base.new
|
|
76
|
+
@asset_object7 = ActiveFedora::Base.new
|
|
77
|
+
@file_object1 = ActiveFedora::Base.new
|
|
78
|
+
@file_object2 = ActiveFedora::Base.new
|
|
79
|
+
@file_object3 = ActiveFedora::Base.new
|
|
80
|
+
@file_object4 = ActiveFedora::Base.new
|
|
81
|
+
|
|
82
|
+
@asset_object1.collection_members_append(@file_object1)
|
|
83
|
+
@asset_object1.collection_members_append(@file_object2)
|
|
84
|
+
|
|
85
|
+
@asset_object2.collection_members_append(@file_object1)
|
|
86
|
+
@asset_object2.collection_members_append(@file_object2)
|
|
87
|
+
@asset_object2.add_relationship(:has_part,@file_object3)
|
|
88
|
+
|
|
89
|
+
@asset_object3.collection_members_append(@file_object1)
|
|
90
|
+
@asset_object3.collection_members_append(@file_object2)
|
|
91
|
+
@asset_object3.add_relationship(:has_part,@file_object3)
|
|
92
|
+
@file_object4.part_of_append(@asset_object3)
|
|
93
|
+
|
|
94
|
+
@asset_object4.add_relationship(:has_part,@file_object1)
|
|
95
|
+
@asset_object5.add_relationship(:has_part,@file_object1)
|
|
96
|
+
@file_object2.part_of_append(@asset_object5)
|
|
97
|
+
@file_object1.part_of_append(@asset_object6)
|
|
98
|
+
|
|
99
|
+
@asset_object1.save
|
|
100
|
+
@asset_object2.save
|
|
101
|
+
@asset_object3.save
|
|
102
|
+
@asset_object4.save
|
|
103
|
+
@asset_object5.save
|
|
104
|
+
@asset_object6.save
|
|
105
|
+
@asset_object7.save
|
|
106
|
+
@file_object1.save
|
|
107
|
+
@file_object2.save
|
|
108
|
+
@file_object3.save
|
|
109
|
+
@file_object4.save
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
after(:each) do
|
|
113
|
+
begin
|
|
114
|
+
@asset_object1.delete
|
|
115
|
+
rescue
|
|
116
|
+
end
|
|
117
|
+
begin
|
|
118
|
+
@asset_object2.delete
|
|
119
|
+
rescue
|
|
120
|
+
end
|
|
121
|
+
begin
|
|
122
|
+
@asset_object3.delete
|
|
123
|
+
rescue
|
|
124
|
+
end
|
|
125
|
+
begin
|
|
126
|
+
@asset_object4.delete
|
|
127
|
+
rescue
|
|
128
|
+
end
|
|
129
|
+
begin
|
|
130
|
+
@asset_object5.delete
|
|
131
|
+
rescue
|
|
132
|
+
end
|
|
133
|
+
begin
|
|
134
|
+
@asset_object6.delete
|
|
135
|
+
rescue
|
|
136
|
+
end
|
|
137
|
+
begin
|
|
138
|
+
@asset_object7.delete
|
|
139
|
+
rescue
|
|
140
|
+
end
|
|
141
|
+
begin
|
|
142
|
+
@file_object1.delete
|
|
143
|
+
rescue
|
|
144
|
+
end
|
|
145
|
+
begin
|
|
146
|
+
@file_object2.delete
|
|
147
|
+
rescue
|
|
148
|
+
end
|
|
149
|
+
begin
|
|
150
|
+
@file_object3.delete
|
|
151
|
+
rescue
|
|
152
|
+
end
|
|
153
|
+
begin
|
|
154
|
+
@file_object4.delete
|
|
155
|
+
rescue
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
it "should return the correct number of assets with either has_collection_member file assets or parts" do
|
|
160
|
+
|
|
161
|
+
#cases are
|
|
162
|
+
#outbound has_collection_member
|
|
163
|
+
#outbound has_collection_member + inbound is_part_of
|
|
164
|
+
#outbound has_collection_member + outbound has_part + inbound is_part_of
|
|
165
|
+
#outbound has_part
|
|
166
|
+
#outbound has_part + inbound is_part_of
|
|
167
|
+
#inbound is_part_of
|
|
168
|
+
#none
|
|
169
|
+
|
|
170
|
+
result = ActiveFedora::Base.find_by_solr(@asset_object1.pid)
|
|
171
|
+
doc = result.hits.first
|
|
172
|
+
get_file_asset_count(doc).should == 2
|
|
173
|
+
result = ActiveFedora::Base.find_by_solr(@asset_object2.pid)
|
|
174
|
+
doc = result.hits.first
|
|
175
|
+
get_file_asset_count(doc).should == 3
|
|
176
|
+
result = ActiveFedora::Base.find_by_solr(@asset_object3.pid)
|
|
177
|
+
doc = result.hits.first
|
|
178
|
+
get_file_asset_count(doc).should == 4
|
|
179
|
+
result = ActiveFedora::Base.find_by_solr(@asset_object4.pid)
|
|
180
|
+
doc = result.hits.first
|
|
181
|
+
get_file_asset_count(doc).should == 1
|
|
182
|
+
result = ActiveFedora::Base.find_by_solr(@asset_object5.pid)
|
|
183
|
+
doc = result.hits.first
|
|
184
|
+
get_file_asset_count(doc).should == 2
|
|
185
|
+
result = ActiveFedora::Base.find_by_solr(@asset_object6.pid)
|
|
186
|
+
doc = result.hits.first
|
|
187
|
+
get_file_asset_count(doc).should == 1
|
|
188
|
+
|
|
189
|
+
result = ActiveFedora::Base.find_by_solr(@asset_object7.pid)
|
|
190
|
+
doc = result.hits.first
|
|
191
|
+
get_file_asset_count(doc).should == 0
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
include HydraDjatokaHelper
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
describe HydraDjatokaHelper do
|
|
6
|
+
|
|
7
|
+
describe "hydra_djatoka_url_for" do
|
|
8
|
+
it "should return the url for retrieving the given document's canonical jp2 url" do
|
|
9
|
+
mock_doc = mock("document")
|
|
10
|
+
mock_doc.expects(:kind_of?).with(SolrDocument).returns(true)
|
|
11
|
+
mock_doc.expects(:id).returns("myPid")
|
|
12
|
+
|
|
13
|
+
hydra_djatoka_url_for(mock_doc).should == "/get/myPid.jp2?image_server=true"
|
|
14
|
+
end
|
|
15
|
+
it "should work with a mash as the document" do
|
|
16
|
+
mock_doc = mock("document")
|
|
17
|
+
mock_doc.expects(:kind_of?).with(SolrDocument).returns(false)
|
|
18
|
+
mock_doc.expects(:kind_of?).with(Mash).returns(true)
|
|
19
|
+
mock_doc.expects(:[]).with(:id).returns("myPid")
|
|
20
|
+
|
|
21
|
+
hydra_djatoka_url_for(mock_doc).should == "/get/myPid.jp2?image_server=true"
|
|
22
|
+
end
|
|
23
|
+
it "should accept scale arguments" do
|
|
24
|
+
mock_doc = mock("document")
|
|
25
|
+
mock_doc.expects(:kind_of?).with(SolrDocument).returns(true)
|
|
26
|
+
mock_doc.expects(:id).returns("myPid")
|
|
27
|
+
|
|
28
|
+
hydra_djatoka_url_for(mock_doc, :scale=>"90").should == "/get/myPid.jp2?image_server[scale]=90"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe HydraFedoraMetadataHelper do
|
|
4
|
+
|
|
5
|
+
before(:all) do
|
|
6
|
+
# @mock_ng_ds = mock("nokogiri datastream")
|
|
7
|
+
# @mock_ng_ds.stubs(:kind_of?).with(ActiveFedora::NokogiriDatastream).returns(true)
|
|
8
|
+
# @mock_ng_ds.stubs(:class).returns(ActiveFedora::NokogiriDatastream)
|
|
9
|
+
# @mock_md_ds = stub(:stream_values=>"value")
|
|
10
|
+
# datastreams = {"ng_ds"=>@mock_ng_ds,"simple_ds"=>@mock_md_ds}
|
|
11
|
+
@resource = mock("fedora object")
|
|
12
|
+
# @resource.stubs(:datastreams).returns(datastreams)
|
|
13
|
+
# @resource.stubs(:datastreams_in_memory).returns(datastreams)
|
|
14
|
+
|
|
15
|
+
@resource.stubs(:get_values_from_datastream).with("simple_ds", "subject", "").returns( ["topic1","topic2"] )
|
|
16
|
+
|
|
17
|
+
@resource.stubs(:get_values_from_datastream).with("ng_ds", [:title, :main_title], "").returns( ["My Title"] )
|
|
18
|
+
@resource.stubs(:get_values_from_datastream).with("ng_ds", [{:person=>1}, :given_name], "").returns( ["Bob"] )
|
|
19
|
+
|
|
20
|
+
@resource.stubs(:get_values_from_datastream).with("empty_ds", "something", "").returns( [""] )
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "fedora_text_field" do
|
|
24
|
+
it "should generate a text field input with values from the given datastream" do
|
|
25
|
+
generated_html = helper.fedora_text_field(@resource,"ng_ds",[:title, :main_title])
|
|
26
|
+
generated_html.should have_selector "#title_main_title_0-container.editable-container" do |container|
|
|
27
|
+
container.should have_selector "span#title_main_title_0-text.editable-text.text", "My Title"
|
|
28
|
+
container.should have_selector "input#title_main_title_0.editable-edit.edit" do |input|
|
|
29
|
+
input.should have_selector "[value=?]", "My Title"
|
|
30
|
+
input.should have_selector "[name=?]", "asset[ng_ds][title_main_title][0]"
|
|
31
|
+
input.should have_selector "[data-datastream-name=?]", "ng_ds"
|
|
32
|
+
input.should have_selector "[rel=?]", "title_main_title"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
it "should generate an ordered list of text field inputs" do
|
|
37
|
+
generated_html = helper.fedora_text_field(@resource,"simple_ds","subject")
|
|
38
|
+
generated_html.should have_selector "ol[rel=subject]" do |tag|
|
|
39
|
+
tag.should have_selector "li#subject_0-container.editable-container.field" do |tag|
|
|
40
|
+
tag.should have_selector "a.destructive.field"
|
|
41
|
+
tag.should have_selector "span#subject_0-text.editable-text.text", "topic1"
|
|
42
|
+
tag.should have_selector "input#subject_0.editable-edit.edit" do |tag|
|
|
43
|
+
tag.should have_selector "[value=?]", "topic1"
|
|
44
|
+
tag.should have_selector "[name=?]", "asset[simple_ds][subject][0]"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
tag.should have_selector "li#subject_1-container.editable-container.field" do |tag|
|
|
48
|
+
tag.should have_selector "a.destructive.field"
|
|
49
|
+
tag.should have_selector "span#subject_1-text.editable-text.text", "topic2"
|
|
50
|
+
tag.should have_selector "input#subject_1.editable-edit.edit" do |tag|
|
|
51
|
+
tag.should have_selector "[value=?]", "topic2"
|
|
52
|
+
tag.should have_selector "[name=?]", "asset[simple_ds][subject][1]"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
generated_html.should have_selector "input", :class=>"editable-edit", :id=>"subject_1", :name=>"asset[simple_ds][subject_1]", :value=>"topic9"
|
|
57
|
+
generated_html.should be_html_safe
|
|
58
|
+
end
|
|
59
|
+
it "should render an empty control if the field has no values" do
|
|
60
|
+
helper.fedora_text_field(@resource,"empty_ds","something").should have_selector "li#something_0-container.editable-container" do |tag|
|
|
61
|
+
tag.should have_selector "#something_0-text.editable-text.text", ""
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
it "should limit to single-value output with no ordered list if :multiple=>false" do
|
|
65
|
+
generated_html = helper.fedora_text_field(@resource,"simple_ds","subject", :multiple=>false)
|
|
66
|
+
generated_html.should_not have_selector "ol"
|
|
67
|
+
generated_html.should_not have_selector "li"
|
|
68
|
+
|
|
69
|
+
generated_html.should have_selector "span#subject-container.editable-container.field" do |tag|
|
|
70
|
+
tag.should have_selector "span#subject-text.editable-text.text", "topic1"
|
|
71
|
+
tag.should have_selector "input#subject.editable-edit.edit[value=topic1]" do |tag|
|
|
72
|
+
tag.should have_selector "[name=?]", "asset[simple_ds][subject][0]"
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
describe "fedora_text_area" do
|
|
79
|
+
it "should generate an ordered list of textile-enabled text area with values from the given datastream" do
|
|
80
|
+
helper.fedora_text_area(@resource,"simple_ds","subject").should have_selector "ol[rel=subject]" do |tag|
|
|
81
|
+
tag.should have_selector "li#subject_0-container.field" do |tag|
|
|
82
|
+
tag.should_not have_selector "a.destructive.field"
|
|
83
|
+
tag.should have_selector "span#subject_0-text.editable-text.text[style=display:none;]", "topic1"
|
|
84
|
+
tag.should have_selector "textarea#subject_0.editable-edit.edit", "topic1"
|
|
85
|
+
end
|
|
86
|
+
tag.should have_selector "li#subject_1-container.field" do |tag|
|
|
87
|
+
tag.should have_selector "span#subject_1-text.editable-text.text[style=display:none;]","topic2"
|
|
88
|
+
tag.should have_selector "textarea#subject_1.editable-edit.edit", "topic2"
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
it "should render an empty control if the field has no values" do
|
|
93
|
+
helper.fedora_text_area(@resource,"empty_ds","something").should have_selector "li#something_0-container.field" do |tag|
|
|
94
|
+
tag.should have_selector "span#something_0-text.editable-text.text[style=display:none;]", ""
|
|
95
|
+
tag.should have_selector "textarea#something_0.editable-edit.edit", ""
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
it "should limit to single-value output if :multiple=>false" do
|
|
99
|
+
generated_html = helper.fedora_text_area(@resource,"simple_ds","subject", :multiple=>false)
|
|
100
|
+
generated_html.should_not have_selector "ol"
|
|
101
|
+
generated_html.should_not have_selector "li"
|
|
102
|
+
generated_html.should have_selector "span#subject-container.field" do |tag|
|
|
103
|
+
tag.should have_selector "span#subject-text.editable-text.text[style=display:none;]", "topic1"
|
|
104
|
+
tag.should have_selector "textarea#subject.editable-edit.edit", "topic1"
|
|
105
|
+
end
|
|
106
|
+
generated_html.should be_html_safe
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
describe "fedora_select" do
|
|
111
|
+
it "should generate a select with values from the given datastream" do
|
|
112
|
+
generated_html = helper.fedora_select(@resource,"simple_ds","subject", :choices=>["topic1","topic2", "topic3"])
|
|
113
|
+
generated_html.should have_selector "select.metadata-dd[name='asset[simple_ds][subject][0]']" do |tag|
|
|
114
|
+
tag.should have_selector "[rel=?]", "subject"
|
|
115
|
+
tag.should have_selector "option[value=topic1][selected=selected]"
|
|
116
|
+
tag.should have_selector "option[value=topic2][selected=selected]"
|
|
117
|
+
tag.should have_selector "option[value=topic3]"
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
it "should return the product of fedora_text_field if :choices is not set" do
|
|
121
|
+
helper.expects(:fedora_text_field).returns("fake response")
|
|
122
|
+
generated_html = helper.fedora_select(@resource,"simple_ds","subject")
|
|
123
|
+
generated_html.should == "fake response"
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
describe "fedora_date_select" do
|
|
128
|
+
it "should generate a date picker with values from the given datastream" do
|
|
129
|
+
generated_html = helper.fedora_date_select(@resource,"simple_ds","subject")
|
|
130
|
+
generated_html.should have_selector ".date-select[name='asset[simple_ds][subject]']" do |tag|
|
|
131
|
+
tag.should have_selector "[rel=?]", "subject"
|
|
132
|
+
tag.should have_selector "input#subject-sel-y.controlled-date-part.w4em"
|
|
133
|
+
tag.should have_selector "select#subject-sel-mm.controlled-date-part" do |tag|
|
|
134
|
+
tag.should have_selector "option[value=01]", "January"
|
|
135
|
+
tag.should have_selector "option[value=12]", "December"
|
|
136
|
+
end
|
|
137
|
+
tag.should have_selector "select#subject-sel-dd.controlled-date-part" do |tag|
|
|
138
|
+
tag.should have_selector "option[value=01]", "01"
|
|
139
|
+
tag.should have_selector "option[value=31]", "31"
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
describe "fedora_checkbox" do
|
|
147
|
+
it "should generate a set of checkboxes with values from the given datastream"
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
describe "all field generators" do
|
|
151
|
+
it "should include any necessary field_selector info" do
|
|
152
|
+
field_selectors_regexp = helper.field_selectors_for("ng_ds",[:title, :main_title]).gsub('/','\/').gsub(']','\]').gsub('[','\[')
|
|
153
|
+
["fedora_text_field", "fedora_text_area", "fedora_select", "fedora_date_select"].each do |method|
|
|
154
|
+
generated_html = eval("helper.#{method}(@resource,\"ng_ds\",[:title, :main_title])")
|
|
155
|
+
generated_html.should match( field_selectors_regexp )
|
|
156
|
+
end
|
|
157
|
+
generated_html = helper.fedora_select(@resource,"ng_ds",[:title, :main_title], :choices=>["choice1"])
|
|
158
|
+
generated_html.should match( field_selectors_regexp )
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
describe "fedora_text_field_insert_link" do
|
|
163
|
+
it "should generate a link for inserting a fedora_text_field into the page" do
|
|
164
|
+
helper.fedora_text_field_insert_link("ng_ds",[:title, :main_title]).should have_selector "a.addval.textfield[href='#']"
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
describe "fedora_text_area_insert_link" do
|
|
169
|
+
it "should generate a link for inserting a fedora_text_area into the page" do
|
|
170
|
+
helper.fedora_text_area_insert_link("ng_ds",[:title, :main_title]).should have_selector "a.addval.textarea[href='#']"
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
describe "fedora_field_label" do
|
|
176
|
+
it "should generate a label with appropriate @for attribute" do
|
|
177
|
+
helper.fedora_field_label("ng_ds",[:title, :main_title], "Title:").should have_selector "label[for=title_main_title]", :content => "Title:"
|
|
178
|
+
end
|
|
179
|
+
it "should display the field name if no label is provided" do
|
|
180
|
+
helper.fedora_field_label("ng_ds",[:title, :main_title]).should have_selector "label[for=title_main_title]", :content=>"title_main_title"
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
describe "field_selectors_for" do
|
|
185
|
+
it "should generate any necessary field_selector values for the given field" do
|
|
186
|
+
generated_html = helper.field_selectors_for("myDsName", [{:name => 3}, :name_part])
|
|
187
|
+
generated_html.should have_selector "input.fieldselector[type=hidden][name='field_selectors[myDsName][name_3_name_part][][name]']" do |tag|
|
|
188
|
+
tag.should have_selector "[rel=name_3_name_part]"
|
|
189
|
+
tag.should have_selector "[value=3]"
|
|
190
|
+
end
|
|
191
|
+
generated_html.should have_selector "input.fieldselector[type=hidden][name='field_selectors[myDsName][name_3_name_part][]']" do |tag|
|
|
192
|
+
tag.should have_selector "[rel=name_3_name_part]"
|
|
193
|
+
tag.should have_selector "[value=name_part]"
|
|
194
|
+
end
|
|
195
|
+
# ordering is important. this next line makes sure that the inputs are in the correct order
|
|
196
|
+
# (tried using CSS3 nth-of-type selectors in have_selector but it didn't work)
|
|
197
|
+
generated_html.should match(/<input.*name="field_selectors\[myDsName\]\[name_3_name_part\]\[\]\[name\]".*\/><input.*name="field_selectors\[myDsName\]\[name_3_name_part\]\[\].*value="name_part" .*\/>/)
|
|
198
|
+
end
|
|
199
|
+
it "should not generate any field selectors if the field key is not an array" do
|
|
200
|
+
helper.field_selectors_for("myDsName", :description).should == ""
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
describe "hydra_form_for" do
|
|
205
|
+
it "should generate an entire form" do
|
|
206
|
+
pending
|
|
207
|
+
eval_erb(%(
|
|
208
|
+
<% hydra_form_for @resource do |h| %>
|
|
209
|
+
<h2>Hello</h2>
|
|
210
|
+
<%= h.fedora_text_field %>
|
|
211
|
+
<% end %>
|
|
212
|
+
)).should match_html("<h2>Hello</h2> blah blah blah ")
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
end
|