blacklight 7.33.0 → 8.0.0
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/.env +3 -2
- data/.github/workflows/ruby.yml +38 -107
- data/.gitignore +1 -0
- data/.rubocop.yml +243 -2
- data/.rubocop_todo.yml +216 -270
- data/Gemfile +7 -6
- data/README.md +12 -4
- data/Rakefile +18 -0
- data/VERSION +1 -1
- data/app/assets/config/blacklight/manifest.js +3 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js +376 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -0
- data/app/assets/javascripts/blacklight/blacklight.js +332 -485
- data/app/assets/javascripts/blacklight/blacklight.js.map +1 -0
- data/app/assets/stylesheets/blacklight/_autocomplete.scss +25 -0
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -1
- data/app/assets/stylesheets/blacklight/_bookmark.scss +16 -0
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +8 -0
- data/app/assets/stylesheets/blacklight/_facets.scss +104 -49
- data/app/assets/stylesheets/blacklight/_header.scss +0 -15
- data/app/assets/stylesheets/blacklight/_icons.scss +0 -14
- data/app/assets/stylesheets/blacklight/_mixins.scss +20 -0
- data/app/assets/stylesheets/blacklight/_modal.scss +8 -2
- data/app/assets/stylesheets/blacklight/_search_form.scss +30 -3
- data/app/assets/stylesheets/blacklight/_search_history.scss +10 -1
- data/app/assets/stylesheets/blacklight/_search_results.scss +6 -2
- data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +4 -1
- data/app/builders/blacklight/action_builder.rb +18 -9
- data/app/components/blacklight/advanced_search_form_component.html.erb +1 -1
- data/app/components/blacklight/advanced_search_form_component.rb +7 -9
- data/app/components/blacklight/constraints_component.rb +27 -37
- data/app/components/blacklight/document/action_component.html.erb +2 -9
- data/app/components/blacklight/document/action_component.rb +26 -8
- data/app/components/blacklight/document/actions_component.rb +2 -2
- data/app/components/blacklight/document/bookmark_component.html.erb +9 -0
- data/app/components/blacklight/document/bookmark_component.rb +4 -2
- data/app/components/blacklight/document/citation_component.rb +5 -3
- data/app/components/blacklight/document/group_component.rb +7 -3
- data/app/components/blacklight/document/show_tools_component.html.erb +12 -0
- data/app/components/blacklight/document/show_tools_component.rb +23 -0
- data/app/components/blacklight/document/sidebar_component.html.erb +2 -0
- data/app/components/blacklight/document/sidebar_component.rb +16 -0
- data/app/components/blacklight/document/thumbnail_component.html.erb +2 -7
- data/app/components/blacklight/document/thumbnail_component.rb +1 -9
- data/app/components/blacklight/document_component.html.erb +4 -0
- data/app/components/blacklight/document_component.rb +54 -42
- data/app/components/blacklight/document_metadata_component.html.erb +4 -2
- data/app/components/blacklight/document_metadata_component.rb +11 -6
- data/app/components/blacklight/document_title_component.rb +4 -1
- data/app/components/blacklight/facet_component.rb +1 -1
- data/app/components/blacklight/facet_field_checkboxes_component.html.erb +3 -3
- data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
- data/app/components/blacklight/facet_field_component.html.erb +5 -5
- data/app/components/blacklight/facet_field_component.rb +9 -2
- data/app/components/blacklight/facet_field_list_component.html.erb +3 -3
- data/app/components/blacklight/facet_field_list_component.rb +37 -5
- data/app/components/blacklight/facet_field_no_layout_component.rb +0 -2
- data/app/components/blacklight/facet_item_component.rb +1 -43
- data/app/components/blacklight/facet_item_pivot_component.rb +21 -23
- data/app/components/blacklight/header_component.html.erb +2 -0
- data/app/components/blacklight/header_component.rb +26 -0
- data/app/components/blacklight/hidden_search_state_component.rb +1 -2
- data/app/components/blacklight/icons/legacy_icon_component.rb +30 -0
- data/app/components/blacklight/icons/list_component.rb +16 -0
- data/app/components/blacklight/icons/search_component.rb +16 -0
- data/app/components/blacklight/metadata_field_component.html.erb +2 -2
- data/app/components/blacklight/metadata_field_component.rb +24 -8
- data/app/components/blacklight/metadata_field_layout_component.rb +7 -22
- data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +17 -0
- data/app/components/blacklight/response/facet_group_component.html.erb +5 -6
- data/app/components/blacklight/response/facet_group_component.rb +29 -8
- data/app/components/blacklight/response/sort_component.rb +2 -2
- data/app/components/blacklight/response/spellcheck_component.rb +18 -7
- data/app/components/blacklight/response/view_type_button_component.rb +3 -7
- data/app/components/blacklight/response/view_type_component.rb +4 -6
- data/app/components/blacklight/search/sidebar_component.html.erb +8 -0
- data/app/components/blacklight/search/sidebar_component.rb +17 -0
- data/app/components/blacklight/search_bar_component.html.erb +20 -15
- data/app/components/blacklight/search_bar_component.rb +2 -16
- data/app/components/blacklight/search_button_component.rb +3 -3
- data/app/components/blacklight/search_context/server_applied_params_component.html.erb +4 -0
- data/app/components/blacklight/search_context/server_applied_params_component.rb +13 -0
- data/app/components/blacklight/search_context/server_item_pagination_component.rb +71 -0
- data/app/components/blacklight/search_header_component.html.erb +2 -0
- data/app/components/blacklight/search_header_component.rb +6 -0
- data/app/components/blacklight/search_navbar_component.html.erb +5 -0
- data/app/components/blacklight/search_navbar_component.rb +34 -0
- data/app/components/blacklight/start_over_button_component.rb +5 -3
- data/app/components/blacklight/system/dropdown_component.rb +3 -3
- data/app/components/blacklight/system/flash_message_component.html.erb +3 -1
- data/app/components/blacklight/system/flash_message_component.rb +12 -3
- data/app/components/blacklight/system/modal_component.html.erb +1 -1
- data/app/components/blacklight/system/modal_component.rb +1 -3
- data/app/components/blacklight/top_navbar_component.html.erb +12 -0
- data/app/components/blacklight/top_navbar_component.rb +17 -0
- data/app/controllers/bookmarks_controller.rb +1 -0
- data/app/controllers/catalog_controller.rb +1 -0
- data/app/controllers/concerns/blacklight/bookmarks.rb +11 -6
- data/app/controllers/concerns/blacklight/catalog.rb +21 -72
- data/app/controllers/concerns/blacklight/controller.rb +6 -43
- data/app/controllers/concerns/blacklight/search_context.rb +71 -13
- data/app/controllers/concerns/blacklight/search_history.rb +2 -0
- data/app/controllers/concerns/blacklight/searchable.rb +12 -1
- data/app/controllers/concerns/blacklight/token_based_user.rb +1 -0
- data/app/controllers/search_history_controller.rb +1 -0
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +1 -400
- data/app/helpers/blacklight/catalog_helper_behavior.rb +40 -182
- data/app/helpers/blacklight/component_helper_behavior.rb +1 -63
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -117
- data/app/helpers/blacklight/document_helper_behavior.rb +76 -0
- data/app/helpers/blacklight/facets_helper_behavior.rb +4 -321
- data/app/helpers/blacklight/icon_helper_behavior.rb +5 -4
- data/app/helpers/blacklight/layout_helper_behavior.rb +60 -0
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +12 -30
- data/app/helpers/blacklight/url_helper_behavior.rb +21 -97
- data/app/helpers/blacklight_helper.rb +1 -0
- data/app/helpers/catalog_helper.rb +1 -0
- data/app/javascript/blacklight/bookmark_toggle.js +9 -22
- data/app/javascript/blacklight/button_focus.js +9 -7
- data/app/javascript/blacklight/checkbox_submit.js +68 -122
- data/app/javascript/blacklight/core.js +6 -5
- data/app/javascript/blacklight/index.js +14 -0
- data/app/javascript/blacklight/modal.js +100 -165
- data/app/javascript/blacklight/modalForm.js +60 -0
- data/app/javascript/blacklight/search_context.js +13 -29
- data/app/models/blacklight/facet_paginator.rb +3 -2
- data/app/models/blacklight/icon.rb +4 -2
- data/app/models/bookmark.rb +0 -2
- data/app/models/concerns/blacklight/configurable.rb +5 -4
- data/app/models/concerns/blacklight/document/active_model_shim.rb +1 -0
- data/app/models/concerns/blacklight/document/attributes.rb +50 -0
- data/app/models/concerns/blacklight/document/cache_key.rb +1 -0
- data/app/models/concerns/blacklight/document/dublin_core.rb +2 -1
- data/app/models/concerns/blacklight/document/export.rb +2 -1
- data/app/models/concerns/blacklight/document/extensions.rb +1 -0
- data/app/models/concerns/blacklight/document/schema_org.rb +1 -0
- data/app/models/concerns/blacklight/document/semantic_fields.rb +1 -0
- data/app/models/concerns/blacklight/document.rb +23 -20
- data/app/models/concerns/blacklight/suggest/response.rb +1 -0
- data/app/models/concerns/blacklight/user.rb +17 -8
- data/app/models/record_mailer.rb +23 -18
- data/app/models/search.rb +0 -1
- data/app/models/solr_document.rb +1 -0
- data/app/presenters/blacklight/clause_presenter.rb +1 -1
- data/app/presenters/blacklight/document_presenter.rb +24 -30
- data/app/presenters/blacklight/facet_field_presenter.rb +39 -14
- data/app/presenters/blacklight/facet_grouped_item_presenter.rb +1 -5
- data/app/presenters/blacklight/facet_item_pivot_presenter.rb +60 -0
- data/app/presenters/blacklight/facet_item_presenter.rb +3 -9
- data/app/presenters/blacklight/field_presenter.rb +1 -0
- data/app/presenters/blacklight/index_presenter.rb +2 -40
- data/app/presenters/blacklight/json_presenter.rb +7 -5
- data/app/presenters/blacklight/rendering/abstract_step.rb +4 -0
- data/app/presenters/blacklight/rendering/join.rb +7 -1
- data/app/presenters/blacklight/rendering/link_to_facet.rb +3 -6
- data/app/presenters/blacklight/rendering/microdata.rb +1 -1
- data/app/presenters/blacklight/show_presenter.rb +1 -9
- data/app/presenters/blacklight/thumbnail_presenter.rb +1 -1
- data/app/services/blacklight/bookmarks_search_builder.rb +22 -0
- data/app/services/blacklight/field_retriever.rb +1 -8
- data/app/services/blacklight/search_service.rb +9 -7
- data/app/values/blacklight/types.rb +95 -11
- data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +8 -1
- data/app/views/bookmarks/_tools.html.erb +7 -12
- data/app/views/catalog/_advanced_search_form.html.erb +0 -1
- data/app/views/catalog/_bookmark_control.html.erb +1 -1
- data/app/views/catalog/_constraints.html.erb +1 -14
- data/app/views/catalog/_document.atom.builder +12 -14
- data/app/views/catalog/_document.html.erb +3 -6
- data/app/views/catalog/_document.rss.builder +2 -4
- data/app/views/catalog/_document_list.html.erb +2 -1
- data/app/views/catalog/_facet_layout.html.erb +2 -2
- data/app/views/catalog/_facets.html.erb +5 -4
- data/app/views/catalog/_home_text.html.erb +2 -14
- data/app/views/catalog/_search_form.html.erb +3 -3
- data/app/views/catalog/_search_header.html.erb +1 -2
- data/app/views/catalog/_search_results.html.erb +2 -2
- data/app/views/catalog/_search_sidebar.html.erb +5 -1
- data/app/views/catalog/_show_main_content.html.erb +8 -19
- data/app/views/catalog/_show_sidebar.html.erb +2 -2
- data/app/views/catalog/_show_tools.html.erb +1 -19
- data/app/views/catalog/_view_type_group.html.erb +1 -1
- data/app/views/catalog/email_success.html.erb +5 -6
- data/app/views/catalog/facet.html.erb +7 -5
- data/app/views/catalog/index.atom.builder +12 -14
- data/app/views/catalog/index.html.erb +7 -1
- data/app/views/catalog/index.json.jbuilder +19 -19
- data/app/views/catalog/index.rss.builder +1 -1
- data/app/views/catalog/opensearch.xml.builder +1 -1
- data/app/views/catalog/show.html.erb +1 -6
- data/app/views/catalog/sms_success.html.erb +5 -6
- data/app/views/catalog/suggest.html.erb +3 -0
- data/app/views/layouts/blacklight/base.html.erb +19 -9
- data/app/views/record_mailer/email_record.text.erb +4 -3
- data/app/views/record_mailer/sms_record.text.erb +4 -4
- data/app/views/search_history/index.html.erb +6 -2
- data/app/views/shared/_header_navbar.html.erb +1 -22
- data/app/views/shared/_modal.html.erb +3 -3
- data/blacklight.gemspec +8 -10
- data/config/importmap.rb +3 -0
- data/config/locales/blacklight.ar.yml +209 -233
- data/config/locales/blacklight.ca.yml +0 -7
- data/config/locales/blacklight.de.yml +197 -216
- data/config/locales/blacklight.en.yml +2 -7
- data/config/locales/blacklight.es.yml +196 -216
- data/config/locales/blacklight.fr.yml +196 -220
- data/config/locales/blacklight.hu.yml +193 -213
- data/config/locales/blacklight.it.yml +197 -216
- data/config/locales/blacklight.nl.yml +193 -213
- data/config/locales/blacklight.pt-BR.yml +195 -216
- data/config/locales/blacklight.sq.yml +193 -213
- data/config/locales/blacklight.zh.yml +194 -214
- data/config/routes.rb +3 -2
- data/db/migrate/20140202020201_create_searches.rb +1 -0
- data/db/migrate/20140202020202_create_bookmarks.rb +1 -0
- data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -0
- data/docker-compose.yml +1 -0
- data/lib/blacklight/abstract_repository.rb +1 -0
- data/lib/blacklight/configuration/context.rb +4 -4
- data/lib/blacklight/configuration/display_field.rb +7 -9
- data/lib/blacklight/configuration/facet_field.rb +17 -11
- data/lib/blacklight/configuration/field.rb +1 -0
- data/lib/blacklight/configuration/fields.rb +12 -15
- data/lib/blacklight/configuration/index_field.rb +1 -0
- data/lib/blacklight/configuration/null_display_field.rb +17 -0
- data/lib/blacklight/configuration/search_field.rb +1 -0
- data/lib/blacklight/configuration/session_tracking_config.rb +45 -0
- data/lib/blacklight/configuration/show_field.rb +1 -0
- data/lib/blacklight/configuration/sort_field.rb +1 -0
- data/lib/blacklight/configuration/tool_config.rb +1 -0
- data/lib/blacklight/configuration/view_config.rb +16 -10
- data/lib/blacklight/configuration.rb +322 -341
- data/lib/blacklight/engine.rb +13 -15
- data/lib/blacklight/exceptions.rb +2 -2
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +6 -12
- data/lib/blacklight/open_struct_with_hash_access.rb +19 -17
- data/lib/blacklight/parameters.rb +7 -21
- data/lib/blacklight/routes/exportable.rb +1 -0
- data/lib/blacklight/routes/searchable.rb +3 -1
- data/lib/blacklight/routes.rb +1 -0
- data/lib/blacklight/search_builder.rb +10 -10
- data/lib/blacklight/search_state/filter_field.rb +8 -25
- data/lib/blacklight/search_state/pivot_filter_field.rb +144 -0
- data/lib/blacklight/search_state.rb +23 -79
- data/lib/blacklight/solr/document.rb +1 -0
- data/lib/blacklight/solr/facet_paginator.rb +1 -0
- data/lib/blacklight/solr/repository.rb +1 -0
- data/lib/blacklight/solr/request.rb +3 -0
- data/lib/blacklight/solr/response/facets.rb +21 -5
- data/lib/blacklight/solr/response/group.rb +1 -0
- data/lib/blacklight/solr/response/group_response.rb +1 -0
- data/lib/blacklight/solr/response/more_like_this.rb +1 -0
- data/lib/blacklight/solr/response/pagination_methods.rb +4 -3
- data/lib/blacklight/solr/response/params.rb +5 -4
- data/lib/blacklight/solr/response/response.rb +1 -0
- data/lib/blacklight/solr/response/spelling.rb +1 -0
- data/lib/blacklight/solr/response.rb +4 -3
- data/lib/blacklight/solr/search_builder_behavior.rb +16 -32
- data/lib/blacklight/solr.rb +1 -0
- data/lib/blacklight/version.rb +1 -0
- data/lib/blacklight.rb +8 -11
- data/lib/generators/blacklight/assets/importmap_generator.rb +56 -0
- data/lib/generators/blacklight/assets/propshaft_generator.rb +34 -0
- data/lib/generators/blacklight/assets/sprockets_generator.rb +68 -0
- data/lib/generators/blacklight/assets_generator.rb +14 -88
- data/lib/generators/blacklight/controller_generator.rb +3 -2
- data/lib/generators/blacklight/document_generator.rb +1 -0
- data/lib/generators/blacklight/install_generator.rb +7 -4
- data/lib/generators/blacklight/models_generator.rb +1 -0
- data/lib/generators/blacklight/search_builder_generator.rb +1 -0
- data/lib/generators/blacklight/solr_generator.rb +1 -1
- data/lib/generators/blacklight/templates/catalog_controller.rb +37 -7
- data/lib/generators/blacklight/templates/solr_document.rb +1 -7
- data/lib/generators/blacklight/test_support_generator.rb +4 -2
- data/lib/generators/blacklight/user_generator.rb +7 -9
- data/lib/railties/blacklight.rake +2 -3
- data/package.json +10 -10
- data/rollup.config.js +37 -0
- data/spec/components/blacklight/constraints_component_spec.rb +17 -13
- data/spec/components/blacklight/document_component_spec.rb +74 -33
- data/spec/components/blacklight/facet_component_spec.rb +2 -7
- data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +1 -2
- data/spec/components/blacklight/facet_field_list_component_spec.rb +7 -6
- data/spec/components/blacklight/facet_item_pivot_component_spec.rb +9 -7
- data/spec/components/blacklight/header_component_spec.rb +20 -0
- data/spec/components/blacklight/response/view_type_component_spec.rb +83 -0
- data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
- data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +29 -0
- data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +51 -0
- data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +1 -6
- data/spec/controllers/blacklight/{base_spec.rb → catalog_spec.rb} +2 -2
- data/spec/controllers/bookmarks_controller_spec.rb +2 -3
- data/spec/controllers/catalog_controller_spec.rb +24 -126
- data/spec/features/autocomplete_spec.rb +1 -1
- data/spec/features/axe_spec.rb +1 -1
- data/spec/features/bookmarks_spec.rb +1 -1
- data/spec/features/component_template_override_spec.rb +8 -0
- data/spec/features/facets_spec.rb +1 -1
- data/spec/features/modal_spec.rb +12 -0
- data/spec/features/search_context_spec.rb +4 -10
- data/spec/features/search_results_spec.rb +0 -33
- data/spec/features/sitelinks_search_box_spec.rb +13 -0
- data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +2 -138
- data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +0 -387
- data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +5 -7
- data/spec/helpers/blacklight/url_helper_behavior_spec.rb +10 -132
- data/spec/helpers/blacklight_helper_spec.rb +3 -298
- data/spec/helpers/catalog_helper_spec.rb +60 -115
- data/spec/i18n_spec.rb +1 -0
- data/spec/integration/generators/blacklight/solr_generator_spec.rb +1 -1
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +27 -16
- data/spec/lib/blacklight/configuration/field_spec.rb +1 -1
- data/spec/lib/blacklight/configuration/session_tracking_config_spec.rb +38 -0
- data/spec/lib/blacklight/configuration/view_config_spec.rb +1 -1
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +4 -4
- data/spec/lib/blacklight/parameters_spec.rb +1 -4
- data/spec/lib/blacklight/search_state/filter_field_spec.rb +4 -4
- data/spec/lib/blacklight/search_state/pivot_filter_field_spec.rb +117 -0
- data/spec/lib/blacklight/search_state_spec.rb +80 -198
- data/spec/lib/tasks/blacklight_task_spec.rb +1 -0
- data/spec/models/blacklight/configuration_spec.rb +41 -53
- data/spec/models/blacklight/document/active_model_shim_spec.rb +2 -2
- data/spec/models/blacklight/icon_spec.rb +29 -15
- data/spec/models/blacklight/search_builder_spec.rb +12 -12
- data/spec/models/blacklight/solr/document_spec.rb +3 -3
- data/spec/models/blacklight/solr/request_spec.rb +2 -2
- data/spec/models/blacklight/solr/response/facets_spec.rb +27 -27
- data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -0
- data/spec/models/blacklight/solr/response/group_spec.rb +1 -0
- data/spec/models/blacklight/solr/response_spec.rb +9 -2
- data/spec/models/blacklight/solr/search_builder_spec.rb +32 -23
- data/spec/models/blacklight/user_spec.rb +22 -0
- data/spec/models/record_mailer_spec.rb +36 -23
- data/spec/models/solr_document_spec.rb +21 -3
- data/spec/presenters/blacklight/clause_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/document_presenter_spec.rb +3 -2
- data/spec/presenters/blacklight/facet_field_presenter_spec.rb +85 -12
- data/spec/presenters/blacklight/facet_grouped_item_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/facet_item_presenter_spec.rb +14 -13
- data/spec/presenters/blacklight/field_presenter_spec.rb +2 -16
- data/spec/presenters/blacklight/index_presenter_spec.rb +3 -4
- data/spec/presenters/blacklight/json_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -2
- data/spec/presenters/blacklight/show_presenter_spec.rb +11 -25
- data/spec/presenters/pipeline_spec.rb +13 -2
- data/spec/presenters/thumbnail_presenter_spec.rb +1 -1
- data/spec/requests/load_suggestions_spec.rb +16 -0
- data/spec/routing/catalog_routing_spec.rb +6 -1
- data/spec/services/blacklight/search_service_spec.rb +31 -68
- data/spec/spec_helper.rb +4 -3
- data/spec/support/controller_level_helpers.rb +1 -2
- data/spec/support/features/search_helpers.rb +39 -0
- data/spec/support/features/session_helpers.rb +1 -0
- data/spec/support/features.rb +3 -0
- data/spec/support/view_component_test_helpers.rb +21 -0
- data/spec/test_app_templates/Gemfile.extra +4 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +17 -2
- data/spec/views/catalog/_document.html.erb_spec.rb +23 -33
- data/spec/views/catalog/_document_list.html.erb_spec.rb +7 -2
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_search_header.erb_spec.rb +1 -0
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +1 -0
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +7 -54
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +17 -9
- data/spec/views/catalog/email_success.html.erb_spec.rb +2 -2
- data/spec/views/catalog/facet.html.erb_spec.rb +6 -3
- data/spec/views/catalog/index.atom.builder_spec.rb +18 -11
- data/spec/views/catalog/index.html.erb_spec.rb +5 -6
- data/spec/views/catalog/index.json.jbuilder_spec.rb +3 -3
- data/spec/views/catalog/show.html.erb_spec.rb +3 -25
- data/spec/views/catalog/sms_success.html.erb_spec.rb +2 -2
- data/tasks/blacklight.rake +7 -5
- metadata +95 -123
- data/.babelrc +0 -11
- data/app/assets/images/blacklight/list.svg +0 -1
- data/app/assets/images/blacklight/search.svg +0 -1
- data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +0 -37
- data/app/components/blacklight/content_areas_shim.rb +0 -13
- data/app/components/blacklight/search_context_component.rb +0 -34
- data/app/controllers/concerns/blacklight/base.rb +0 -7
- data/app/controllers/concerns/blacklight/default_component_configuration.rb +0 -64
- data/app/controllers/concerns/blacklight/facet.rb +0 -69
- data/app/controllers/concerns/blacklight/search_fields.rb +0 -46
- data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +0 -27
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +0 -188
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +0 -97
- data/app/helpers/blacklight/suggest_helper_behavior.rb +0 -13
- data/app/javascript/blacklight/autocomplete.js +0 -36
- data/app/javascript/blacklight/facet_load.js +0 -22
- data/app/models/concerns/blacklight/document/email.rb +0 -26
- data/app/models/concerns/blacklight/document/sms.rb +0 -24
- data/app/presenters/blacklight/search_bar_presenter.rb +0 -47
- data/app/views/catalog/_constraints_element.html.erb +0 -14
- data/app/views/catalog/_document_action.html.erb +0 -5
- data/app/views/catalog/_facet_group.html.erb +0 -5
- data/app/views/catalog/_facet_limit.html.erb +0 -3
- data/app/views/catalog/_index.html.erb +0 -1
- data/app/views/catalog/_index_header.html.erb +0 -22
- data/app/views/catalog/_previous_next_doc.html.erb +0 -2
- data/app/views/catalog/_show.html.erb +0 -6
- data/app/views/catalog/_show_header.html.erb +0 -2
- data/app/views/catalog/_thumbnail.html.erb +0 -1
- data/lib/blacklight/deprecations/engine_configuration.rb +0 -66
- data/lib/blacklight/deprecations/search_state_normalization.rb +0 -52
- data/spec/controllers/blacklight/facet_spec.rb +0 -33
- data/spec/controllers/blacklight/search_fields_spec.rb +0 -62
- data/spec/features/sitelinks_search_box.rb +0 -13
- data/spec/helpers/blacklight/hash_as_hidden_fields_behavior_spec.rb +0 -26
- data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +0 -92
- data/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb +0 -108
- data/spec/helpers/blacklight/suggest_helper_behavior_spec.rb +0 -48
- data/spec/lib/blacklight/engine_spec.rb +0 -41
- data/spec/models/blacklight/document/email_spec.rb +0 -57
- data/spec/models/blacklight/document/sms_spec.rb +0 -58
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +0 -94
- data/spec/support/view_component_capybara_test_helpers.rb +0 -8
- data/spec/views/catalog/_constraints.html.erb_spec.rb +0 -33
- data/spec/views/catalog/_facet_group.html.erb_spec.rb +0 -84
- data/spec/views/catalog/_facets.html.erb_spec.rb +0 -15
- data/spec/views/catalog/_index.html.erb_spec.rb +0 -62
- data/spec/views/catalog/_index_header.html.erb_spec.rb +0 -35
- data/spec/views/catalog/_previous_next_doc.html.erb_spec.rb +0 -22
- data/spec/views/catalog/_show.html.erb_spec.rb +0 -62
- data/spec/views/catalog/_thumbnail.html.erb_spec.rb +0 -38
- /data/app/components/blacklight/{search_context_component.html.erb → search_context/server_item_pagination_component.html.erb} +0 -0
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
RSpec.describe CatalogController, api: true do
|
|
4
|
-
around { |test| Deprecation.silence(Blacklight::Catalog) { test.call } }
|
|
5
|
-
|
|
6
4
|
let(:doc_id) { '2007020969' }
|
|
7
|
-
let(:mock_response) { instance_double(Blacklight::Solr::Response) }
|
|
8
5
|
let(:mock_document) { instance_double(SolrDocument, export_formats: {}) }
|
|
9
6
|
let(:search_service) { instance_double(Blacklight::SearchService) }
|
|
10
7
|
|
|
@@ -63,17 +60,17 @@ RSpec.describe CatalogController, api: true do
|
|
|
63
60
|
end
|
|
64
61
|
|
|
65
62
|
it "shows 0 results when the user asks for an invalid value to a custom facet query", integration: true do
|
|
66
|
-
get :index, params: { f: { example_query_facet_field: 'bogus' } } # bogus custom facet value
|
|
63
|
+
get :index, params: { f: { example_query_facet_field: ['bogus'] } } # bogus custom facet value
|
|
67
64
|
expect(assigns(:response).docs).to be_empty
|
|
68
65
|
end
|
|
69
66
|
|
|
70
67
|
it "returns results (possibly 0) when the user asks for a valid value to a custom facet query", integration: true do
|
|
71
|
-
get :index, params: { f: { example_query_facet_field: 'years_25' } } # valid custom facet value with some results
|
|
68
|
+
get :index, params: { f: { example_query_facet_field: ['years_25'] } } # valid custom facet value with some results
|
|
72
69
|
expect(assigns(:response).docs).not_to be_empty
|
|
73
70
|
end
|
|
74
71
|
|
|
75
72
|
it "returns no results when the users asks for a value that doesn't match any" do
|
|
76
|
-
get :index, params: { f: { example_query_facet_field: 'years_5' } } # valid custom facet value with NO results
|
|
73
|
+
get :index, params: { f: { example_query_facet_field: ['years_5'] } } # valid custom facet value with NO results
|
|
77
74
|
expect(assigns(:response).docs).to be_empty
|
|
78
75
|
end
|
|
79
76
|
|
|
@@ -161,20 +158,20 @@ RSpec.describe CatalogController, api: true do
|
|
|
161
158
|
|
|
162
159
|
format = facets.find { |x| x['id'] == 'format' }
|
|
163
160
|
|
|
164
|
-
expect(format['attributes']['items'].
|
|
161
|
+
expect(format['attributes']['items'].pluck('attributes')).to contain_exactly({ "value" => "Book", "hits" => 30, "label" => "Book" })
|
|
165
162
|
expect(format['links']['self']).to eq facet_catalog_url(format: :json, id: 'format')
|
|
166
163
|
expect(format['attributes']['items'].first['links']['self']).to eq search_catalog_url(format: :json, f: { format: ['Book'] })
|
|
167
164
|
end
|
|
168
165
|
|
|
169
166
|
it "gets the search fields" do
|
|
170
167
|
expect(search_fields).to have(4).fields
|
|
171
|
-
expect(search_fields.
|
|
168
|
+
expect(search_fields.pluck('id')).to match_array %w[all_fields author subject title]
|
|
172
169
|
expect(search_fields.first['links']['self']).to eq search_catalog_url(format: :json, search_field: 'all_fields')
|
|
173
170
|
end
|
|
174
171
|
|
|
175
172
|
describe "facets" do
|
|
176
173
|
let(:query_facet) { facets.find { |x| x['id'] == 'example_query_facet_field' } }
|
|
177
|
-
let(:query_facet_items) { query_facet['attributes']['items'].
|
|
174
|
+
let(:query_facet_items) { query_facet['attributes']['items'].pluck('attributes') }
|
|
178
175
|
|
|
179
176
|
it "has items with labels and values" do
|
|
180
177
|
expect(query_facet_items.first['label']).to eq 'within 25 Years'
|
|
@@ -339,7 +336,7 @@ RSpec.describe CatalogController, api: true do
|
|
|
339
336
|
before do
|
|
340
337
|
allow(mock_document).to receive_messages(export_formats: {})
|
|
341
338
|
allow(controller).to receive(:search_service).and_return(search_service)
|
|
342
|
-
expect(search_service).to receive(:fetch).and_return(
|
|
339
|
+
expect(search_service).to receive(:fetch).and_return(mock_document)
|
|
343
340
|
allow(controller).to receive(:current_search_session).and_return(current_search)
|
|
344
341
|
end
|
|
345
342
|
|
|
@@ -399,7 +396,7 @@ RSpec.describe CatalogController, api: true do
|
|
|
399
396
|
|
|
400
397
|
it "renders show.html.erb" do
|
|
401
398
|
allow(controller).to receive(:search_service).and_return(search_service)
|
|
402
|
-
expect(search_service).to receive(:fetch).and_return(
|
|
399
|
+
expect(search_service).to receive(:fetch).and_return(mock_document)
|
|
403
400
|
|
|
404
401
|
get :show, params: { id: doc_id }
|
|
405
402
|
expect(response).to render_template(:show)
|
|
@@ -408,7 +405,7 @@ RSpec.describe CatalogController, api: true do
|
|
|
408
405
|
describe '@document' do
|
|
409
406
|
before do
|
|
410
407
|
allow(controller).to receive(:search_service).and_return(search_service)
|
|
411
|
-
expect(search_service).to receive(:fetch).and_return(
|
|
408
|
+
expect(search_service).to receive(:fetch).and_return(mock_document)
|
|
412
409
|
|
|
413
410
|
get :show, params: { id: doc_id }
|
|
414
411
|
end
|
|
@@ -434,7 +431,7 @@ RSpec.describe CatalogController, api: true do
|
|
|
434
431
|
Mime::Type.register "application/mock", :mock
|
|
435
432
|
SolrDocument.use_extension(FakeExtension)
|
|
436
433
|
allow(controller).to receive(:search_service).and_return(search_service)
|
|
437
|
-
expect(search_service).to receive(:fetch).and_return(
|
|
434
|
+
expect(search_service).to receive(:fetch).and_return(SolrDocument.new(id: 'my_fake_doc'))
|
|
438
435
|
end
|
|
439
436
|
|
|
440
437
|
after do
|
|
@@ -470,34 +467,15 @@ RSpec.describe CatalogController, api: true do
|
|
|
470
467
|
end
|
|
471
468
|
end
|
|
472
469
|
|
|
473
|
-
describe 'GET suggest' do
|
|
474
|
-
it 'returns JSON' do
|
|
475
|
-
get :suggest, params: { format: 'json' }
|
|
476
|
-
expect(response.body).to eq [].to_json
|
|
477
|
-
end
|
|
478
|
-
|
|
479
|
-
it 'returns suggestions' do
|
|
480
|
-
get :suggest, params: { format: 'json', q: 'new' }
|
|
481
|
-
json = JSON.parse(response.body)
|
|
482
|
-
expect(json.count).to eq 5
|
|
483
|
-
expect(json.first['term']).to eq 'new jersey'
|
|
484
|
-
end
|
|
485
|
-
end
|
|
486
|
-
|
|
487
470
|
describe "email/sms" do
|
|
488
|
-
let(:
|
|
471
|
+
let(:mock_document) { SolrDocument.new }
|
|
489
472
|
|
|
490
473
|
before do
|
|
491
|
-
mock_document.extend(Blacklight::Document::Sms)
|
|
492
|
-
mock_document.extend(Blacklight::Document::Email)
|
|
493
|
-
allow(mock_document).to receive(:to_semantic_values).and_return({})
|
|
494
474
|
allow(mock_document).to receive(:to_model).and_return(SolrDocument.new(id: 'my_fake_doc'))
|
|
495
475
|
|
|
496
476
|
allow(controller).to receive(:search_service).and_return(search_service)
|
|
497
|
-
expect(search_service).to receive(:fetch).and_return([
|
|
477
|
+
expect(search_service).to receive(:fetch).and_return([mock_document])
|
|
498
478
|
request.env["HTTP_REFERER"] = "/catalog/#{doc_id}"
|
|
499
|
-
SolrDocument.use_extension(Blacklight::Document::Email)
|
|
500
|
-
SolrDocument.use_extension(Blacklight::Document::Sms)
|
|
501
479
|
end
|
|
502
480
|
|
|
503
481
|
describe "email", api: false do
|
|
@@ -581,7 +559,7 @@ RSpec.describe CatalogController, api: true do
|
|
|
581
559
|
|
|
582
560
|
it "redirects back to the record upon success" do
|
|
583
561
|
post :sms, params: { id: doc_id, to: '5555555555', carrier: 'txt.att.net' }
|
|
584
|
-
expect(request.flash[:error]).to
|
|
562
|
+
expect(request.flash[:error]).to be_nil
|
|
585
563
|
expect(request).to redirect_to(solr_document_path(doc_id))
|
|
586
564
|
end
|
|
587
565
|
|
|
@@ -607,31 +585,6 @@ RSpec.describe CatalogController, api: true do
|
|
|
607
585
|
get :citation, params: { id: "bad-record-identifer" }
|
|
608
586
|
end.to raise_error Blacklight::Exceptions::RecordNotFound
|
|
609
587
|
end
|
|
610
|
-
|
|
611
|
-
context "when there is an invalid search", api: false do
|
|
612
|
-
let(:service) { instance_double(Blacklight::SearchService) }
|
|
613
|
-
let(:fake_error) { Blacklight::Exceptions::InvalidRequest.new }
|
|
614
|
-
|
|
615
|
-
before do
|
|
616
|
-
allow(controller).to receive(:search_service).and_return(service)
|
|
617
|
-
allow(service).to receive(:search_results) { |*_args| raise fake_error }
|
|
618
|
-
allow(Rails.env).to receive_messages(test?: false)
|
|
619
|
-
end
|
|
620
|
-
|
|
621
|
-
it "redirects the user to the root url for a bad search" do
|
|
622
|
-
expect(controller.logger).to receive(:error).with(fake_error)
|
|
623
|
-
get :index, params: { q: '+' }
|
|
624
|
-
expect(response.redirect_url).to eq root_url
|
|
625
|
-
expect(request.flash[:notice]).to eq "Sorry, I don't understand your search."
|
|
626
|
-
expect(response).not_to be_successful
|
|
627
|
-
expect(response.status).to eq 302
|
|
628
|
-
end
|
|
629
|
-
|
|
630
|
-
it "returns status 500 if the catalog path is raising an exception" do
|
|
631
|
-
allow(controller).to receive(:flash).and_return(notice: I18n.t('blacklight.search.errors.request_error'))
|
|
632
|
-
expect { get :index, params: { q: '+' } }.to raise_error Blacklight::Exceptions::InvalidRequest
|
|
633
|
-
end
|
|
634
|
-
end
|
|
635
588
|
end
|
|
636
589
|
|
|
637
590
|
context "without a user authentication provider" do
|
|
@@ -779,7 +732,7 @@ RSpec.describe CatalogController, api: true do
|
|
|
779
732
|
end
|
|
780
733
|
|
|
781
734
|
describe "with a facet" do
|
|
782
|
-
before { allow(controller).to receive_messages(params: { f: { "
|
|
735
|
+
before { allow(controller).to receive_messages(params: { f: { "format" => ["value"] } }) }
|
|
783
736
|
|
|
784
737
|
it { is_expected.to be true }
|
|
785
738
|
end
|
|
@@ -842,73 +795,18 @@ RSpec.describe CatalogController, api: true do
|
|
|
842
795
|
end
|
|
843
796
|
end
|
|
844
797
|
|
|
845
|
-
describe "
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
expect(
|
|
798
|
+
describe "page_links" do
|
|
799
|
+
it "has prev/next docs and result set data for non-empty result sets", integration: true do
|
|
800
|
+
get :page_links, params: { f: { "format" => 'Book' }, counter: 2 }
|
|
801
|
+
expect(assigns(:page_link_data)).not_to be_empty
|
|
802
|
+
expect(assigns(:page_link_data).fetch(:prev, nil)).to end_with('counter=1')
|
|
803
|
+
expect(assigns(:page_link_data).fetch(:next, nil)).to end_with('counter=3')
|
|
804
|
+
expect(assigns(:page_link_data).fetch(:totalRaw, nil)).to be 30
|
|
850
805
|
end
|
|
851
806
|
|
|
852
|
-
it "
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
expect(controller.facet_limit_hash).to eq blacklight_config[:facet][:limits]
|
|
856
|
-
end
|
|
857
|
-
|
|
858
|
-
it "handles no facet_limits in config" do
|
|
859
|
-
blacklight_config.facet_fields = {}
|
|
860
|
-
expect(controller.facet_limit_for("subject_ssim")).to be_nil
|
|
861
|
-
end
|
|
862
|
-
|
|
863
|
-
describe "for 'true' configured values" do
|
|
864
|
-
before do
|
|
865
|
-
allow(controller).to receive(:blacklight_config).and_return(blacklight_config)
|
|
866
|
-
end
|
|
867
|
-
|
|
868
|
-
let(:blacklight_config) do
|
|
869
|
-
Blacklight::Configuration.new do |config|
|
|
870
|
-
config.add_facet_field "language_facet", limit: true
|
|
871
|
-
end
|
|
872
|
-
end
|
|
873
|
-
|
|
874
|
-
it "returns nil if no @response available" do
|
|
875
|
-
expect(controller.facet_limit_for("some_unknown_field")).to be_nil
|
|
876
|
-
end
|
|
877
|
-
|
|
878
|
-
it "gets from @response facet.limit if available" do
|
|
879
|
-
response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: nil) })
|
|
880
|
-
controller.instance_variable_set(:@response, response)
|
|
881
|
-
blacklight_config.facet_fields['language_facet'].limit = 10
|
|
882
|
-
expect(controller.facet_limit_for("language_facet")).to eq 10
|
|
883
|
-
end
|
|
884
|
-
|
|
885
|
-
it "gets the limit from the facet field in @response" do
|
|
886
|
-
response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: 16) })
|
|
887
|
-
controller.instance_variable_set(:@response, response)
|
|
888
|
-
expect(controller.facet_limit_for("language_facet")).to eq 15
|
|
889
|
-
end
|
|
890
|
-
|
|
891
|
-
it "defaults to 10" do
|
|
892
|
-
expect(controller.facet_limit_for("language_facet")).to eq 10
|
|
893
|
-
end
|
|
894
|
-
end
|
|
895
|
-
|
|
896
|
-
context 'for facet fields with a key that is different from the field name' do
|
|
897
|
-
before do
|
|
898
|
-
allow(controller).to receive(:blacklight_config).and_return(blacklight_config)
|
|
899
|
-
end
|
|
900
|
-
|
|
901
|
-
let(:blacklight_config) do
|
|
902
|
-
Blacklight::Configuration.new do |config|
|
|
903
|
-
config.add_facet_field 'some_key', field: 'x', limit: true
|
|
904
|
-
end
|
|
905
|
-
end
|
|
906
|
-
|
|
907
|
-
it 'gets the limit from the facet field in the @response' do
|
|
908
|
-
response = instance_double(Blacklight::Solr::Response, aggregations: { 'x' => double(limit: 16) })
|
|
909
|
-
controller.instance_variable_set(:@response, response)
|
|
910
|
-
expect(controller.facet_limit_for('some_key')).to eq 15
|
|
911
|
-
end
|
|
807
|
+
it "is empty for empty result sets", integration: true do
|
|
808
|
+
get :page_links, params: { f: { "format" => 'empty-result-set' }, counter: 1 }
|
|
809
|
+
expect(assigns(:page_link_data)).to be_empty
|
|
912
810
|
end
|
|
913
811
|
end
|
|
914
812
|
end
|
data/spec/features/axe_spec.rb
CHANGED
|
@@ -28,6 +28,6 @@ RSpec.describe 'Accessibility testing', api: false, js: true do
|
|
|
28
28
|
|
|
29
29
|
def be_accessible(skipping: [])
|
|
30
30
|
# typeahead does funny things with the search bar
|
|
31
|
-
be_axe_clean.excluding('.tt-hint').skipping(skipping + [('color-contrast' if Bootstrap::VERSION < '5')].compact)
|
|
31
|
+
be_axe_clean.excluding('.tt-hint').skipping(skipping + [('color-contrast' if defined?(Bootstrap) && Bootstrap::VERSION < '5')].compact)
|
|
32
32
|
end
|
|
33
33
|
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe 'Generated test application template at default path' do
|
|
4
|
+
it 'unobtrusively overrides default top navbar component template' do
|
|
5
|
+
visit root_path
|
|
6
|
+
expect(page).to have_css 'nav[data-template-override="top_navbar_component"]'
|
|
7
|
+
end
|
|
8
|
+
end
|
|
@@ -69,7 +69,7 @@ RSpec.describe "Facets" do
|
|
|
69
69
|
page.find('h3.facet-field-heading button', text: 'Pivot Field').click
|
|
70
70
|
|
|
71
71
|
within '#facet-example_pivot_field' do
|
|
72
|
-
expect(page).to have_css('.facet-leaf-node', text: "Book 30")
|
|
72
|
+
expect(page).to have_css('.facet-leaf-node', text: "Book 30", normalize_ws: true)
|
|
73
73
|
expect(page).not_to have_css('.facet-select', text: 'Tibetan')
|
|
74
74
|
page.find('.facet-toggle-handle').click
|
|
75
75
|
click_link 'Tibetan'
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe 'Modal' do
|
|
4
|
+
it 'can open and dismiss the email modal', js: true do
|
|
5
|
+
visit solr_document_path('2007020969')
|
|
6
|
+
expect(page).to have_no_selector 'dialog#blacklight-modal'
|
|
7
|
+
click_link 'Email'
|
|
8
|
+
expect(page).to have_selector 'dialog#blacklight-modal'
|
|
9
|
+
click_button '×'
|
|
10
|
+
expect(page).to have_no_selector 'dialog#blacklight-modal'
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
RSpec.describe "Search Results context"
|
|
4
|
-
it "passes the current search id through" do
|
|
3
|
+
RSpec.describe "Search Results context" do
|
|
4
|
+
it "passes the current search id through", js: true do
|
|
5
5
|
search_for ''
|
|
6
6
|
click_on 'Pluvial nectar of blessings'
|
|
7
7
|
search_id = Search.last.id.to_s
|
|
@@ -16,7 +16,7 @@ RSpec.describe "Search Results context", js: true do
|
|
|
16
16
|
expect(prev['data-context-href']).to eq "/catalog/2004310986/track?counter=8&document_id=2004310986&search_id=#{search_id}"
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
it "redirects context urls to the original url" do
|
|
19
|
+
it "redirects context urls to the original url", js: true do
|
|
20
20
|
search_for ''
|
|
21
21
|
first('.index_title a').click
|
|
22
22
|
expect(page).to have_content "« Previous | 1 of 30 | Next »"
|
|
@@ -43,7 +43,7 @@ RSpec.describe "Search Results context", js: true do
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
context "navigating between search results using context pagination" do
|
|
46
|
-
it "updates the back to search link with the current search pagination context" do
|
|
46
|
+
it "updates the back to search link with the current search pagination context", js: true do
|
|
47
47
|
search_for ''
|
|
48
48
|
expect(page).to have_content "1 - 10"
|
|
49
49
|
find_all('.index_title a').last.click
|
|
@@ -55,9 +55,3 @@ RSpec.describe "Search Results context", js: true do
|
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
|
-
|
|
59
|
-
def search_for q
|
|
60
|
-
visit root_path
|
|
61
|
-
fill_in "q", with: q
|
|
62
|
-
click_button 'search'
|
|
63
|
-
end
|
|
@@ -58,36 +58,3 @@ RSpec.describe "Search Results" do
|
|
|
58
58
|
expect(page).to have_xpath("//a[contains(@href, 77826928)]")
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
|
-
|
|
62
|
-
def search_for q
|
|
63
|
-
visit root_path
|
|
64
|
-
fill_in "q", with: q
|
|
65
|
-
click_button 'search'
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def position_in_result_page(page, id)
|
|
69
|
-
i = -1
|
|
70
|
-
page.all(".index_title a").each_with_index do |link, idx|
|
|
71
|
-
i = (idx + 1) if link['href'] =~ Regexp.new(Regexp.escape(id) + "$")
|
|
72
|
-
end
|
|
73
|
-
i.to_i
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def number_of_results_for_query(query)
|
|
77
|
-
visit root_path
|
|
78
|
-
fill_in "q", with: query
|
|
79
|
-
click_button "search"
|
|
80
|
-
get_number_of_results_from_page(page)
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def number_of_results_from_page(page)
|
|
84
|
-
tmp_value = Capybara.ignore_hidden_elements
|
|
85
|
-
Capybara.ignore_hidden_elements = false
|
|
86
|
-
val = begin
|
|
87
|
-
page.find("meta[name=totalResults]")['content'].to_i
|
|
88
|
-
rescue StandardError
|
|
89
|
-
0
|
|
90
|
-
end
|
|
91
|
-
Capybara.ignore_hidden_elements = tmp_value
|
|
92
|
-
val
|
|
93
|
-
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe 'Sitelinks search box' do
|
|
4
|
+
it 'is home page' do
|
|
5
|
+
visit root_path
|
|
6
|
+
expect(page).to have_selector 'script[type="application/ld+json"]', visible: :hidden
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it 'on search page' do
|
|
10
|
+
visit search_catalog_path q: 'book'
|
|
11
|
+
expect(page).not_to have_selector 'script[type="application/ld+json"]', visible: :hidden
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -8,14 +8,6 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
|
|
|
8
8
|
allow(helper).to receive_messages(blacklight_config: blacklight_config)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
describe "#index_fields" do
|
|
12
|
-
it "passes through the configuration" do
|
|
13
|
-
allow(Deprecation).to receive(:warn)
|
|
14
|
-
allow(blacklight_config).to receive_messages(index_fields: config_value)
|
|
15
|
-
expect(helper.index_fields).to eq config_value
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
11
|
describe "#active_sort_fields" do
|
|
20
12
|
it "restricts the configured sort fields to only those that should be displayed" do
|
|
21
13
|
allow(blacklight_config).to receive_messages(sort_fields: { a: double(if: false, unless: false), b: double(if: true, unless: true) })
|
|
@@ -23,17 +15,9 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
|
|
|
23
15
|
end
|
|
24
16
|
end
|
|
25
17
|
|
|
26
|
-
describe "#document_show_fields" do
|
|
27
|
-
it "passes through the configuration" do
|
|
28
|
-
allow(Deprecation).to receive(:warn)
|
|
29
|
-
allow(blacklight_config).to receive_messages(show_fields: config_value)
|
|
30
|
-
expect(helper.document_show_fields).to eq config_value
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
18
|
describe "#default_document_index_view_type" do
|
|
35
19
|
it "uses the first view with default set to true" do
|
|
36
|
-
blacklight_config.view.a
|
|
20
|
+
blacklight_config.view.a
|
|
37
21
|
blacklight_config.view.b(default: true)
|
|
38
22
|
expect(helper.default_document_index_view_type).to eq :b
|
|
39
23
|
end
|
|
@@ -71,62 +55,6 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
|
|
|
71
55
|
end
|
|
72
56
|
end
|
|
73
57
|
|
|
74
|
-
describe "#has_alternative_views?" do
|
|
75
|
-
subject { helper.has_alternative_views? }
|
|
76
|
-
|
|
77
|
-
before do
|
|
78
|
-
blacklight_config.view.clear
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
describe "with a single view defined" do
|
|
82
|
-
it { is_expected.to be false }
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
describe "with multiple views defined" do
|
|
86
|
-
before do
|
|
87
|
-
blacklight_config.view.abc
|
|
88
|
-
blacklight_config.view.xyz
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
it { is_expected.to be true }
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
describe "#spell_check_max" do
|
|
96
|
-
it "passes through the configuration" do
|
|
97
|
-
allow(blacklight_config).to receive_messages(spell_max: config_value)
|
|
98
|
-
expect(helper.spell_check_max).to eq config_value
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
describe "#document_show_link_field" do
|
|
103
|
-
let(:document) { SolrDocument.new id: 123, a: 1, b: 2, c: 3 }
|
|
104
|
-
|
|
105
|
-
before do
|
|
106
|
-
allow(Deprecation).to receive(:warn)
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
it "allows single values" do
|
|
110
|
-
blacklight_config.index.title_field = :a
|
|
111
|
-
f = helper.document_show_link_field document
|
|
112
|
-
expect(f).to eq :a
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
it "retrieves the first field with data" do
|
|
116
|
-
blacklight_config.index.title_field = [:zzz, :b]
|
|
117
|
-
f = helper.document_show_link_field document
|
|
118
|
-
expect(f).to eq :b
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
describe "#view_label" do
|
|
123
|
-
it "looks up the label to display for the view" do
|
|
124
|
-
allow(blacklight_config).to receive(:view).and_return("my_view" => double(display_label: "some label"))
|
|
125
|
-
|
|
126
|
-
helper.view_label "my_view"
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
|
|
130
58
|
describe "#field_label" do
|
|
131
59
|
it "looks up the label as an i18n string" do
|
|
132
60
|
expect(helper).to receive(:t).with(:some_key, default: []).and_return "my label"
|
|
@@ -148,32 +76,6 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
|
|
|
148
76
|
end
|
|
149
77
|
end
|
|
150
78
|
|
|
151
|
-
describe "#default_per_page" do
|
|
152
|
-
before do
|
|
153
|
-
expect(Deprecation).to receive(:warn)
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
context "when default_per_page is configured" do
|
|
157
|
-
before do
|
|
158
|
-
blacklight_config.default_per_page = 42
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
it "is the configured value" do
|
|
162
|
-
expect(helper.default_per_page).to eq 42
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
context "when default_per_page is not configured" do
|
|
167
|
-
before do
|
|
168
|
-
blacklight_config.per_page = [11, 22]
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
it "is the first per-page value if a default isn't set" do
|
|
172
|
-
expect(helper.default_per_page).to eq 11
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
|
|
177
79
|
describe "#default_sort_field" do
|
|
178
80
|
it "is the configured default field" do
|
|
179
81
|
allow(helper).to receive_messages(blacklight_config: double(sort_fields: { a: double(default: nil), b: double(key: 'b', default: true) }))
|
|
@@ -203,11 +105,6 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
|
|
|
203
105
|
describe "#should_render_field?" do
|
|
204
106
|
let(:field_config) { double('field config', if: true, unless: false) }
|
|
205
107
|
|
|
206
|
-
before do
|
|
207
|
-
allow(Deprecation).to receive(:warn)
|
|
208
|
-
allow(helper).to receive_messages(document_has_value?: true)
|
|
209
|
-
end
|
|
210
|
-
|
|
211
108
|
it "is true" do
|
|
212
109
|
expect(helper.should_render_field?(field_config)).to be true
|
|
213
110
|
end
|
|
@@ -223,39 +120,6 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
|
|
|
223
120
|
end
|
|
224
121
|
end
|
|
225
122
|
|
|
226
|
-
describe "#search_field_options_for_select" do
|
|
227
|
-
before do
|
|
228
|
-
@config = Blacklight::Configuration.new do |config|
|
|
229
|
-
config.default_solr_params = { qt: 'search' }
|
|
230
|
-
|
|
231
|
-
config.add_search_field 'all_fields', label: 'All Fields'
|
|
232
|
-
config.add_search_field 'title', qt: 'title_search'
|
|
233
|
-
config.add_search_field 'author', qt: 'author_search'
|
|
234
|
-
config.add_search_field 'subject', qt: 'subject_search'
|
|
235
|
-
config.add_search_field 'no_display', qt: 'something', include_in_simple_select: false
|
|
236
|
-
end
|
|
237
|
-
|
|
238
|
-
allow(helper).to receive_messages(blacklight_config: @config)
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
it "returns proper options_for_select arguments" do
|
|
242
|
-
select_arguments = helper.search_field_options_for_select
|
|
243
|
-
|
|
244
|
-
select_arguments.each do |(label, key)|
|
|
245
|
-
config_hash = @config.search_fields[key]
|
|
246
|
-
|
|
247
|
-
expect(label).to eq config_hash.label
|
|
248
|
-
expect(key).to eq config_hash.key
|
|
249
|
-
end
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
it "does not include fields in select if :display_in_simple_search=>false" do
|
|
253
|
-
select_arguments = helper.search_field_options_for_select
|
|
254
|
-
|
|
255
|
-
expect(select_arguments).not_to include(["No Display", "no_display"])
|
|
256
|
-
end
|
|
257
|
-
end
|
|
258
|
-
|
|
259
123
|
context 'labels' do
|
|
260
124
|
let(:field_config) { { 'my-key' => double('field', display_label: 'My Field') } }
|
|
261
125
|
|
|
@@ -275,7 +139,7 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
|
|
|
275
139
|
end
|
|
276
140
|
|
|
277
141
|
it 'handles a missing field' do
|
|
278
|
-
expect(helper.label_for_search_field(nil)).to
|
|
142
|
+
expect(helper.label_for_search_field(nil)).to be_nil
|
|
279
143
|
end
|
|
280
144
|
end
|
|
281
145
|
|