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
|
@@ -32,11 +32,11 @@ RSpec.describe 'Blacklight::Document::ActiveModelShim', api: true do
|
|
|
32
32
|
|
|
33
33
|
describe "#==" do
|
|
34
34
|
it 'is equal for the same id' do
|
|
35
|
-
expect(MockDocument.new(id: 1) == MockDocument.new(id: 1)).to
|
|
35
|
+
expect(MockDocument.new(id: 1) == MockDocument.new(id: 1)).to be true
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
it 'is not equal if the ids differ' do
|
|
39
|
-
expect(MockDocument.new(id: 1) == MockDocument.new(id: 2)).to
|
|
39
|
+
expect(MockDocument.new(id: 1) == MockDocument.new(id: 2)).to be false
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
end
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
RSpec.describe Blacklight::Icon do
|
|
4
|
-
subject { described_class.new(:
|
|
4
|
+
subject(:instance) { described_class.new(:test, classes: 'awesome', aria_hidden: true) }
|
|
5
|
+
|
|
6
|
+
let(:svg) { String.new(Blacklight::Icons::SearchComponent.new.svg) }
|
|
7
|
+
let(:asset) { double(source: svg) }
|
|
8
|
+
|
|
9
|
+
before do
|
|
10
|
+
if defined?(Sprockets)
|
|
11
|
+
allow(Rails.application.assets).to receive(:find_asset).and_return(asset)
|
|
12
|
+
elsif defined?(Propshaft)
|
|
13
|
+
allow(Rails.application.assets.load_path).to receive(:find).and_return(asset)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
5
16
|
|
|
6
17
|
describe '#svg' do
|
|
7
18
|
it 'returns a string' do
|
|
@@ -20,31 +31,31 @@ RSpec.describe Blacklight::Icon do
|
|
|
20
31
|
|
|
21
32
|
it 'adds title' do
|
|
22
33
|
expect(Capybara.string(subject.svg))
|
|
23
|
-
.to have_css 'title', text: '
|
|
34
|
+
.to have_css 'title', text: 'Test'
|
|
24
35
|
end
|
|
25
36
|
|
|
26
37
|
context 'when label is false' do
|
|
27
|
-
subject { described_class.new(:
|
|
38
|
+
subject { described_class.new(:test, classes: 'awesome', aria_hidden: true, label: false) }
|
|
28
39
|
|
|
29
40
|
it 'does not add title' do
|
|
30
41
|
expect(Capybara.string(subject.svg))
|
|
31
|
-
.not_to have_css 'title', text: '
|
|
42
|
+
.not_to have_css 'title', text: 'Test'
|
|
32
43
|
end
|
|
33
44
|
end
|
|
34
45
|
|
|
35
|
-
context '
|
|
36
|
-
subject { described_class.new(:
|
|
46
|
+
context 'with a label context' do
|
|
47
|
+
subject { described_class.new(:test, classes: 'awesome', aria_hidden: true, additional_options: { label_context: 'foo' }) }
|
|
37
48
|
|
|
38
49
|
it 'adds title' do
|
|
39
50
|
expect(Capybara.string(subject.svg))
|
|
40
|
-
.to have_css 'title', text: '
|
|
51
|
+
.to have_css 'title', text: 'Test'
|
|
41
52
|
end
|
|
42
53
|
end
|
|
43
54
|
end
|
|
44
55
|
|
|
45
56
|
describe '#options' do
|
|
46
57
|
it 'applies options classes and default class' do
|
|
47
|
-
expect(subject.options[:class]).to eq 'blacklight-icons blacklight-icon-
|
|
58
|
+
expect(subject.options[:class]).to eq 'blacklight-icons blacklight-icon-test awesome'
|
|
48
59
|
end
|
|
49
60
|
|
|
50
61
|
it 'applies options aria-hidden=true' do
|
|
@@ -59,30 +70,33 @@ RSpec.describe Blacklight::Icon do
|
|
|
59
70
|
end
|
|
60
71
|
|
|
61
72
|
it 'has no aria-hidden attribute with no options' do
|
|
62
|
-
expect(subject.options[:'aria-hidden']).to
|
|
73
|
+
expect(subject.options[:'aria-hidden']).to be_nil
|
|
63
74
|
end
|
|
64
75
|
end
|
|
65
76
|
end
|
|
66
77
|
|
|
67
78
|
describe '#path' do
|
|
68
79
|
it 'prepends blacklight and sufixes .svg' do
|
|
69
|
-
expect(subject.path).to eq 'blacklight/
|
|
80
|
+
expect(subject.path).to eq 'blacklight/test.svg'
|
|
70
81
|
end
|
|
71
82
|
end
|
|
72
83
|
|
|
73
84
|
describe 'file_source' do
|
|
85
|
+
subject(:file_source) { instance.file_source }
|
|
86
|
+
|
|
74
87
|
context 'file is not available' do
|
|
75
88
|
subject { described_class.new(:yolo) }
|
|
76
89
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
90
|
+
let(:asset) { nil }
|
|
91
|
+
|
|
92
|
+
it 'raises an error when not found' do
|
|
93
|
+
expect { file_source }.to raise_error(Blacklight::Exceptions::IconNotFound)
|
|
94
|
+
end
|
|
81
95
|
end
|
|
82
96
|
|
|
83
97
|
context 'file is available' do
|
|
84
98
|
it 'returns the filesource' do
|
|
85
|
-
expect(
|
|
99
|
+
expect(file_source).to include '<svg'
|
|
86
100
|
end
|
|
87
101
|
end
|
|
88
102
|
end
|
|
@@ -45,7 +45,7 @@ RSpec.describe Blacklight::SearchBuilder, api: true do
|
|
|
45
45
|
|
|
46
46
|
it "is mutable" do
|
|
47
47
|
subject.processor_chain.insert(-1, :d)
|
|
48
|
-
expect(subject.processor_chain).to
|
|
48
|
+
expect(subject.processor_chain).to contain_exactly(:a, :b, :c, :d)
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
@@ -56,7 +56,7 @@ RSpec.describe Blacklight::SearchBuilder, api: true do
|
|
|
56
56
|
builder = subject.append(:d, :e)
|
|
57
57
|
expect(subject.processor_chain).to eq processor_chain
|
|
58
58
|
expect(builder.processor_chain).not_to eq subject.processor_chain
|
|
59
|
-
expect(builder.processor_chain).to
|
|
59
|
+
expect(builder.processor_chain).to contain_exactly(:a, :b, :c, :d, :e)
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -68,7 +68,7 @@ RSpec.describe Blacklight::SearchBuilder, api: true do
|
|
|
68
68
|
expect(builder).not_to equal(subject)
|
|
69
69
|
expect(subject.processor_chain).to eq processor_chain
|
|
70
70
|
expect(builder.processor_chain).not_to eq subject.processor_chain
|
|
71
|
-
expect(builder.processor_chain).to
|
|
71
|
+
expect(builder.processor_chain).to contain_exactly(:a, :c, :e)
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
|
|
@@ -234,50 +234,50 @@ RSpec.describe Blacklight::SearchBuilder, api: true do
|
|
|
234
234
|
|
|
235
235
|
describe "#params_changed?" do
|
|
236
236
|
it "is false" do
|
|
237
|
-
expect(subject.send(:params_changed?)).to
|
|
237
|
+
expect(subject.send(:params_changed?)).to be false
|
|
238
238
|
end
|
|
239
239
|
|
|
240
240
|
it "is marked as changed when with() changes" do
|
|
241
241
|
subject.with(a: 1)
|
|
242
|
-
expect(subject.send(:params_changed?)).to
|
|
242
|
+
expect(subject.send(:params_changed?)).to be true
|
|
243
243
|
end
|
|
244
244
|
|
|
245
245
|
it "is marked as changed when where() changes" do
|
|
246
246
|
subject.where(a: 1)
|
|
247
|
-
expect(subject.send(:params_changed?)).to
|
|
247
|
+
expect(subject.send(:params_changed?)).to be true
|
|
248
248
|
end
|
|
249
249
|
|
|
250
250
|
it "is marked as changed when the processor chain changes" do
|
|
251
251
|
subject.append(:a)
|
|
252
|
-
expect(subject.send(:params_changed?)).to
|
|
252
|
+
expect(subject.send(:params_changed?)).to be true
|
|
253
253
|
end
|
|
254
254
|
|
|
255
255
|
it "is marked as changed when merged parameters are added" do
|
|
256
256
|
subject.merge(a: 1)
|
|
257
|
-
expect(subject.send(:params_changed?)).to
|
|
257
|
+
expect(subject.send(:params_changed?)).to be true
|
|
258
258
|
end
|
|
259
259
|
|
|
260
260
|
it "is marked as changed when reverse merged parameters are added" do
|
|
261
261
|
subject.reverse_merge(a: 1)
|
|
262
|
-
expect(subject.send(:params_changed?)).to
|
|
262
|
+
expect(subject.send(:params_changed?)).to be true
|
|
263
263
|
end
|
|
264
264
|
|
|
265
265
|
it "is marked as changed when pagination changes" do
|
|
266
266
|
expect(subject).to receive(:page=).with(1).and_call_original
|
|
267
267
|
subject.page(1)
|
|
268
|
-
expect(subject.send(:params_changed?)).to
|
|
268
|
+
expect(subject.send(:params_changed?)).to be true
|
|
269
269
|
end
|
|
270
270
|
|
|
271
271
|
it "is marked as changed when rows changes" do
|
|
272
272
|
expect(subject).to receive(:rows=).with(1).and_call_original
|
|
273
273
|
subject.rows(1)
|
|
274
|
-
expect(subject.send(:params_changed?)).to
|
|
274
|
+
expect(subject.send(:params_changed?)).to be true
|
|
275
275
|
end
|
|
276
276
|
|
|
277
277
|
it "is marked as changed when start offset changes" do
|
|
278
278
|
expect(subject).to receive(:start=).with(1).and_call_original
|
|
279
279
|
subject.start(1)
|
|
280
|
-
expect(subject.send(:params_changed?)).to
|
|
280
|
+
expect(subject.send(:params_changed?)).to be true
|
|
281
281
|
end
|
|
282
282
|
end
|
|
283
283
|
end
|
|
@@ -21,9 +21,9 @@ RSpec.describe "Blacklight::Solr::Document", api: true do
|
|
|
21
21
|
it 'creates a doc with hashy methods' do
|
|
22
22
|
doc = SolrDocument.new('id' => 'SP2514N', 'inStock' => true, 'manu' => 'Samsung Electronics Co. Ltd.', 'name' => 'Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133', 'popularity' => 6, 'price' => 92.0, 'sku' => 'SP2514N', 'timestamp' => '2009-03-20T14:42:49.795Z', 'cat' => ['electronics', 'hard drive'], 'spell' => ['Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133'], 'features' => ['7200RPM, 8MB cache, IDE Ultra ATA-133', 'NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor'])
|
|
23
23
|
|
|
24
|
-
expect(doc.has?(:cat, /^elec/)).to
|
|
25
|
-
expect(doc.has?(:cat, 'elec')).not_to
|
|
26
|
-
expect(doc.has?(:cat, 'electronics')).to
|
|
24
|
+
expect(doc.has?(:cat, /^elec/)).to be true
|
|
25
|
+
expect(doc.has?(:cat, 'elec')).not_to be true
|
|
26
|
+
expect(doc.has?(:cat, 'electronics')).to be true
|
|
27
27
|
|
|
28
28
|
expect(doc.fetch(:cat)).to eq ['electronics', 'hard drive']
|
|
29
29
|
expect(doc.fetch(:xyz, nil)).to be_nil
|
|
@@ -45,7 +45,7 @@ RSpec.describe Blacklight::Solr::Request, api: true do
|
|
|
45
45
|
subject.append_query 'this is my query'
|
|
46
46
|
subject.append_query 'another:query'
|
|
47
47
|
expect(subject).not_to have_key 'q'
|
|
48
|
-
expect(subject.dig('json', 'query', 'bool', 'must')).to
|
|
48
|
+
expect(subject.dig('json', 'query', 'bool', 'must')).to contain_exactly('this is my query', 'another:query')
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
@@ -62,7 +62,7 @@ RSpec.describe Blacklight::Solr::Request, api: true do
|
|
|
62
62
|
subject['q'] = 'some query'
|
|
63
63
|
subject.append_boolean_query :must, 'also required'
|
|
64
64
|
|
|
65
|
-
expect(subject.dig('json', 'query', 'bool', 'must')).to
|
|
65
|
+
expect(subject.dig('json', 'query', 'bool', 'must')).to contain_exactly('some query', 'also required')
|
|
66
66
|
end
|
|
67
67
|
end
|
|
68
68
|
end
|
|
@@ -114,13 +114,13 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
|
|
|
114
114
|
|
|
115
115
|
it "defaults to count if no value is found and the default limit is used" do
|
|
116
116
|
expect(subject.aggregations['my_field'].sort).to eq 'count'
|
|
117
|
-
expect(subject.aggregations['my_field'].count?).to
|
|
117
|
+
expect(subject.aggregations['my_field'].count?).to be true
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
it "defaults to index if no value is found and the limit is unlimited" do
|
|
121
121
|
request_params['facet.limit'] = -1
|
|
122
122
|
expect(subject.aggregations['my_field'].sort).to eq 'index'
|
|
123
|
-
expect(subject.aggregations['my_field'].index?).to
|
|
123
|
+
expect(subject.aggregations['my_field'].index?).to be true
|
|
124
124
|
end
|
|
125
125
|
end
|
|
126
126
|
|
|
@@ -335,21 +335,21 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
|
|
|
335
335
|
let(:response) do
|
|
336
336
|
{
|
|
337
337
|
facets: {
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
338
|
+
count: 32,
|
|
339
|
+
categories: {
|
|
340
|
+
buckets: [
|
|
341
341
|
{
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
342
|
+
val: "electronics",
|
|
343
|
+
count: 12,
|
|
344
|
+
max_price: 60
|
|
345
345
|
},
|
|
346
346
|
{
|
|
347
|
-
|
|
348
|
-
|
|
347
|
+
val: "currency",
|
|
348
|
+
count: 4
|
|
349
349
|
},
|
|
350
350
|
{
|
|
351
|
-
|
|
352
|
-
|
|
351
|
+
val: "memory",
|
|
352
|
+
count: 3
|
|
353
353
|
}
|
|
354
354
|
]
|
|
355
355
|
}
|
|
@@ -375,25 +375,25 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
|
|
|
375
375
|
let(:response) do
|
|
376
376
|
{
|
|
377
377
|
facets: {
|
|
378
|
-
|
|
379
|
-
|
|
378
|
+
categories: {
|
|
379
|
+
buckets: [
|
|
380
380
|
{
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
381
|
+
val: "electronics",
|
|
382
|
+
count: 12,
|
|
383
|
+
top_manufacturer: {
|
|
384
|
+
buckets: [{
|
|
385
|
+
val: "corsair",
|
|
386
|
+
count: 3
|
|
387
387
|
}]
|
|
388
388
|
}
|
|
389
389
|
},
|
|
390
390
|
{
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
391
|
+
val: "currency",
|
|
392
|
+
count: 4,
|
|
393
|
+
top_manufacturer: {
|
|
394
|
+
buckets: [{
|
|
395
|
+
val: "boa",
|
|
396
|
+
count: 1
|
|
397
397
|
}]
|
|
398
398
|
}
|
|
399
399
|
}
|
|
@@ -413,7 +413,7 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
|
|
|
413
413
|
let(:response) do
|
|
414
414
|
{
|
|
415
415
|
facets: {
|
|
416
|
-
|
|
416
|
+
categories: {
|
|
417
417
|
"missing" => { "count" => 13 },
|
|
418
418
|
"buckets" => [{ "val" => "India", "count" => 2 }, { "val" => "Iran", "count" => 2 }]
|
|
419
419
|
}
|
|
@@ -43,7 +43,7 @@ RSpec.describe Blacklight::Solr::Response, api: true do
|
|
|
43
43
|
|
|
44
44
|
expected = "electronics - 14, memory - 3, card - 2, connector - 2, drive - 2, graphics - 2, hard - 2, monitor - 2, search - 2, software - 2"
|
|
45
45
|
received = first_facet.items.collect do |item|
|
|
46
|
-
item.value
|
|
46
|
+
"#{item.value} - #{item.hits}"
|
|
47
47
|
end.join(', ')
|
|
48
48
|
|
|
49
49
|
expect(received).to eq expected
|
|
@@ -60,12 +60,19 @@ RSpec.describe Blacklight::Solr::Response, api: true do
|
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
+
it 'provides a null-object for facets that are not in the response' do
|
|
64
|
+
expect(r.aggregations).not_to include :some_null_object
|
|
65
|
+
|
|
66
|
+
expect(r.aggregations[:some_null_object]).to be_a Blacklight::Solr::Response::FacetField
|
|
67
|
+
expect(r.aggregations[:some_null_object].items).to be_blank
|
|
68
|
+
end
|
|
69
|
+
|
|
63
70
|
it "provides kaminari pagination helpers" do
|
|
64
71
|
expect(r.limit_value).to eq(r.rows)
|
|
65
72
|
expect(r.offset_value).to eq(r.start)
|
|
66
73
|
expect(r.total_count).to eq(r.total)
|
|
67
74
|
expect(r.next_page).to eq(r.current_page + 1)
|
|
68
|
-
expect(r.prev_page).to
|
|
75
|
+
expect(r.prev_page).to be_nil
|
|
69
76
|
expect(r.entry_name(count: 1)).to eq 'entry'
|
|
70
77
|
expect(r.entry_name(count: 2)).to eq 'entries'
|
|
71
78
|
expect(r.size).to eq 26
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
4
4
|
subject { search_builder.with(user_params) }
|
|
5
5
|
|
|
6
|
-
let(:single_facet) { { format: 'Book' } }
|
|
7
|
-
let(:multi_facets) { { format: 'Book', language_ssim: 'Tibetan' } }
|
|
6
|
+
let(:single_facet) { { format: ['Book'] } }
|
|
7
|
+
let(:multi_facets) { { format: ['Book'], language_ssim: ['Tibetan'] } }
|
|
8
8
|
let(:mult_word_query) { 'tibetan history' }
|
|
9
9
|
let(:subject_search_params) { { commit: "search", search_field: "subject", action: "index", controller: "catalog", rows: "10", q: "wome" } }
|
|
10
10
|
|
|
@@ -73,7 +73,7 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
73
73
|
expect(subject[:pf]).to eq ""
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
describe "should respect proper precedence of settings,
|
|
76
|
+
describe "should respect proper precedence of settings," do
|
|
77
77
|
it "does not put :search_field in produced params" do
|
|
78
78
|
expect(subject[:search_field]).to be_nil
|
|
79
79
|
end
|
|
@@ -108,7 +108,7 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
it "generates a facet limit" do
|
|
111
|
-
expect(subject[:
|
|
111
|
+
expect(subject[:'f.subject_ssim.facet.limit']).to eq 21
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
context 'with a negative facet limit' do
|
|
@@ -117,7 +117,7 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
it 'is negative' do
|
|
120
|
-
expect(subject[:
|
|
120
|
+
expect(subject[:'f.subject_ssim.facet.limit']).to eq -1
|
|
121
121
|
end
|
|
122
122
|
end
|
|
123
123
|
|
|
@@ -127,13 +127,13 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
127
127
|
end
|
|
128
128
|
|
|
129
129
|
it 'is negative' do
|
|
130
|
-
expect(subject[:
|
|
130
|
+
expect(subject[:'f.subject_ssim.facet.limit']).to eq 0
|
|
131
131
|
end
|
|
132
132
|
end
|
|
133
133
|
|
|
134
134
|
it "handles no facet_limits in config" do
|
|
135
135
|
blacklight_config.facet_fields = {}
|
|
136
|
-
expect(subject).not_to have_key(:
|
|
136
|
+
expect(subject).not_to have_key(:'f.subject_ssim.facet.limit')
|
|
137
137
|
end
|
|
138
138
|
|
|
139
139
|
describe "with max per page enforced" do
|
|
@@ -178,7 +178,7 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
178
178
|
|
|
179
179
|
it 'has default facet fields' do
|
|
180
180
|
# remove local params from the facet.field
|
|
181
|
-
expect(subject[:
|
|
181
|
+
expect(subject[:'facet.field'].map { |x| x.gsub(/\{![^}]+\}/, '') }).to match_array %w[format subject_ssim pub_date_ssim language_ssim lc_1letter_ssim subject_geo_ssim subject_era_ssim]
|
|
182
182
|
end
|
|
183
183
|
|
|
184
184
|
it "does not have a default qt" do
|
|
@@ -191,6 +191,14 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
191
191
|
end
|
|
192
192
|
end
|
|
193
193
|
|
|
194
|
+
describe "for a missing string search" do
|
|
195
|
+
let(:user_params) { { q: nil } }
|
|
196
|
+
|
|
197
|
+
it "does not populate the q parameter in solr parameters" do
|
|
198
|
+
expect(subject).not_to have_key :q
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
194
202
|
describe "for an empty string search" do
|
|
195
203
|
let(:user_params) { { q: "" } }
|
|
196
204
|
|
|
@@ -216,7 +224,7 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
216
224
|
expect(subject["spellcheck.q"]).to be_blank
|
|
217
225
|
|
|
218
226
|
single_facet.each_value do |value|
|
|
219
|
-
|
|
227
|
+
value.each do |v|
|
|
220
228
|
expect(subject[:fq]).to include("{!term f=#{single_facet.keys[0]}}#{v}")
|
|
221
229
|
end
|
|
222
230
|
end
|
|
@@ -355,14 +363,14 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
355
363
|
end
|
|
356
364
|
|
|
357
365
|
it "includes spellcheck.dictionary from field def solr_parameters" do
|
|
358
|
-
expect(subject[:
|
|
366
|
+
expect(subject[:'spellcheck.dictionary']).to eq "subject"
|
|
359
367
|
end
|
|
360
368
|
|
|
361
369
|
it "adds on :solr_local_parameters using Solr LocalParams style" do
|
|
362
370
|
# q == "{!pf=$subject_pf $qf=subject_qf} wome", make sure
|
|
363
371
|
# the LocalParams are really there
|
|
364
372
|
subject[:q] =~ /^\{!([^}]+)\}/
|
|
365
|
-
key_value_pairs = Regexp.last_match(1).split
|
|
373
|
+
key_value_pairs = Regexp.last_match(1).split
|
|
366
374
|
expect(key_value_pairs).to include("pf=$subject_pf")
|
|
367
375
|
expect(key_value_pairs).to include("qf=$subject_qf")
|
|
368
376
|
end
|
|
@@ -400,16 +408,6 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
400
408
|
end
|
|
401
409
|
end
|
|
402
410
|
|
|
403
|
-
describe "overriding of qt parameter" do
|
|
404
|
-
let(:user_params) do
|
|
405
|
-
{ qt: 'overridden' }
|
|
406
|
-
end
|
|
407
|
-
|
|
408
|
-
it "returns the correct overriden parameter" do
|
|
409
|
-
expect(subject[:qt]).to eq "overridden"
|
|
410
|
-
end
|
|
411
|
-
end
|
|
412
|
-
|
|
413
411
|
describe "sorting" do
|
|
414
412
|
context 'when the user has not provided a value' do
|
|
415
413
|
it 'sends the default sort parameter to solr' do
|
|
@@ -492,7 +490,7 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
492
490
|
describe 'the search field query_builder config' do
|
|
493
491
|
let(:blacklight_config) do
|
|
494
492
|
Blacklight::Configuration.new do |config|
|
|
495
|
-
config.add_search_field('built_query', query_builder: ->(builder, *_args) { [builder.blacklight_params[:q].reverse, qq1: 'xyz'] })
|
|
493
|
+
config.add_search_field('built_query', query_builder: ->(builder, *_args) { [builder.blacklight_params[:q].reverse, { qq1: 'xyz' }] })
|
|
496
494
|
end
|
|
497
495
|
end
|
|
498
496
|
|
|
@@ -584,6 +582,17 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
584
582
|
|
|
585
583
|
expect(solr_parameters[:fq]).to be_a_kind_of Array
|
|
586
584
|
end
|
|
585
|
+
|
|
586
|
+
context "facet not defined in config" do
|
|
587
|
+
let(:single_facet) { { unknown_facet_field: "foo" } }
|
|
588
|
+
let(:user_params) { { f: single_facet } }
|
|
589
|
+
|
|
590
|
+
it "does not add facet to solr_parameters" do
|
|
591
|
+
solr_parameters = Blacklight::Solr::Request.new
|
|
592
|
+
subject.add_facet_fq_to_solr(solr_parameters)
|
|
593
|
+
expect(solr_parameters[:fq]).to be_blank
|
|
594
|
+
end
|
|
595
|
+
end
|
|
587
596
|
end
|
|
588
597
|
|
|
589
598
|
describe "#add_solr_fields_to_query" do
|
|
@@ -735,7 +744,7 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
|
735
744
|
end
|
|
736
745
|
|
|
737
746
|
it 'sets facets requested to facet_field argument' do
|
|
738
|
-
expect(solr_parameters[
|
|
747
|
+
expect(solr_parameters[:'facet.field']).to eq facet_field
|
|
739
748
|
end
|
|
740
749
|
|
|
741
750
|
it 'defaults offset to 0' do
|
|
@@ -45,4 +45,26 @@ RSpec.describe "Blacklight::User", api: true do
|
|
|
45
45
|
expect(subject.existing_bookmark_for(SolrDocument.new(id: 1))).to eq subject.bookmarks.first
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
|
+
|
|
49
|
+
describe '#to_s' do
|
|
50
|
+
it 'is the email by default' do
|
|
51
|
+
expect(subject.to_s).to eq subject.email
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
context 'when no email method is provided' do
|
|
55
|
+
let(:old_method) { subject.class.instance_method(:email) }
|
|
56
|
+
|
|
57
|
+
before do
|
|
58
|
+
subject.class.send(:undef_method, old_method.name)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
after do
|
|
62
|
+
subject.class.send(:define_method, old_method.name, old_method)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'still provides a string' do
|
|
66
|
+
expect(subject.to_s).to be_a String
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
48
70
|
end
|