blacklight 7.41.0 → 8.0.0.beta1
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 +2 -3
- data/.github/workflows/ruby.yml +81 -0
- data/.rubocop.yml +243 -14
- data/.rubocop_todo.yml +137 -429
- data/Gemfile +11 -6
- data/README.md +11 -3
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/blacklight.esm.js +384 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -0
- data/app/assets/javascripts/blacklight/blacklight.js +374 -493
- 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/_constraints.scss +4 -4
- data/app/assets/stylesheets/blacklight/_facets.scss +72 -44
- 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 +3 -3
- data/app/components/blacklight/advanced_search_form_component.rb +8 -10
- data/app/components/blacklight/constraints_component.rb +27 -37
- data/app/components/blacklight/document/action_component.rb +12 -10
- 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/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 +1 -1
- data/app/components/blacklight/document_component.rb +16 -78
- data/app/components/blacklight/document_metadata_component.html.erb +2 -4
- data/app/components/blacklight/document_metadata_component.rb +5 -10
- data/app/components/blacklight/facet_component.rb +3 -3
- data/app/components/blacklight/facet_field_checkboxes_component.html.erb +4 -4
- data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
- data/app/components/blacklight/facet_field_component.html.erb +4 -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.rb +1 -1
- data/app/components/blacklight/hidden_search_state_component.rb +1 -2
- data/app/components/blacklight/icons/icon_component.rb +4 -9
- 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 +4 -25
- data/app/components/blacklight/response/facet_group_component.html.erb +3 -5
- data/app/components/blacklight/response/facet_group_component.rb +29 -8
- data/app/components/blacklight/response/pagination_component.html.erb +1 -1
- data/app/components/blacklight/response/pagination_component.rb +2 -11
- data/app/components/blacklight/response/sort_component.html.erb +6 -1
- data/app/components/blacklight/response/sort_component.rb +1 -16
- 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_component.rb +43 -10
- 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/start_over_button_component.rb +5 -3
- data/app/components/blacklight/system/dropdown_component.rb +8 -5
- data/app/components/blacklight/system/flash_message_component.html.erb +4 -2
- 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 +1 -1
- data/app/components/blacklight/top_navbar_component.rb +0 -4
- data/app/controllers/bookmarks_controller.rb +1 -0
- data/app/controllers/catalog_controller.rb +1 -0
- data/app/controllers/concerns/blacklight/bookmarks.rb +10 -9
- data/app/controllers/concerns/blacklight/catalog.rb +21 -83
- data/app/controllers/concerns/blacklight/controller.rb +3 -41
- data/app/controllers/concerns/blacklight/search_context.rb +25 -7
- 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 +13 -1
- data/app/controllers/search_history_controller.rb +1 -0
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +12 -310
- data/app/helpers/blacklight/catalog_helper_behavior.rb +22 -139
- data/app/helpers/blacklight/component_helper_behavior.rb +2 -53
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -119
- data/app/helpers/blacklight/facets_helper_behavior.rb +4 -321
- data/app/helpers/blacklight/icon_helper_behavior.rb +5 -7
- data/app/helpers/blacklight/layout_helper_behavior.rb +4 -3
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +11 -31
- data/app/helpers/blacklight/url_helper_behavior.rb +12 -97
- data/app/helpers/blacklight_helper.rb +1 -0
- data/app/helpers/catalog_helper.rb +1 -0
- data/app/javascript/blacklight/bookmark_toggle.js +13 -19
- data/app/javascript/blacklight/button_focus.js +12 -10
- data/app/javascript/blacklight/checkbox_submit.js +68 -123
- data/app/javascript/blacklight/core.js +5 -7
- data/app/javascript/blacklight/index.js +13 -0
- data/app/javascript/blacklight/modal.js +99 -164
- data/app/javascript/blacklight/modalForm.js +60 -0
- data/app/javascript/blacklight/search_context.js +46 -54
- 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 -10
- 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/email.rb +1 -0
- 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 +2 -1
- data/app/models/concerns/blacklight/document/sms.rb +1 -0
- 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 +13 -12
- data/app/models/search.rb +1 -7
- data/app/models/solr_document.rb +1 -0
- data/app/presenters/blacklight/clause_presenter.rb +1 -1
- data/app/presenters/blacklight/document_presenter.rb +23 -50
- 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 +10 -6
- data/app/presenters/blacklight/rendering/link_to_facet.rb +2 -5
- 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 +12 -21
- data/app/services/blacklight/search_service.rb +10 -17
- data/app/values/blacklight/types.rb +0 -18
- 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/_citation.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 +5 -3
- data/app/views/catalog/_document.rss.builder +2 -4
- 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/_per_page_widget.html.erb +10 -1
- data/app/views/catalog/_search_form.html.erb +2 -2
- 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 +11 -16
- data/app/views/catalog/_show_sidebar.html.erb +2 -2
- data/app/views/catalog/_show_tools.html.erb +8 -14
- data/app/views/catalog/_view_type_group.html.erb +1 -1
- data/app/views/catalog/email.html.erb +2 -2
- 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 +4 -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/sms.html.erb +2 -2
- data/app/views/catalog/sms_success.html.erb +5 -6
- data/app/views/catalog/suggest.html.erb +3 -0
- data/app/views/kaminari/blacklight/_page.html.erb +2 -1
- data/app/views/layouts/blacklight/base.html.erb +13 -2
- data/app/views/search_history/index.html.erb +6 -2
- data/app/views/shared/_flash_messages.html.erb +1 -1
- data/app/views/shared/_modal.html.erb +3 -3
- data/blacklight.gemspec +7 -11
- data/config/importmap.rb +3 -0
- data/config/locales/blacklight.ar.yml +0 -1
- data/config/locales/blacklight.ca.yml +0 -1
- data/config/locales/blacklight.de.yml +0 -1
- data/config/locales/blacklight.en.yml +0 -2
- data/config/locales/blacklight.es.yml +0 -1
- data/config/locales/blacklight.fr.yml +0 -1
- data/config/locales/blacklight.hu.yml +0 -1
- data/config/locales/blacklight.it.yml +0 -1
- data/config/locales/blacklight.nl.yml +0 -1
- data/config/locales/blacklight.pt-BR.yml +0 -1
- data/config/locales/blacklight.sq.yml +0 -1
- data/config/locales/blacklight.zh.yml +0 -1
- 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 +3 -3
- data/lib/blacklight/abstract_repository.rb +1 -6
- data/lib/blacklight/component.rb +47 -10
- 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/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 +14 -10
- data/lib/blacklight/configuration.rb +310 -365
- data/lib/blacklight/engine.rb +8 -24
- data/lib/blacklight/exceptions.rb +2 -2
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +7 -13
- data/lib/blacklight/open_struct_with_hash_access.rb +23 -6
- data/lib/blacklight/parameters.rb +7 -21
- data/lib/blacklight/routes/exportable.rb +1 -0
- data/lib/blacklight/routes/searchable.rb +2 -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 +4 -24
- data/lib/blacklight/solr/request.rb +1 -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 +16 -3
- data/lib/blacklight/solr/search_builder_behavior.rb +16 -35
- data/lib/blacklight/solr.rb +7 -0
- data/lib/blacklight/version.rb +1 -0
- data/lib/blacklight.rb +26 -14
- data/lib/generators/blacklight/assets/importmap_generator.rb +55 -0
- data/lib/generators/blacklight/assets/propshaft_generator.rb +25 -0
- data/lib/generators/blacklight/assets/sprockets_generator.rb +66 -0
- data/lib/generators/blacklight/assets_generator.rb +13 -86
- data/lib/generators/blacklight/controller_generator.rb +4 -3
- data/lib/generators/blacklight/document_generator.rb +1 -0
- data/lib/generators/blacklight/install_generator.rb +4 -3
- 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 +34 -8
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +1 -70
- data/lib/generators/blacklight/test_support_generator.rb +5 -3
- data/lib/generators/blacklight/user_generator.rb +7 -9
- data/lib/railties/blacklight.rake +6 -7
- data/package.json +10 -13
- data/rollup.config.js +27 -0
- data/spec/components/blacklight/constraints_component_spec.rb +17 -13
- data/spec/components/blacklight/document/action_component_spec.rb +6 -1
- data/spec/components/blacklight/document_component_spec.rb +22 -131
- data/spec/components/blacklight/facet_component_spec.rb +3 -18
- 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 +10 -9
- data/spec/components/blacklight/response/view_type_component_spec.rb +66 -0
- data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
- data/spec/components/blacklight/search_context_component_spec.rb +17 -8
- 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 +13 -135
- data/spec/features/advanced_search_spec.rb +0 -56
- data/spec/features/autocomplete_spec.rb +1 -1
- data/spec/features/axe_spec.rb +1 -6
- data/spec/features/bookmarks_spec.rb +1 -1
- data/spec/features/facets_spec.rb +6 -4
- data/spec/features/search_context_spec.rb +5 -11
- data/spec/features/search_results_spec.rb +0 -33
- data/spec/features/sitelinks_search_box.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/layout_helper_behavior_spec.rb +3 -20
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +5 -7
- data/spec/helpers/blacklight/url_helper_behavior_spec.rb +9 -131
- data/spec/helpers/blacklight_helper_spec.rb +8 -252
- data/spec/helpers/catalog_helper_spec.rb +7 -118
- data/spec/i18n_spec.rb +1 -0
- data/spec/integration/generators/blacklight/solr_generator_spec.rb +1 -1
- data/spec/lib/blacklight/component_spec.rb +27 -32
- 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/view_config_spec.rb +1 -1
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +2 -2
- 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 +17 -51
- data/spec/models/blacklight/document/active_model_shim_spec.rb +2 -2
- data/spec/models/blacklight/icon_spec.rb +31 -15
- data/spec/models/blacklight/search_builder_spec.rb +9 -9
- data/spec/models/blacklight/solr/document_spec.rb +3 -3
- data/spec/models/blacklight/solr/repository_spec.rb +0 -45
- 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 +24 -44
- data/spec/models/blacklight/user_spec.rb +22 -0
- data/spec/models/solr_document_spec.rb +3 -9
- data/spec/presenters/blacklight/clause_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/document_presenter_spec.rb +2 -3
- 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 +0 -14
- data/spec/presenters/blacklight/index_presenter_spec.rb +2 -5
- 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 +20 -30
- 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 +2 -1
- data/spec/services/blacklight/search_service_spec.rb +39 -76
- data/spec/spec_helper.rb +8 -9
- 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_capybara_test_helpers.rb +8 -0
- data/spec/test_app_templates/Gemfile.extra +1 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +9 -2
- data/spec/views/catalog/_document.html.erb_spec.rb +3 -34
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +0 -2
- 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 +5 -66
- 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 +17 -11
- data/spec/views/catalog/index.html.erb_spec.rb +5 -6
- data/spec/views/catalog/index.json.jbuilder_spec.rb +2 -2
- 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 +11 -9
- data/template.demo.rb +7 -7
- metadata +77 -189
- data/.babelrc +0 -11
- data/.github/matrix.json +0 -62
- data/.github/workflows/build.yml +0 -16
- data/.github/workflows/lint.yml +0 -23
- data/.github/workflows/main.yml +0 -23
- data/.github/workflows/test.yml +0 -53
- 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/per_page_component.html.erb +0 -2
- data/app/components/blacklight/search/per_page_component.rb +0 -50
- data/app/components/blacklight/search_context/server_item_pagination_component.html.erb +0 -10
- data/app/components/blacklight/search_context/server_item_pagination_component.rb +0 -15
- data/app/components/blacklight/system/dropdown_button_component.rb +0 -18
- data/app/controllers/concerns/blacklight/base.rb +0 -12
- 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/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/components/blacklight/header_component_spec.rb +0 -20
- data/spec/components/blacklight/icons/icon_component_spec.rb +0 -42
- data/spec/components/blacklight/response/pagination_component_spec.rb +0 -53
- data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +0 -35
- data/spec/controllers/blacklight/facet_spec.rb +0 -33
- data/spec/controllers/blacklight/search_fields_spec.rb +0 -62
- data/spec/features/citation_spec.rb +0 -10
- data/spec/features/sitelinks_search_box_spec.rb +0 -13
- data/spec/features/sms_spec.rb +0 -12
- 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 -101
- data/spec/helpers/blacklight/suggest_helper_behavior_spec.rb +0 -48
- data/spec/lib/blacklight/engine_spec.rb +0 -41
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +0 -94
- data/spec/services/blacklight/field_retriever_spec.rb +0 -17
- data/spec/support/view_component_test_helpers.rb +0 -35
- 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
@@ -7,11 +7,10 @@ RSpec.describe BookmarksController do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'opts out of search session tracking' do
|
10
|
-
expect(@controller.blacklight_config.track_search_session).to
|
10
|
+
expect(@controller.blacklight_config.track_search_session).to be false
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
# jquery 1.9 ajax does error callback if 200 returns empty body. so use 204 instead.
|
15
14
|
describe "update" do
|
16
15
|
it "has a 200 status code when creating a new one" do
|
17
16
|
put :update, xhr: true, params: { id: '2007020969', format: :js }
|
@@ -105,7 +104,7 @@ RSpec.describe BookmarksController do
|
|
105
104
|
end
|
106
105
|
|
107
106
|
context 'created over an hour ago' do
|
108
|
-
let(:current_time) {
|
107
|
+
let(:current_time) { 2.hours.ago }
|
109
108
|
|
110
109
|
it 'is expired' do
|
111
110
|
get :index, params: { encrypted_user_id: token }
|
@@ -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 match_array([{ "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,23 +467,7 @@ 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(:mock_response) { instance_double(Blacklight::Solr::Response, documents: [SolrDocument.new(id: 'my_fake_doc'), SolrDocument.new(id: 'my_other_doc')]) }
|
489
|
-
|
490
471
|
before do
|
491
472
|
mock_document.extend(Blacklight::Document::Sms)
|
492
473
|
mock_document.extend(Blacklight::Document::Email)
|
@@ -494,7 +475,7 @@ RSpec.describe CatalogController, api: true do
|
|
494
475
|
allow(mock_document).to receive(:to_model).and_return(SolrDocument.new(id: 'my_fake_doc'))
|
495
476
|
|
496
477
|
allow(controller).to receive(:search_service).and_return(search_service)
|
497
|
-
expect(search_service).to receive(:fetch).and_return([
|
478
|
+
expect(search_service).to receive(:fetch).and_return([mock_document])
|
498
479
|
request.env["HTTP_REFERER"] = "/catalog/#{doc_id}"
|
499
480
|
SolrDocument.use_extension(Blacklight::Document::Email)
|
500
481
|
SolrDocument.use_extension(Blacklight::Document::Sms)
|
@@ -535,10 +516,6 @@ RSpec.describe CatalogController, api: true do
|
|
535
516
|
post :email, xhr: true, params: { id: doc_id, to: 'test_email@projectblacklight.org' }
|
536
517
|
expect(request).to render_template 'email_success'
|
537
518
|
expect(request.flash[:success]).to eq "Email Sent"
|
538
|
-
allow(search_service).to receive(:search_results)
|
539
|
-
# When we go to another page, the flash message should no longer display
|
540
|
-
get :index
|
541
|
-
expect(request.flash[:success]).to be_nil
|
542
519
|
end
|
543
520
|
end
|
544
521
|
|
@@ -585,7 +562,7 @@ RSpec.describe CatalogController, api: true do
|
|
585
562
|
|
586
563
|
it "redirects back to the record upon success" do
|
587
564
|
post :sms, params: { id: doc_id, to: '5555555555', carrier: 'txt.att.net' }
|
588
|
-
expect(request.flash[:error]).to
|
565
|
+
expect(request.flash[:error]).to be_nil
|
589
566
|
expect(request).to redirect_to(solr_document_path(doc_id))
|
590
567
|
end
|
591
568
|
|
@@ -593,10 +570,6 @@ RSpec.describe CatalogController, api: true do
|
|
593
570
|
post :sms, xhr: true, params: { id: doc_id, to: '5555555555', carrier: 'txt.att.net' }
|
594
571
|
expect(request).to render_template 'sms_success'
|
595
572
|
expect(request.flash[:success]).to eq "SMS Sent"
|
596
|
-
allow(search_service).to receive(:search_results)
|
597
|
-
# When we go to another page, the flash message should no longer display
|
598
|
-
get :index
|
599
|
-
expect(request.flash[:success]).to be_nil
|
600
573
|
end
|
601
574
|
end
|
602
575
|
end
|
@@ -615,31 +588,6 @@ RSpec.describe CatalogController, api: true do
|
|
615
588
|
get :citation, params: { id: "bad-record-identifer" }
|
616
589
|
end.to raise_error Blacklight::Exceptions::RecordNotFound
|
617
590
|
end
|
618
|
-
|
619
|
-
context "when there is an invalid search", api: false do
|
620
|
-
let(:service) { instance_double(Blacklight::SearchService) }
|
621
|
-
let(:fake_error) { Blacklight::Exceptions::InvalidRequest.new }
|
622
|
-
|
623
|
-
before do
|
624
|
-
allow(controller).to receive(:search_service).and_return(service)
|
625
|
-
allow(service).to receive(:search_results) { |*_args| raise fake_error }
|
626
|
-
allow(Rails.env).to receive_messages(test?: false)
|
627
|
-
end
|
628
|
-
|
629
|
-
it "redirects the user to the root url for a bad search" do
|
630
|
-
expect(controller.logger).to receive(:error).with(fake_error)
|
631
|
-
get :index, params: { q: '+' }
|
632
|
-
expect(response.redirect_url).to eq root_url
|
633
|
-
expect(request.flash[:notice]).to eq "Sorry, I don't understand your search."
|
634
|
-
expect(response).not_to be_successful
|
635
|
-
expect(response.status).to eq 302
|
636
|
-
end
|
637
|
-
|
638
|
-
it "returns status 500 if the catalog path is raising an exception" do
|
639
|
-
allow(controller).to receive(:flash).and_return(notice: I18n.t('blacklight.search.errors.request_error'))
|
640
|
-
expect { get :index, params: { q: '+' } }.to raise_error Blacklight::Exceptions::InvalidRequest
|
641
|
-
end
|
642
|
-
end
|
643
591
|
end
|
644
592
|
|
645
593
|
context "without a user authentication provider" do
|
@@ -787,7 +735,7 @@ RSpec.describe CatalogController, api: true do
|
|
787
735
|
end
|
788
736
|
|
789
737
|
describe "with a facet" do
|
790
|
-
before { allow(controller).to receive_messages(params: { f: { "
|
738
|
+
before { allow(controller).to receive_messages(params: { f: { "format" => ["value"] } }) }
|
791
739
|
|
792
740
|
it { is_expected.to be true }
|
793
741
|
end
|
@@ -849,76 +797,6 @@ RSpec.describe CatalogController, api: true do
|
|
849
797
|
expect(controller.send(:search_facet_path, id: "some_facet", page: 5)).to eq facet_catalog_path(id: "some_facet")
|
850
798
|
end
|
851
799
|
end
|
852
|
-
|
853
|
-
describe "facet_limit_for" do
|
854
|
-
let(:blacklight_config) { controller.blacklight_config }
|
855
|
-
|
856
|
-
it "returns specified value for facet_field specified" do
|
857
|
-
expect(controller.facet_limit_for("subject_ssim")).to eq blacklight_config.facet_fields["subject_ssim"].limit
|
858
|
-
end
|
859
|
-
|
860
|
-
it "facet_limit_hash should return hash with key being facet_field and value being configured limit" do
|
861
|
-
# facet_limit_hash has been removed from solrhelper in refactor. should it go back?
|
862
|
-
skip "facet_limit_hash has been removed from solrhelper in refactor. should it go back?"
|
863
|
-
expect(controller.facet_limit_hash).to eq blacklight_config[:facet][:limits]
|
864
|
-
end
|
865
|
-
|
866
|
-
it "handles no facet_limits in config" do
|
867
|
-
blacklight_config.facet_fields = {}
|
868
|
-
expect(controller.facet_limit_for("subject_ssim")).to be_nil
|
869
|
-
end
|
870
|
-
|
871
|
-
describe "for 'true' configured values" do
|
872
|
-
before do
|
873
|
-
allow(controller).to receive(:blacklight_config).and_return(blacklight_config)
|
874
|
-
end
|
875
|
-
|
876
|
-
let(:blacklight_config) do
|
877
|
-
Blacklight::Configuration.new do |config|
|
878
|
-
config.add_facet_field "language_facet", limit: true
|
879
|
-
end
|
880
|
-
end
|
881
|
-
|
882
|
-
it "returns nil if no @response available" do
|
883
|
-
expect(controller.facet_limit_for("some_unknown_field")).to be_nil
|
884
|
-
end
|
885
|
-
|
886
|
-
it "gets from @response facet.limit if available" do
|
887
|
-
response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: nil) })
|
888
|
-
controller.instance_variable_set(:@response, response)
|
889
|
-
blacklight_config.facet_fields['language_facet'].limit = 10
|
890
|
-
expect(controller.facet_limit_for("language_facet")).to eq 10
|
891
|
-
end
|
892
|
-
|
893
|
-
it "gets the limit from the facet field in @response" do
|
894
|
-
response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: 16) })
|
895
|
-
controller.instance_variable_set(:@response, response)
|
896
|
-
expect(controller.facet_limit_for("language_facet")).to eq 15
|
897
|
-
end
|
898
|
-
|
899
|
-
it "defaults to 10" do
|
900
|
-
expect(controller.facet_limit_for("language_facet")).to eq 10
|
901
|
-
end
|
902
|
-
end
|
903
|
-
|
904
|
-
context 'for facet fields with a key that is different from the field name' do
|
905
|
-
before do
|
906
|
-
allow(controller).to receive(:blacklight_config).and_return(blacklight_config)
|
907
|
-
end
|
908
|
-
|
909
|
-
let(:blacklight_config) do
|
910
|
-
Blacklight::Configuration.new do |config|
|
911
|
-
config.add_facet_field 'some_key', field: 'x', limit: true
|
912
|
-
end
|
913
|
-
end
|
914
|
-
|
915
|
-
it 'gets the limit from the facet field in the @response' do
|
916
|
-
response = instance_double(Blacklight::Solr::Response, aggregations: { 'x' => double(limit: 16) })
|
917
|
-
controller.instance_variable_set(:@response, response)
|
918
|
-
expect(controller.facet_limit_for('some_key')).to eq 15
|
919
|
-
end
|
920
|
-
end
|
921
|
-
end
|
922
800
|
end
|
923
801
|
|
924
802
|
# there must be at least one facet, and each facet must have at least one value
|
@@ -5,28 +5,9 @@ require 'spec_helper'
|
|
5
5
|
RSpec.describe "Blacklight Advanced Search Form" do
|
6
6
|
describe "advanced search form" do
|
7
7
|
before do
|
8
|
-
CatalogController.blacklight_config.search_fields['all_fields']['clause_params'] = {
|
9
|
-
edismax: {}
|
10
|
-
}
|
11
|
-
CatalogController.blacklight_config.search_fields['author']['clause_params'] = {
|
12
|
-
edismax: { qf: '${author_qf}' }
|
13
|
-
}
|
14
|
-
CatalogController.blacklight_config.search_fields['title']['clause_params'] = {
|
15
|
-
edismax: { qf: '${title_qf}' }
|
16
|
-
}
|
17
|
-
CatalogController.blacklight_config.search_fields['subject']['clause_params'] = {
|
18
|
-
edismax: { qf: '${subject_qf}' }
|
19
|
-
}
|
20
|
-
CatalogController.blacklight_config.json_solr_path = 'advanced'
|
21
8
|
visit '/catalog/advanced?hypothetical_existing_param=true&q=ignore+this+existing+query'
|
22
9
|
end
|
23
10
|
|
24
|
-
after do
|
25
|
-
%w[all_fields author title subject].each do |field|
|
26
|
-
CatalogController.blacklight_config.search_fields[field].delete(:clause_params)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
11
|
it "has field and facet blocks" do
|
31
12
|
expect(page).to have_selector('.query-criteria')
|
32
13
|
expect(page).to have_selector('.limit-criteria')
|
@@ -64,43 +45,6 @@ RSpec.describe "Blacklight Advanced Search Form" do
|
|
64
45
|
click_on 'advanced-search-submit'
|
65
46
|
expect(page).to have_content 'Remove constraint Title: Medicine'
|
66
47
|
expect(page).to have_content 'Strong Medicine speaks'
|
67
|
-
expect(page).to have_selector('article.document', count: 1)
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'can limit to facets' do
|
71
|
-
fill_in 'Subject', with: 'Women'
|
72
|
-
click_on 'Language'
|
73
|
-
check 'Urdu 3'
|
74
|
-
click_on 'advanced-search-submit'
|
75
|
-
expect(page).to have_content 'Pākistānī ʻaurat dorāhe par'
|
76
|
-
expect(page).not_to have_content 'Ajikto kŭrŏk chŏrŏk sasimnikka : and 아직도 그럭 저럭 사십니까'
|
77
|
-
expect(page).to have_selector('article.document', count: 1)
|
78
|
-
end
|
79
|
-
|
80
|
-
it 'handles boolean queries' do
|
81
|
-
fill_in 'All Fields', with: 'history NOT strong'
|
82
|
-
click_on 'advanced-search-submit'
|
83
|
-
expect(page).to have_content('Ci an zhou bian')
|
84
|
-
expect(page).not_to have_content('Strong Medicine speaks')
|
85
|
-
expect(page).to have_selector('article.document', count: 10)
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'handles queries in multiple fields with the ALL operator' do
|
89
|
-
fill_in 'All Fields', with: 'history'
|
90
|
-
fill_in 'Author', with: 'hearth'
|
91
|
-
click_on 'advanced-search-submit'
|
92
|
-
expect(page).to have_content('Strong Medicine speaks')
|
93
|
-
expect(page).to have_selector('article.document', count: 1)
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'handles queries in multiple fields with the ANY operator' do
|
97
|
-
select 'any', from: 'op'
|
98
|
-
fill_in 'All Fields', with: 'history'
|
99
|
-
fill_in 'Subject', with: 'women'
|
100
|
-
click_on 'advanced-search-submit'
|
101
|
-
expect(page).to have_content('Ci an zhou bian')
|
102
|
-
expect(page).to have_content('Pākistānī ʻaurat dorāhe par')
|
103
|
-
expect(page).to have_selector('article.document', count: 10)
|
104
48
|
end
|
105
49
|
end
|
106
50
|
|
data/spec/features/axe_spec.rb
CHANGED
@@ -21,11 +21,6 @@ RSpec.describe 'Accessibility testing', api: false, js: true do
|
|
21
21
|
expect(page).to be_accessible
|
22
22
|
end
|
23
23
|
|
24
|
-
it 'validates the advanced search form' do
|
25
|
-
visit advanced_search_catalog_path
|
26
|
-
expect(page).to be_accessible.excluding('.search-query-form')
|
27
|
-
end
|
28
|
-
|
29
24
|
it 'validates the single results page' do
|
30
25
|
visit solr_document_path('2007020969')
|
31
26
|
expect(page).to be_accessible
|
@@ -33,6 +28,6 @@ RSpec.describe 'Accessibility testing', api: false, js: true do
|
|
33
28
|
|
34
29
|
def be_accessible(skipping: [])
|
35
30
|
# typeahead does funny things with the search bar
|
36
|
-
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)
|
37
32
|
end
|
38
33
|
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'
|
@@ -79,11 +79,13 @@ RSpec.describe "Facets" do
|
|
79
79
|
expect(page).to have_css('.constraint-value', text: 'Language Tibetan')
|
80
80
|
end
|
81
81
|
|
82
|
-
describe 'heading button focus' do
|
83
|
-
it 'changes to the button on button click
|
82
|
+
describe 'heading button focus with Firefox' do
|
83
|
+
it 'changes to the button on button click in Firefox' do
|
84
|
+
pending 'Capybara::NotSupportedByDriverError: Capybara::Driver::Base#evaluate_script'
|
84
85
|
visit root_path
|
85
86
|
page.find('h3.facet-field-heading button', text: 'Format').click
|
86
|
-
|
87
|
+
focused_element_data_target = page.evaluate_script("document.activeElement")['data-bs-target']
|
88
|
+
expect(focused_element_data_target).to eq '#facet-format'
|
87
89
|
end
|
88
90
|
end
|
89
91
|
|
@@ -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 »"
|
@@ -35,7 +35,7 @@ RSpec.describe "Search Results context", js: true do
|
|
35
35
|
it "does not display stale previous and next links for direct item views" do
|
36
36
|
search_for ''
|
37
37
|
click_on 'Pluvial nectar of blessings'
|
38
|
-
|
38
|
+
|
39
39
|
# Go to the number 9 result separately
|
40
40
|
visit '/catalog/2003546302'
|
41
41
|
expect(page).not_to have_selector '.page-links'
|
@@ -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
|
+
describe 'Sitelinks search box' do
|
4
|
+
it 'is home page' do
|
5
|
+
visit root_path
|
6
|
+
expect(page).to have_css 'script[type="application/ld+json"]'
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'on search page' do
|
10
|
+
visit search_catalog_path q: 'book'
|
11
|
+
expect(page).not_to have_css 'script[type="application/ld+json"]'
|
12
|
+
end
|
13
|
+
end
|