blacklight 6.24.0 → 7.0.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.npmignore +23 -0
- data/.rubocop.yml +15 -3
- data/.rubocop_todo.yml +242 -379
- data/.solr_wrapper.yml +1 -1
- data/.travis.yml +20 -24
- data/Gemfile +1 -4
- data/README.md +21 -4
- data/Rakefile +1 -2
- data/VERSION +1 -1
- data/app/assets/images/blacklight/list.svg +1 -0
- data/app/assets/images/blacklight/search.svg +1 -0
- data/app/assets/javascripts/blacklight/blacklight.js +496 -56
- data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +3 -1
- data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
- data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
- data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
- data/app/assets/stylesheets/blacklight/_facets.scss +74 -92
- data/app/assets/stylesheets/blacklight/_header.scss +35 -48
- data/app/assets/stylesheets/blacklight/_icons.scss +29 -0
- data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
- data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
- data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
- data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
- data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
- data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
- data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
- data/app/builders/blacklight/action_builder.rb +56 -0
- data/app/controllers/bookmarks_controller.rb +2 -2
- data/app/controllers/catalog_controller.rb +2 -2
- data/app/controllers/concerns/blacklight/base.rb +0 -33
- data/app/controllers/concerns/blacklight/bookmarks.rb +20 -37
- data/app/controllers/concerns/blacklight/catalog.rb +254 -213
- data/app/controllers/concerns/blacklight/controller.rb +117 -133
- data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
- data/app/controllers/concerns/blacklight/search_context.rb +10 -14
- data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
- data/app/controllers/concerns/blacklight/token_based_user.rb +6 -10
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +32 -118
- data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
- data/app/helpers/blacklight/component_helper_behavior.rb +19 -19
- data/app/helpers/blacklight/configuration_helper_behavior.rb +25 -54
- data/app/helpers/blacklight/facets_helper_behavior.rb +40 -39
- data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
- data/app/helpers/blacklight/icon_helper_behavior.rb +16 -0
- data/app/helpers/blacklight/layout_helper_behavior.rb +3 -10
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +6 -6
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +18 -11
- data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
- data/app/helpers/blacklight/url_helper_behavior.rb +21 -27
- data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
- data/app/javascript/blacklight/autofocus.js +20 -0
- data/app/javascript/blacklight/bookmark_toggle.js +25 -0
- data/app/javascript/blacklight/checkbox_submit.js +133 -0
- data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
- data/app/javascript/blacklight/core.js +39 -0
- data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
- data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +63 -63
- data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -2
- data/app/models/blacklight/facet_paginator.rb +3 -3
- data/app/models/blacklight/icon.rb +53 -0
- data/app/models/blacklight/solr/facet_paginator.rb +3 -3
- data/app/models/blacklight/suggest_search.rb +15 -4
- data/app/models/bookmark.rb +4 -9
- data/app/models/concerns/blacklight/configurable.rb +13 -13
- data/app/models/concerns/blacklight/document.rb +8 -42
- data/app/models/concerns/blacklight/document/active_model_shim.rb +8 -11
- data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
- data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
- data/app/models/concerns/blacklight/document/email.rb +1 -1
- data/app/models/concerns/blacklight/document/extensions.rb +5 -5
- data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
- data/app/models/concerns/blacklight/document/sms.rb +1 -1
- data/app/models/concerns/blacklight/solr/document.rb +7 -8
- data/app/models/concerns/blacklight/suggest/response.rb +3 -5
- data/app/models/concerns/blacklight/user.rb +6 -6
- data/app/models/record_mailer.rb +5 -6
- data/app/models/search.rb +4 -7
- data/app/presenters/blacklight/field_presenter.rb +5 -5
- data/app/presenters/blacklight/index_presenter.rb +34 -71
- data/app/presenters/blacklight/json_presenter.rb +7 -4
- data/app/presenters/blacklight/link_alternate_presenter.rb +1 -1
- data/app/presenters/blacklight/rendering/abstract_step.rb +5 -5
- data/app/presenters/blacklight/rendering/helper_method.rb +8 -8
- data/app/presenters/blacklight/rendering/join.rb +3 -3
- data/app/presenters/blacklight/rendering/link_to_facet.rb +19 -19
- data/app/presenters/blacklight/rendering/microdata.rb +3 -3
- data/app/presenters/blacklight/rendering/pipeline.rb +5 -5
- data/app/presenters/blacklight/search_bar_presenter.rb +37 -0
- data/app/presenters/blacklight/show_presenter.rb +20 -69
- data/app/presenters/blacklight/thumbnail_presenter.rb +72 -0
- data/app/services/blacklight/document_factory.rb +11 -0
- data/app/services/blacklight/field_retriever.rb +24 -24
- data/app/services/blacklight/search_service.rb +154 -0
- data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
- data/app/views/blacklight/nav/_search_history.html.erb +1 -1
- data/app/views/bookmarks/_tools.html.erb +2 -2
- data/app/views/bookmarks/index.html.erb +2 -2
- data/app/views/catalog/_bookmark_control.html.erb +26 -10
- data/app/views/catalog/_citation.html.erb +18 -23
- data/app/views/catalog/_constraints.html.erb +5 -8
- data/app/views/catalog/_constraints_element.html.erb +6 -6
- data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +2 -2
- data/app/views/catalog/_document.html.erb +5 -3
- data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +0 -0
- data/app/views/catalog/_document_action.html.erb +2 -1
- data/app/views/catalog/_email_form.html.erb +8 -4
- data/app/views/catalog/_facet_index_navigation.html.erb +3 -3
- data/app/views/catalog/_facet_layout.html.erb +5 -7
- data/app/views/catalog/_facet_limit.html.erb +3 -2
- data/app/views/catalog/_facet_pagination.html.erb +10 -10
- data/app/views/catalog/_facet_pivot.html.erb +2 -2
- data/app/views/catalog/_facets.html.erb +8 -12
- data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +0 -0
- data/app/views/catalog/_home_text.html.erb +32 -36
- data/app/views/catalog/_index.html.erb +12 -0
- data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +2 -2
- data/app/views/catalog/_per_page_widget.html.erb +6 -7
- data/app/views/catalog/_previous_next_doc.html.erb +6 -14
- data/app/views/catalog/_search_form.html.erb +12 -8
- data/app/views/catalog/_search_header.html.erb +0 -3
- data/app/views/catalog/_search_results.html.erb +4 -0
- data/app/views/catalog/_show.html.erb +10 -0
- data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
- data/app/views/catalog/_show_main_content.html.erb +4 -4
- data/app/views/catalog/_show_sidebar.html.erb +3 -3
- data/app/views/catalog/_show_tools.html.erb +9 -11
- data/app/views/catalog/_sms_form.html.erb +8 -4
- data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
- data/app/views/catalog/_sort_widget.html.erb +7 -7
- data/app/views/catalog/_thumbnail.html.erb +5 -0
- data/app/views/catalog/_view_type_group.html.erb +2 -2
- data/app/views/catalog/citation.html.erb +1 -1
- data/app/views/catalog/citation.js.erb +9 -1
- data/app/views/catalog/email.html.erb +5 -5
- data/app/views/catalog/email_success.html.erb +11 -9
- data/app/views/catalog/facet.html.erb +5 -6
- data/app/views/catalog/index.atom.builder +10 -15
- data/app/views/catalog/index.html.erb +9 -11
- data/app/views/catalog/index.json.jbuilder +65 -3
- data/app/views/catalog/index.rss.builder +5 -5
- data/app/views/catalog/opensearch.xml.builder +10 -10
- data/app/views/catalog/show.html.erb +11 -6
- data/app/views/catalog/sms.html.erb +2 -3
- data/app/views/catalog/sms_success.html.erb +11 -10
- data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
- data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
- data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
- data/app/views/kaminari/blacklight/_next_page.html.erb +4 -4
- data/app/views/kaminari/blacklight/_page.html.erb +3 -3
- data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
- data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
- data/app/views/layouts/blacklight.html.erb +14 -41
- data/app/views/layouts/blacklight/base.html.erb +43 -0
- data/app/views/layouts/catalog_result.html.erb +11 -0
- data/app/views/search_history/index.html.erb +16 -21
- data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
- data/app/views/shared/_header_navbar.html.erb +8 -13
- data/app/views/shared/_modal.html.erb +6 -0
- data/app/views/shared/_user_util_links.html.erb +22 -0
- data/blacklight.gemspec +10 -11
- data/config/locales/blacklight.de.yml +0 -30
- data/config/locales/blacklight.en.yml +1 -27
- data/config/locales/blacklight.es.yml +0 -30
- data/config/locales/blacklight.fr.yml +0 -30
- data/config/locales/blacklight.hu.yml +210 -0
- data/config/locales/blacklight.it.yml +0 -30
- data/config/locales/blacklight.nl.yml +210 -0
- data/config/locales/blacklight.pt-BR.yml +6 -32
- data/config/locales/blacklight.sq.yml +1 -28
- data/config/locales/blacklight.zh.yml +0 -25
- data/config/routes.rb +3 -10
- data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
- data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
- data/lib/blacklight.rb +4 -5
- data/lib/blacklight/abstract_repository.rb +9 -21
- data/lib/blacklight/configuration.rb +82 -89
- data/lib/blacklight/configuration/context.rb +1 -1
- data/lib/blacklight/configuration/facet_field.rb +16 -9
- data/lib/blacklight/configuration/field.rb +32 -3
- data/lib/blacklight/configuration/fields.rb +41 -48
- data/lib/blacklight/configuration/search_field.rb +2 -2
- data/lib/blacklight/configuration/sort_field.rb +2 -2
- data/lib/blacklight/configuration/view_config.rb +4 -0
- data/lib/blacklight/engine.rb +6 -10
- data/lib/blacklight/exceptions.rb +4 -7
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +107 -0
- data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
- data/lib/blacklight/parameters.rb +1 -1
- data/lib/blacklight/routes/searchable.rb +1 -0
- data/lib/blacklight/search_builder.rb +26 -35
- data/lib/blacklight/search_state.rb +8 -8
- data/lib/blacklight/solr/repository.rb +3 -36
- data/lib/blacklight/solr/request.rb +1 -1
- data/lib/blacklight/solr/response.rb +29 -30
- data/lib/blacklight/solr/response/facets.rb +29 -31
- data/lib/blacklight/solr/response/group.rb +3 -3
- data/lib/blacklight/solr/response/group_response.rb +1 -1
- data/lib/blacklight/solr/response/more_like_this.rb +2 -2
- data/lib/blacklight/solr/response/response.rb +2 -2
- data/lib/blacklight/solr/response/spelling.rb +3 -3
- data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
- data/lib/blacklight/version.rb +1 -1
- data/lib/generators/blacklight/assets_generator.rb +8 -8
- data/lib/generators/blacklight/controller_generator.rb +4 -5
- data/lib/generators/blacklight/document_generator.rb +1 -1
- data/lib/generators/blacklight/install_generator.rb +18 -21
- data/lib/generators/blacklight/search_builder_generator.rb +1 -1
- data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +4 -6
- data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
- data/lib/generators/blacklight/templates/blacklight.scss +0 -2
- data/lib/generators/blacklight/templates/catalog_controller.rb +52 -51
- data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
- data/lib/generators/blacklight/templates/solr/conf/schema.xml +390 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
- data/lib/generators/blacklight/test_support_generator.rb +10 -10
- data/lib/generators/blacklight/user_generator.rb +3 -6
- data/lib/railties/blacklight.rake +19 -14
- data/package-lock.json +2057 -0
- data/package.json +28 -0
- data/spec/controllers/alternate_controller_spec.rb +1 -1
- data/spec/controllers/application_controller_spec.rb +1 -1
- data/spec/controllers/blacklight/base_spec.rb +1 -1
- data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
- data/spec/controllers/blacklight/facet_spec.rb +1 -1
- data/spec/controllers/blacklight/search_fields_spec.rb +1 -13
- data/spec/controllers/bookmarks_controller_spec.rb +1 -36
- data/spec/controllers/catalog_controller_spec.rb +153 -53
- data/spec/controllers/search_history_controller_spec.rb +2 -2
- data/spec/features/alternate_controller_spec.rb +1 -1
- data/spec/features/autocomplete_spec.rb +2 -2
- data/spec/features/bookmarks_spec.rb +10 -10
- data/spec/features/did_you_mean_spec.rb +3 -9
- data/spec/features/facets_spec.rb +11 -11
- data/spec/features/record_view_spec.rb +1 -6
- data/spec/features/search_context_spec.rb +2 -2
- data/spec/features/search_filters_spec.rb +41 -41
- data/spec/features/search_formats_spec.rb +1 -1
- data/spec/features/search_history_spec.rb +1 -26
- data/spec/features/search_pagination_spec.rb +1 -1
- data/spec/features/search_results_spec.rb +3 -4
- data/spec/features/search_sort_spec.rb +2 -2
- data/spec/features/search_spec.rb +5 -10
- data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
- data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +70 -65
- data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +7 -8
- data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +1 -1
- data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
- data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -15
- data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +2 -3
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +80 -0
- data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +9 -9
- data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +4 -2
- data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +11 -15
- data/spec/helpers/blacklight_helper_spec.rb +36 -141
- data/spec/helpers/catalog_helper_spec.rb +37 -56
- data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +3 -3
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +11 -0
- data/spec/lib/blacklight/configuration/field_spec.rb +12 -0
- data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +153 -0
- data/spec/lib/blacklight/parameters_spec.rb +1 -1
- data/spec/lib/blacklight/search_state_spec.rb +2 -2
- data/spec/lib/blacklight_spec.rb +1 -1
- data/spec/lib/tasks/blacklight_task_spec.rb +1 -1
- data/spec/models/blacklight/configurable_spec.rb +15 -16
- data/spec/models/blacklight/configuration/context_spec.rb +1 -1
- data/spec/models/blacklight/configuration_spec.rb +146 -135
- data/spec/models/blacklight/document/active_model_shim_spec.rb +11 -1
- data/spec/models/blacklight/document/cache_key_spec.rb +1 -1
- data/spec/models/blacklight/document/dublin_core_spec.rb +5 -5
- data/spec/models/blacklight/document/email_spec.rb +3 -3
- data/spec/models/blacklight/document/sms_spec.rb +3 -3
- data/spec/models/blacklight/document_spec.rb +3 -16
- data/spec/models/blacklight/facet_paginator_spec.rb +1 -1
- data/spec/models/blacklight/icon_spec.rb +34 -0
- data/spec/models/blacklight/search_builder_spec.rb +33 -27
- data/spec/models/blacklight/solr/document_spec.rb +18 -7
- data/spec/models/blacklight/solr/facet_paginator_spec.rb +1 -1
- data/spec/models/blacklight/solr/repository_spec.rb +32 -27
- data/spec/models/blacklight/solr/request_spec.rb +1 -1
- data/spec/models/blacklight/solr/response/facets_spec.rb +1 -1
- data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -1
- data/spec/models/blacklight/solr/response/group_spec.rb +1 -1
- data/spec/models/blacklight/solr/response_spec.rb +9 -6
- data/spec/models/blacklight/solr/search_builder_spec.rb +35 -48
- data/spec/models/blacklight/suggest/response_spec.rb +4 -5
- data/spec/models/blacklight/suggest_search_spec.rb +14 -7
- data/spec/models/blacklight/user_spec.rb +1 -1
- data/spec/models/bookmark_spec.rb +1 -1
- data/spec/models/record_mailer_spec.rb +2 -2
- data/spec/models/search_spec.rb +1 -1
- data/spec/models/solr_document_spec.rb +3 -3
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +72 -0
- data/spec/presenters/index_presenter_spec.rb +70 -143
- data/spec/presenters/pipeline_spec.rb +4 -4
- data/spec/presenters/show_presenter_spec.rb +83 -145
- data/spec/presenters/thumbnail_presenter_spec.rb +171 -0
- data/spec/routing/catalog_routing_spec.rb +1 -17
- data/spec/services/blacklight/search_service_spec.rb +446 -0
- data/spec/spec_helper.rb +22 -9
- data/spec/test_app_templates/Gemfile.extra +2 -5
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
- data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -3
- data/spec/views/catalog/_constraints_element.html.erb_spec.rb +8 -8
- data/spec/views/catalog/_document.html.erb_spec.rb +7 -7
- data/spec/views/catalog/_document_list.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
- data/spec/views/catalog/_facets.html.erb_spec.rb +2 -2
- data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +1 -1
- data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +4 -4
- data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +4 -27
- data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
- data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +1 -1
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +3 -3
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +3 -3
- data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -1
- data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +3 -3
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +5 -1
- data/spec/views/catalog/email_success.html.erb_spec.rb +9 -0
- data/spec/views/catalog/facet.html.erb_spec.rb +1 -1
- data/spec/views/catalog/facet.json.jbuilder_spec.rb +1 -1
- data/spec/views/catalog/index.atom.builder_spec.rb +2 -2
- data/spec/views/catalog/index.html.erb_spec.rb +4 -7
- data/spec/views/catalog/index.json.jbuilder_spec.rb +66 -21
- data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
- data/spec/views/catalog/show.html.erb_spec.rb +2 -2
- data/spec/views/catalog/sms_success.html.erb_spec.rb +9 -0
- data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -4
- data/tasks/blacklight.rake +10 -8
- data/template.demo.rb +1 -11
- metadata +171 -189
- data/app/assets/javascripts/blacklight/autofocus.js +0 -16
- data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
- data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -139
- data/app/assets/javascripts/blacklight/core.js +0 -30
- data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
- data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
- data/app/controllers/concerns/blacklight/search_helper.rb +0 -161
- data/app/controllers/concerns/blacklight/suggest.rb +0 -25
- data/app/controllers/saved_searches_controller.rb +0 -4
- data/app/controllers/suggest_controller.rb +0 -4
- data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
- data/app/helpers/blacklight/render_partials_helper.rb +0 -205
- data/app/helpers/blacklight_configuration_helper.rb +0 -4
- data/app/helpers/blacklight_url_helper.rb +0 -4
- data/app/helpers/component_helper.rb +0 -4
- data/app/helpers/facets_helper.rb +0 -4
- data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
- data/app/helpers/layout_helper.rb +0 -4
- data/app/helpers/render_constraints_helper.rb +0 -4
- data/app/helpers/search_history_constraints_helper.rb +0 -4
- data/app/helpers/suggest_helper.rb +0 -4
- data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
- data/app/presenters/blacklight/document_presenter.rb +0 -153
- data/app/views/_user_util_links.html.erb +0 -26
- data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
- data/app/views/catalog/_index_default.html.erb +0 -12
- data/app/views/catalog/_show_default.html.erb +0 -10
- data/app/views/catalog/_thumbnail_default.html.erb +0 -5
- data/app/views/saved_searches/index.html.erb +0 -32
- data/app/views/shared/_ajax_modal.html.erb +0 -6
- data/lib/blacklight/utils.rb +0 -183
- data/lib/generators/blacklight/solr4_generator.rb +0 -31
- data/solr/conf/schema.xml +0 -627
- data/solr/conf/solrconfig.xml +0 -411
- data/spec/controllers/blacklight/search_helper_spec.rb +0 -489
- data/spec/controllers/saved_searches_controller_spec.rb +0 -32
- data/spec/controllers/suggest_controller_spec.rb +0 -17
- data/spec/features/saved_searches_spec.rb +0 -47
- data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
- data/spec/lib/blacklight/utils_spec.rb +0 -167
- data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
- data/spec/presenters/document_presenter_spec.rb +0 -438
- data/spec/support/backport_test.rb +0 -14
data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
|
-
require 'generators/blacklight/
|
|
2
|
+
require 'generators/blacklight/solr_generator'
|
|
3
3
|
|
|
4
|
-
describe Blacklight::
|
|
4
|
+
RSpec.describe Blacklight::SolrGenerator do
|
|
5
5
|
let(:destination) { Dir.mktmpdir }
|
|
6
6
|
|
|
7
7
|
describe "#solr_wrapper_config" do
|
|
@@ -57,4 +57,4 @@ describe Blacklight::Solr5Generator do
|
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
|
-
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
RSpec.describe Blacklight::Configuration::FacetField do
|
|
2
|
+
describe 'link_to_search' do
|
|
3
|
+
subject { described_class.new(link_to_search: true) }
|
|
4
|
+
|
|
5
|
+
it 'is deprecated' do
|
|
6
|
+
expect(Deprecation).to receive(:warn)
|
|
7
|
+
expect(subject.normalize!)
|
|
8
|
+
expect(subject.link_to_facet).to eq true
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
RSpec.describe Blacklight::Configuration::Field do
|
|
2
|
+
subject { described_class.new(key: key, label: label) }
|
|
3
|
+
let(:key) { 'some_key' }
|
|
4
|
+
let(:label) { 'some label' }
|
|
5
|
+
|
|
6
|
+
describe '#display_label' do
|
|
7
|
+
it "looks up the label to display for the given document and field" do
|
|
8
|
+
allow(I18n).to receive(:t).with(:"blacklight.search.fields.my_context.some_key", default: [:"blacklight.search.fields.some_key", label, subject.default_label]).and_return('x')
|
|
9
|
+
expect(subject.display_label('my_context')).to eq 'x'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe Blacklight::NestedOpenStructWithHashAccess do
|
|
4
|
+
describe "#deep_dup" do
|
|
5
|
+
it "preserves the current class" do
|
|
6
|
+
expect(described_class.new(described_class).deep_dup).to be_a_kind_of described_class
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "preserves the default proc" do
|
|
10
|
+
nested = described_class.new Hash
|
|
11
|
+
|
|
12
|
+
copy = nested.deep_dup
|
|
13
|
+
copy.a[:b] = 1
|
|
14
|
+
expect(copy.a[:b]).to eq 1
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe Blacklight::OpenStructWithHashAccess do
|
|
4
|
+
it "provides hash-like accessors for OpenStruct data" do
|
|
5
|
+
a = described_class.new :foo => :bar, :baz => 1
|
|
6
|
+
|
|
7
|
+
expect(a[:foo]).to eq :bar
|
|
8
|
+
expect(a[:baz]).to eq 1
|
|
9
|
+
expect(a[:asdf]).to be_nil
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "provides hash-like writers for OpenStruct data" do
|
|
13
|
+
a = described_class.new :foo => :bar, :baz => 1
|
|
14
|
+
|
|
15
|
+
a[:asdf] = 'qwerty'
|
|
16
|
+
expect(a.asdf).to eq 'qwerty'
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "treats symbols and strings interchangeably in hash access" do
|
|
21
|
+
h = described_class.new
|
|
22
|
+
|
|
23
|
+
h["string"] = "value"
|
|
24
|
+
expect(h[:string]).to eq "value"
|
|
25
|
+
expect(h.string).to eq "value"
|
|
26
|
+
|
|
27
|
+
h[:symbol] = "value"
|
|
28
|
+
expect(h["symbol"]).to eq "value"
|
|
29
|
+
expect(h.symbol).to eq "value"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe "internal hash table" do
|
|
33
|
+
before do
|
|
34
|
+
@h = described_class.new
|
|
35
|
+
@h[:a] = 1
|
|
36
|
+
@h[:b] = 2
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "exposes the internal hash table" do
|
|
40
|
+
expect(@h.to_h).to be_a_kind_of(Hash)
|
|
41
|
+
expect(@h.to_h[:a]).to eq 1
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "exposes keys" do
|
|
45
|
+
expect(@h.keys).to include(:a, :b)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe "#key?" do
|
|
51
|
+
subject do
|
|
52
|
+
h = described_class.new
|
|
53
|
+
h[:a] = 1
|
|
54
|
+
h[:b] = 2
|
|
55
|
+
h
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "is true if the key exists" do
|
|
59
|
+
expect(subject.key? :a).to eq true
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "is false if the key does not exist" do
|
|
63
|
+
expect(subject.key? :c).to eq false
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
describe "#replace" do
|
|
68
|
+
subject { described_class.new a: 1 }
|
|
69
|
+
|
|
70
|
+
it "can use #replace to reorder the hash" do
|
|
71
|
+
subject.replace b: 1
|
|
72
|
+
expect(subject.b).to eq 1
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
describe "#sort_by" do
|
|
77
|
+
subject { described_class.new c: 3, b:1, a: 2 }
|
|
78
|
+
|
|
79
|
+
it "sorts the underlying hash" do
|
|
80
|
+
sorted = subject.sort_by { |k,v| v }
|
|
81
|
+
expect(sorted.keys).to match_array [:b, :a, :c]
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
describe "#sort_by!" do
|
|
86
|
+
subject { described_class.new c: 3, b:1, a: 2 }
|
|
87
|
+
|
|
88
|
+
it "sorts the underlying hash" do
|
|
89
|
+
subject.sort_by! { |k,v| v }
|
|
90
|
+
expect(subject.keys).to match_array [:b, :a, :c]
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
describe "#merge" do
|
|
95
|
+
|
|
96
|
+
before do
|
|
97
|
+
@h = described_class.new
|
|
98
|
+
@h[:a] = 1
|
|
99
|
+
@h[:b] = 2
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "merges the object with a hash" do
|
|
103
|
+
expect(@h.merge(:a => 'a')[:a]).to eq 'a'
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it "merges the object with another struct" do
|
|
107
|
+
expect(@h.merge(described_class.new(:a => 'a'))[:a]).to eq 'a'
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
describe "#merge!" do
|
|
113
|
+
|
|
114
|
+
before do
|
|
115
|
+
@h = described_class.new
|
|
116
|
+
@h[:a] = 1
|
|
117
|
+
@h[:b] = 2
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it "merges the object with a hash" do
|
|
121
|
+
@h.merge!(:a => 'a')
|
|
122
|
+
expect(@h[:a]).to eq 'a'
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it "merges the object with another struct" do
|
|
126
|
+
@h.merge!(described_class.new(:a => 'a'))
|
|
127
|
+
expect(@h[:a]).to eq 'a'
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
describe "#to_json" do
|
|
132
|
+
subject { described_class.new a: 1, b: 2}
|
|
133
|
+
|
|
134
|
+
it "serializes as json" do
|
|
135
|
+
expect(subject.to_json).to eq ({a: 1, b:2}).to_json
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
describe "#deep_dup" do
|
|
140
|
+
subject { described_class.new a: 1, b: { c: 1} }
|
|
141
|
+
|
|
142
|
+
it "duplicates nested hashes" do
|
|
143
|
+
copy = subject.deep_dup
|
|
144
|
+
copy.a = 2
|
|
145
|
+
copy.b[:c] = 2
|
|
146
|
+
|
|
147
|
+
expect(subject.a).to eq 1
|
|
148
|
+
expect(subject.b[:c]).to eq 1
|
|
149
|
+
expect(copy.a).to eq 2
|
|
150
|
+
expect(copy.b[:c]).to eq 2
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
describe Blacklight::SearchState do
|
|
3
|
+
RSpec.describe Blacklight::SearchState do
|
|
4
4
|
let(:blacklight_config) do
|
|
5
5
|
Blacklight::Configuration.new.configure do |config|
|
|
6
|
-
config.index.title_field = '
|
|
6
|
+
config.index.title_field = 'title_tsim'
|
|
7
7
|
config.index.display_type_field = 'format'
|
|
8
8
|
end
|
|
9
9
|
end
|
data/spec/lib/blacklight_spec.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
describe "Blacklight::Configurable" do
|
|
3
|
+
RSpec.describe "Blacklight::Configurable" do
|
|
4
4
|
|
|
5
5
|
describe "inheritence" do
|
|
6
6
|
before(:all) do
|
|
@@ -17,19 +17,19 @@ describe "Blacklight::Configurable" do
|
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
|
-
it "inherits the configuration when subclassed" do
|
|
20
|
+
it "inherits the configuration when subclassed" do
|
|
21
21
|
expect(TestCaseInheritence::Child.blacklight_config.list).to include(1,2,3)
|
|
22
22
|
end
|
|
23
|
-
|
|
24
|
-
it "inherited version should be a deep copy, not original" do
|
|
23
|
+
|
|
24
|
+
it "inherited version should be a deep copy, not original" do
|
|
25
25
|
expect(TestCaseInheritence::Child.blacklight_config).to_not be(TestCaseInheritence::Parent.blacklight_config)
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
TestCaseInheritence::Child.blacklight_config.list << "child_only"
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
expect(TestCaseInheritence::Child.blacklight_config.list).to include("child_only")
|
|
30
|
+
expect(TestCaseInheritence::Child.blacklight_config.list).to include("child_only")
|
|
31
31
|
expect(TestCaseInheritence::Parent.blacklight_config.list).to_not include("child_only")
|
|
32
|
-
end
|
|
32
|
+
end
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
describe "default configuration" do
|
|
@@ -56,15 +56,15 @@ describe "Blacklight::Configurable" do
|
|
|
56
56
|
a.send(:include, Blacklight::Configurable)
|
|
57
57
|
expect(a.blacklight_config.a).to eq 1
|
|
58
58
|
end
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
it "has configure_blacklight convenience method" do
|
|
61
61
|
klass = Class.new
|
|
62
62
|
klass.send(:include, Blacklight::Configurable)
|
|
63
|
-
|
|
63
|
+
|
|
64
64
|
klass.configure_blacklight do |config|
|
|
65
65
|
config.my_key = 'value'
|
|
66
|
-
end
|
|
67
|
-
|
|
66
|
+
end
|
|
67
|
+
|
|
68
68
|
expect(klass.blacklight_config.my_key).to eq 'value'
|
|
69
69
|
end
|
|
70
70
|
|
|
@@ -75,11 +75,11 @@ describe "Blacklight::Configurable" do
|
|
|
75
75
|
|
|
76
76
|
instance = klass.new
|
|
77
77
|
instance.blacklight_config = Blacklight::Configuration.new
|
|
78
|
-
|
|
78
|
+
|
|
79
79
|
expect(instance.blacklight_config).to_not eq klass.blacklight_config
|
|
80
80
|
expect(instance.blacklight_config.foo).to be_nil
|
|
81
81
|
end
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
it "allows instance to set it's own config seperate from class" do
|
|
84
84
|
# this is built into class_attribute; we spec it both to document it,
|
|
85
85
|
# and to ensure we preserve this feature if we change implementation
|
|
@@ -89,7 +89,7 @@ describe "Blacklight::Configurable" do
|
|
|
89
89
|
klass.blacklight_config.foo = "bar"
|
|
90
90
|
klass.blacklight_config.bar = []
|
|
91
91
|
klass.blacklight_config.bar << "asd"
|
|
92
|
-
|
|
92
|
+
|
|
93
93
|
instance = klass.new
|
|
94
94
|
instance.blacklight_config.bar << "123"
|
|
95
95
|
expect(instance.blacklight_config).to_not eq klass.blacklight_config
|
|
@@ -111,7 +111,6 @@ describe "Blacklight::Configurable" do
|
|
|
111
111
|
expect(klass.blacklight_config.foo).to eq "bar"
|
|
112
112
|
expect(klass2.blacklight_config.foo).to eq "asdf"
|
|
113
113
|
end
|
|
114
|
-
|
|
114
|
+
|
|
115
115
|
end
|
|
116
116
|
end
|
|
117
|
-
|
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
describe "Blacklight::Configuration" do
|
|
3
|
+
RSpec.describe "Blacklight::Configuration" do
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
let(:config) do
|
|
6
|
+
Blacklight::Configuration.new
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
let(:config) { Blacklight::Configuration.new }
|
|
10
|
-
|
|
11
9
|
it "supports arbitrary configuration values" do
|
|
12
|
-
|
|
10
|
+
config.a = 1
|
|
13
11
|
|
|
14
|
-
expect(
|
|
15
|
-
expect(
|
|
12
|
+
expect(config.a).to eq 1
|
|
13
|
+
expect(config[:a]).to eq 1
|
|
16
14
|
end
|
|
17
15
|
|
|
18
16
|
describe "initialization" do
|
|
19
17
|
it "is an OpenStructWithHashAccess" do
|
|
20
|
-
expect(
|
|
18
|
+
expect(config).to be_a_kind_of Blacklight::OpenStructWithHashAccess
|
|
21
19
|
end
|
|
22
20
|
|
|
23
21
|
it "accepts a block for configuration" do
|
|
@@ -33,46 +31,45 @@ describe "Blacklight::Configuration" do
|
|
|
33
31
|
|
|
34
32
|
describe "defaults" do
|
|
35
33
|
it "has a hash of default rsolr query parameters" do
|
|
36
|
-
expect(
|
|
34
|
+
expect(config.default_solr_params).to be_a_kind_of Hash
|
|
37
35
|
end
|
|
38
36
|
|
|
39
37
|
it "has openstruct values for show and index parameters" do
|
|
40
|
-
expect(
|
|
41
|
-
expect(
|
|
38
|
+
expect(config.show).to be_a_kind_of OpenStruct
|
|
39
|
+
expect(config.index).to be_a_kind_of OpenStruct
|
|
42
40
|
end
|
|
43
41
|
|
|
44
42
|
it "has ordered hashes for field configuration" do
|
|
45
|
-
expect(
|
|
46
|
-
expect(
|
|
47
|
-
expect(
|
|
48
|
-
expect(
|
|
49
|
-
expect(
|
|
50
|
-
expect(
|
|
51
|
-
expect(
|
|
43
|
+
expect(config.facet_fields).to be_a_kind_of ActiveSupport::OrderedHash
|
|
44
|
+
expect(config.index_fields).to be_a_kind_of ActiveSupport::OrderedHash
|
|
45
|
+
expect(config.show_fields).to be_a_kind_of ActiveSupport::OrderedHash
|
|
46
|
+
expect(config.search_fields).to be_a_kind_of ActiveSupport::OrderedHash
|
|
47
|
+
expect(config.show_fields).to be_a_kind_of ActiveSupport::OrderedHash
|
|
48
|
+
expect(config.search_fields).to be_a_kind_of ActiveSupport::OrderedHash
|
|
49
|
+
expect(config.sort_fields).to be_a_kind_of ActiveSupport::OrderedHash
|
|
52
50
|
end
|
|
53
|
-
|
|
54
51
|
end
|
|
55
52
|
|
|
56
53
|
describe "#connection_config" do
|
|
57
54
|
let(:custom_config) { double }
|
|
58
55
|
it "has the global blacklight configuration" do
|
|
59
|
-
expect(
|
|
56
|
+
expect(config.connection_config).to eq Blacklight.connection_config
|
|
60
57
|
end
|
|
61
58
|
it "is overridable with custom configuration" do
|
|
62
|
-
|
|
63
|
-
expect(
|
|
59
|
+
config.connection_config = custom_config
|
|
60
|
+
expect(config.connection_config).to eq custom_config
|
|
64
61
|
end
|
|
65
62
|
end
|
|
66
63
|
|
|
67
64
|
describe "config.index.respond_to" do
|
|
68
65
|
it "has a list of additional formats for index requests to respond to" do
|
|
69
|
-
|
|
66
|
+
config.index.respond_to.xml = true
|
|
70
67
|
|
|
71
|
-
|
|
68
|
+
config.index.respond_to.csv = { :layout => false }
|
|
72
69
|
|
|
73
|
-
|
|
70
|
+
config.index.respond_to.yaml = lambda { render plain: "" }
|
|
74
71
|
|
|
75
|
-
expect(
|
|
72
|
+
expect(config.index.respond_to.keys).to eq [:xml, :csv, :yaml]
|
|
76
73
|
end
|
|
77
74
|
end
|
|
78
75
|
|
|
@@ -86,25 +83,46 @@ describe "Blacklight::Configuration" do
|
|
|
86
83
|
end
|
|
87
84
|
end
|
|
88
85
|
|
|
86
|
+
describe "for_display_type" do
|
|
87
|
+
let(:mock_field) { Blacklight::Configuration::IndexField.new }
|
|
88
|
+
let(:image) { SolrDocument.new(format: 'Image') }
|
|
89
|
+
let(:sound) { SolrDocument.new(format: 'Sound') }
|
|
90
|
+
it "adds fields just for a certain type" do
|
|
91
|
+
config.for_display_type "Image" do |c|
|
|
92
|
+
c.add_index_field :dimensions
|
|
93
|
+
end
|
|
94
|
+
config.add_index_field :title
|
|
95
|
+
|
|
96
|
+
expect(config.index_fields_for(image)).to have_key 'dimensions'
|
|
97
|
+
expect(config.index_fields_for(image)).to have_key 'title'
|
|
98
|
+
expect(config.index_fields_for(sound)).not_to have_key 'dimensions'
|
|
99
|
+
expect(config.index_fields_for(image)).to have_key 'title'
|
|
100
|
+
expect(config.index_fields).not_to have_key 'dimensions'
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
89
104
|
describe "inheritable_copy" do
|
|
105
|
+
let(:klass) { Class.new }
|
|
106
|
+
let(:config_copy) { config.inheritable_copy(klass) }
|
|
107
|
+
|
|
108
|
+
|
|
90
109
|
it "provides a deep copy of the configuration" do
|
|
91
|
-
config_copy = @config.inheritable_copy
|
|
92
110
|
config_copy.a = 1
|
|
93
111
|
|
|
94
112
|
@mock_facet = Blacklight::Configuration::FacetField.new
|
|
95
113
|
config_copy.add_facet_field "dummy_field", @mock_facet
|
|
96
114
|
|
|
97
|
-
expect(
|
|
98
|
-
expect(
|
|
115
|
+
expect(config.a).to be_nil
|
|
116
|
+
expect(config.facet_fields).to_not include(@mock_facet)
|
|
99
117
|
end
|
|
100
118
|
|
|
101
119
|
context "when model classes are customised" do
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
config_copy = @config.inheritable_copy
|
|
120
|
+
before do
|
|
121
|
+
config.response_model = Hash
|
|
122
|
+
config.document_model = Array
|
|
123
|
+
end
|
|
107
124
|
|
|
125
|
+
it "does not dup response_model or document_model" do
|
|
108
126
|
expect(config_copy.response_model).to eq Hash
|
|
109
127
|
expect(config_copy.document_model).to eq Array
|
|
110
128
|
end
|
|
@@ -112,32 +130,26 @@ describe "Blacklight::Configuration" do
|
|
|
112
130
|
|
|
113
131
|
context "when model classes are not set" do
|
|
114
132
|
it "leaves response_model and document_model empty" do
|
|
115
|
-
config_copy = @config.inheritable_copy
|
|
116
|
-
|
|
117
133
|
expect(config_copy.fetch(:response_model, nil)).to be_nil
|
|
118
134
|
expect(config_copy.fetch(:document_model, nil)).to be_nil
|
|
119
135
|
end
|
|
120
136
|
|
|
121
137
|
it "returns default classes" do
|
|
122
|
-
config_copy = @config.inheritable_copy
|
|
123
|
-
|
|
124
138
|
expect(config_copy.response_model).to eq Blacklight::Solr::Response
|
|
125
139
|
expect(config_copy.document_model).to eq SolrDocument
|
|
126
140
|
end
|
|
127
141
|
end
|
|
128
142
|
|
|
129
143
|
it "provides cloned copies of mutable data structures" do
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
config_copy = @config.inheritable_copy
|
|
144
|
+
config.a = { value: 1 }
|
|
145
|
+
config.b = [1,2,3]
|
|
134
146
|
|
|
135
147
|
config_copy.a[:value] = 2
|
|
136
148
|
config_copy.b << 5
|
|
137
149
|
|
|
138
|
-
expect(
|
|
150
|
+
expect(config.a[:value]).to eq 1
|
|
139
151
|
expect(config_copy.a[:value]).to eq 2
|
|
140
|
-
expect(
|
|
152
|
+
expect(config.b).to match_array [1,2,3]
|
|
141
153
|
expect(config_copy.b).to match_array [1,2,3,5]
|
|
142
154
|
end
|
|
143
155
|
end
|
|
@@ -172,201 +184,200 @@ describe "Blacklight::Configuration" do
|
|
|
172
184
|
|
|
173
185
|
describe "add_facet_field" do
|
|
174
186
|
it "accepts field name and hash form arg" do
|
|
175
|
-
|
|
187
|
+
config.add_facet_field('format', :label => "Format", :limit => true)
|
|
176
188
|
|
|
177
|
-
expect(
|
|
178
|
-
expect(
|
|
179
|
-
expect(
|
|
189
|
+
expect(config.facet_fields["format"]).to_not be_nil
|
|
190
|
+
expect(config.facet_fields["format"]["label"]).to eq "Format"
|
|
191
|
+
expect(config.facet_fields["format"]["limit"]).to be true
|
|
180
192
|
end
|
|
181
193
|
|
|
182
194
|
it "accepts FacetField obj arg" do
|
|
183
|
-
|
|
195
|
+
config.add_facet_field("format", Blacklight::Configuration::FacetField.new( :label => "Format"))
|
|
184
196
|
|
|
185
|
-
expect(
|
|
186
|
-
expect(
|
|
197
|
+
expect(config.facet_fields["format"]).to_not be_nil
|
|
198
|
+
expect(config.facet_fields["format"]["label"]).to eq "Format"
|
|
187
199
|
end
|
|
188
200
|
|
|
189
201
|
it "accepts field name and block form" do
|
|
190
|
-
|
|
202
|
+
config.add_facet_field("format") do |facet|
|
|
191
203
|
facet.label = "Format"
|
|
192
204
|
facet.limit = true
|
|
193
205
|
end
|
|
194
206
|
|
|
195
|
-
expect(
|
|
196
|
-
expect(
|
|
207
|
+
expect(config.facet_fields["format"]).to_not be_nil
|
|
208
|
+
expect(config.facet_fields["format"].limit).to be true
|
|
197
209
|
end
|
|
198
210
|
|
|
199
211
|
it "accepts block form" do
|
|
200
|
-
|
|
212
|
+
config.add_facet_field do |facet|
|
|
201
213
|
facet.field = "format"
|
|
202
214
|
facet.label = "Format"
|
|
203
215
|
end
|
|
204
216
|
|
|
205
|
-
expect(
|
|
217
|
+
expect(config.facet_fields['format']).to_not be_nil
|
|
206
218
|
end
|
|
207
219
|
|
|
208
220
|
it "accepts a configuration hash" do
|
|
209
|
-
|
|
210
|
-
expect(
|
|
221
|
+
config.add_facet_field :field => 'format', :label => 'Format'
|
|
222
|
+
expect(config.facet_fields['format']).to_not be_nil
|
|
211
223
|
end
|
|
212
224
|
|
|
213
225
|
it "accepts array form" do
|
|
214
|
-
|
|
226
|
+
config.add_facet_field([{ :field => 'format', :label => 'Format'}, { :field => 'publication_date', :label => 'Publication Date' }])
|
|
215
227
|
|
|
216
|
-
expect(
|
|
228
|
+
expect(config.facet_fields).to have(2).fields
|
|
217
229
|
end
|
|
218
230
|
|
|
219
231
|
it "accepts array form with a block" do
|
|
220
232
|
expect do |b|
|
|
221
|
-
|
|
233
|
+
config.add_facet_field([{ :field => 'format', :label => 'Format'}, { :field => 'publication_date', :label => 'Publication Date' }], &b)
|
|
222
234
|
end.to yield_control.twice
|
|
223
235
|
end
|
|
224
236
|
|
|
225
|
-
|
|
226
237
|
it "creates default label from titleized solr field" do
|
|
227
|
-
|
|
238
|
+
config.add_facet_field("publication_date")
|
|
228
239
|
|
|
229
|
-
expect(
|
|
240
|
+
expect(config.facet_fields["publication_date"].label).to eq "Publication Date"
|
|
230
241
|
end
|
|
231
242
|
|
|
232
243
|
it "allows you to not show the facet in the facet bar" do
|
|
233
|
-
|
|
244
|
+
config.add_facet_field("publication_date", :show=>false)
|
|
234
245
|
|
|
235
|
-
expect(
|
|
246
|
+
expect(config.facet_fields["publication_date"]['show']).to be false
|
|
236
247
|
end
|
|
237
248
|
|
|
238
249
|
it "raises on nil solr field name" do
|
|
239
|
-
expect {
|
|
250
|
+
expect { config.add_facet_field(nil) }.to raise_error ArgumentError
|
|
240
251
|
end
|
|
241
252
|
|
|
242
253
|
it "looks up and match field names" do
|
|
243
|
-
allow(config).to receive_messages(
|
|
254
|
+
allow(config).to receive_messages(luke_fields: {
|
|
244
255
|
"some_field_facet" => {},
|
|
245
256
|
"another_field_facet" => {},
|
|
246
257
|
"a_facet_field" => {},
|
|
247
258
|
})
|
|
248
259
|
expect { |b| config.add_facet_field match: /_facet$/, &b }.to yield_control.twice
|
|
249
260
|
|
|
250
|
-
expect(
|
|
261
|
+
expect(config.facet_fields.keys).to eq ["some_field_facet", "another_field_facet"]
|
|
251
262
|
end
|
|
252
263
|
|
|
253
264
|
it "takes wild-carded field names and dereference them to solr fields" do
|
|
254
|
-
allow(config).to
|
|
265
|
+
allow(config).to receive_messages(luke_fields: {
|
|
255
266
|
"some_field_facet" => {},
|
|
256
267
|
"another_field_facet" => {},
|
|
257
|
-
"a_facet_field" => {}
|
|
258
|
-
)
|
|
268
|
+
"a_facet_field" => {},
|
|
269
|
+
})
|
|
259
270
|
expect { |b| config.add_facet_field "*_facet", &b }.to yield_control.twice
|
|
260
271
|
|
|
261
|
-
expect(
|
|
272
|
+
expect(config.facet_fields.keys).to eq ["some_field_facet", "another_field_facet"]
|
|
262
273
|
end
|
|
263
274
|
|
|
264
275
|
describe "if/unless conditions with legacy show parameter" do
|
|
265
276
|
it "is hidden if the if condition is false" do
|
|
266
|
-
expect(
|
|
267
|
-
expect(
|
|
277
|
+
expect(config.add_facet_field("hidden", if: false).if).to eq false
|
|
278
|
+
expect(config.add_facet_field("hidden_with_legacy", if: false, show: true).if).to eq false
|
|
268
279
|
end
|
|
269
280
|
|
|
270
281
|
it "is true if the if condition is true" do
|
|
271
|
-
expect(
|
|
272
|
-
expect(
|
|
282
|
+
expect(config.add_facet_field("hidden", if: true).if).to eq true
|
|
283
|
+
expect(config.add_facet_field("hidden_with_legacy", if: true, show: false).if).to eq true
|
|
273
284
|
end
|
|
274
285
|
|
|
275
286
|
it "is true if the if condition is missing" do
|
|
276
|
-
expect(
|
|
287
|
+
expect(config.add_facet_field("hidden", show: true).if).to eq true
|
|
277
288
|
end
|
|
278
289
|
end
|
|
279
290
|
end
|
|
280
291
|
|
|
281
292
|
describe "add_index_field" do
|
|
282
293
|
it "takes hash form" do
|
|
283
|
-
|
|
294
|
+
config.add_index_field("title_tsim", :label => "Title")
|
|
284
295
|
|
|
285
|
-
expect(
|
|
286
|
-
expect(
|
|
296
|
+
expect(config.index_fields["title_tsim"]).to_not be_nil
|
|
297
|
+
expect(config.index_fields["title_tsim"].label).to eq "Title"
|
|
287
298
|
end
|
|
288
299
|
it "takes IndexField param" do
|
|
289
|
-
|
|
300
|
+
config.add_index_field("title_tsim", Blacklight::Configuration::IndexField.new(:field => "title_display", :label => "Title"))
|
|
290
301
|
|
|
291
|
-
expect(
|
|
292
|
-
expect(
|
|
302
|
+
expect(config.index_fields["title_tsim"]).to_not be_nil
|
|
303
|
+
expect(config.index_fields["title_tsim"].label).to eq "Title"
|
|
293
304
|
end
|
|
294
305
|
it "takes block form" do
|
|
295
|
-
|
|
306
|
+
config.add_index_field("title_tsim") do |field|
|
|
296
307
|
field.label = "Title"
|
|
297
308
|
end
|
|
298
|
-
expect(
|
|
299
|
-
expect(
|
|
309
|
+
expect(config.index_fields["title_tsim"]).to_not be_nil
|
|
310
|
+
expect(config.index_fields["title_tsim"].label).to eq "Title"
|
|
300
311
|
end
|
|
301
312
|
|
|
302
313
|
it "creates default label from titleized field" do
|
|
303
|
-
|
|
314
|
+
config.add_index_field("title_tsim")
|
|
304
315
|
|
|
305
|
-
expect(
|
|
316
|
+
expect(config.index_fields["title_tsim"].label).to eq "Title Tsim"
|
|
306
317
|
end
|
|
307
318
|
|
|
308
319
|
it "raises on nil solr field name" do
|
|
309
|
-
expect {
|
|
320
|
+
expect { config.add_index_field(nil) }.to raise_error ArgumentError
|
|
310
321
|
end
|
|
311
322
|
|
|
312
323
|
it "takes wild-carded field names and dereference them to solr fields" do
|
|
313
|
-
allow(config).to
|
|
324
|
+
allow(config).to receive_messages(luke_fields: {
|
|
314
325
|
"some_field_display" => {},
|
|
315
326
|
"another_field_display" => {},
|
|
316
|
-
"a_facet_field" => {}
|
|
317
|
-
|
|
327
|
+
"a_facet_field" => {},
|
|
328
|
+
})
|
|
318
329
|
config.add_index_field "*_display"
|
|
319
330
|
|
|
320
|
-
expect(
|
|
331
|
+
expect(config.index_fields.keys).to eq ["some_field_display", "another_field_display"]
|
|
321
332
|
end
|
|
322
333
|
|
|
323
334
|
it "queries solr and get live values for match fields", integration: true do
|
|
324
|
-
|
|
325
|
-
expect(
|
|
335
|
+
config.add_index_field match: /title.+sim/
|
|
336
|
+
expect(config.index_fields.keys).to include "subtitle_tsim", "subtitle_vern_ssim", "title_tsim", "title_vern_ssim"
|
|
326
337
|
end
|
|
327
338
|
end
|
|
328
339
|
|
|
329
340
|
describe "add_show_field" do
|
|
330
341
|
it "takes hash form" do
|
|
331
|
-
|
|
342
|
+
config.add_show_field("title_tsim", :label => "Title")
|
|
332
343
|
|
|
333
|
-
expect(
|
|
334
|
-
expect(
|
|
344
|
+
expect(config.show_fields["title_tsim"]).to_not be_nil
|
|
345
|
+
expect(config.show_fields["title_tsim"].label).to eq "Title"
|
|
335
346
|
end
|
|
336
347
|
it "takes ShowField argument" do
|
|
337
|
-
|
|
348
|
+
config.add_show_field("title_tsim", Blacklight::Configuration::ShowField.new(:field => "title_display", :label => "Title"))
|
|
338
349
|
|
|
339
|
-
expect(
|
|
340
|
-
expect(
|
|
350
|
+
expect(config.show_fields["title_tsim"]).to_not be_nil
|
|
351
|
+
expect(config.show_fields["title_tsim"].label).to eq "Title"
|
|
341
352
|
end
|
|
342
353
|
it "takes block form" do
|
|
343
|
-
|
|
354
|
+
config.add_show_field("title_tsim") do |f|
|
|
344
355
|
f.label = "Title"
|
|
345
356
|
end
|
|
346
357
|
|
|
347
|
-
expect(
|
|
348
|
-
expect(
|
|
358
|
+
expect(config.show_fields["title_tsim"]).to_not be_nil
|
|
359
|
+
expect(config.show_fields["title_tsim"].label).to eq "Title"
|
|
349
360
|
end
|
|
350
361
|
|
|
351
362
|
it "creates default label humanized from field" do
|
|
352
|
-
|
|
363
|
+
config.add_show_field("my_custom_field")
|
|
353
364
|
|
|
354
|
-
expect(
|
|
365
|
+
expect(config.show_fields["my_custom_field"].label).to eq "My Custom Field"
|
|
355
366
|
end
|
|
356
367
|
|
|
357
368
|
it "raises on nil solr field name" do
|
|
358
|
-
expect {
|
|
369
|
+
expect { config.add_show_field(nil) }.to raise_error ArgumentError
|
|
359
370
|
end
|
|
360
371
|
|
|
361
372
|
it "takes wild-carded field names and dereference them to solr fields" do
|
|
362
|
-
allow(config).to
|
|
373
|
+
allow(config).to receive_messages(luke_fields: {
|
|
363
374
|
"some_field_display" => {},
|
|
364
375
|
"another_field_display" => {},
|
|
365
|
-
"a_facet_field" => {}
|
|
366
|
-
|
|
376
|
+
"a_facet_field" => {},
|
|
377
|
+
})
|
|
367
378
|
config.add_show_field "*_display"
|
|
368
379
|
|
|
369
|
-
expect(
|
|
380
|
+
expect(config.show_fields.keys).to eq ["some_field_display", "another_field_display"]
|
|
370
381
|
end
|
|
371
382
|
|
|
372
383
|
end
|
|
@@ -424,28 +435,28 @@ describe "Blacklight::Configuration" do
|
|
|
424
435
|
end
|
|
425
436
|
|
|
426
437
|
it "raises on nil key" do
|
|
427
|
-
expect {
|
|
438
|
+
expect {config.add_search_field(nil, :foo => "bar")}.to raise_error ArgumentError
|
|
428
439
|
end
|
|
429
440
|
|
|
430
441
|
it "creates default label from titleized field key" do
|
|
431
|
-
|
|
442
|
+
config.add_search_field("author_name")
|
|
432
443
|
|
|
433
|
-
expect(
|
|
444
|
+
expect(config.search_fields["author_name"].label).to eq "Author Name"
|
|
434
445
|
end
|
|
435
446
|
|
|
436
447
|
describe "if/unless conditions with legacy include_in_simple_search" do
|
|
437
448
|
it "is hidden if the if condition is false" do
|
|
438
|
-
expect(
|
|
439
|
-
expect(
|
|
449
|
+
expect(config.add_search_field("hidden", if: false).if).to eq false
|
|
450
|
+
expect(config.add_search_field("hidden_with_legacy", if: false, include_in_simple_search: true).if).to eq false
|
|
440
451
|
end
|
|
441
452
|
|
|
442
453
|
it "is true if the if condition is true" do
|
|
443
|
-
expect(
|
|
444
|
-
expect(
|
|
454
|
+
expect(config.add_search_field("hidden", if: true).if).to eq true
|
|
455
|
+
expect(config.add_search_field("hidden_with_legacy", if: true, include_in_simple_search: false).if).to eq true
|
|
445
456
|
end
|
|
446
457
|
|
|
447
458
|
it "is true if the if condition is missing" do
|
|
448
|
-
expect(
|
|
459
|
+
expect(config.add_search_field("hidden", include_in_simple_search: true).if).to eq true
|
|
449
460
|
end
|
|
450
461
|
end
|
|
451
462
|
end
|
|
@@ -458,41 +469,41 @@ describe "Blacklight::Configuration" do
|
|
|
458
469
|
end
|
|
459
470
|
|
|
460
471
|
it "takes a two-arg form with a hash" do
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
expect(@config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
|
|
472
|
+
config.add_sort_field("score desc, pub_date_si desc, title_si asc", :label => "relevance")
|
|
473
|
+
expect(config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
|
|
465
474
|
end
|
|
466
475
|
|
|
467
476
|
it "takes a SortField object" do
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
477
|
+
config.add_sort_field(
|
|
478
|
+
Blacklight::Configuration::SortField.new(label: "relevance",
|
|
479
|
+
sort: "score desc, pub_date_sort desc, title_sort asc")
|
|
480
|
+
)
|
|
481
|
+
expect(config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
|
|
471
482
|
end
|
|
472
483
|
|
|
473
484
|
it "takes block form" do
|
|
474
|
-
|
|
485
|
+
config.add_sort_field do |field|
|
|
475
486
|
field.label = "relevance"
|
|
476
|
-
field.sort = "score desc,
|
|
487
|
+
field.sort = "score desc, pub_date_si desc, title_si asc"
|
|
477
488
|
end
|
|
478
489
|
|
|
479
|
-
expect(
|
|
490
|
+
expect(config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
|
|
480
491
|
|
|
481
492
|
end
|
|
482
493
|
end
|
|
483
494
|
|
|
484
495
|
describe "#default_search_field" do
|
|
485
496
|
it "uses the field with a :default key" do
|
|
486
|
-
|
|
487
|
-
|
|
497
|
+
config.add_search_field('search_field_1')
|
|
498
|
+
config.add_search_field('search_field_2', :default => true)
|
|
488
499
|
|
|
489
|
-
expect(
|
|
500
|
+
expect(config.default_search_field.key).to eq 'search_field_2'
|
|
490
501
|
end
|
|
491
502
|
end
|
|
492
503
|
|
|
493
504
|
describe "#facet_paginator_class" do
|
|
494
505
|
it "defaults to Blacklight::Solr::FacetPaginator" do
|
|
495
|
-
expect(
|
|
506
|
+
expect(config.facet_paginator_class).to eq Blacklight::Solr::FacetPaginator
|
|
496
507
|
end
|
|
497
508
|
end
|
|
498
509
|
end
|