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
@@ -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
|
@@ -224,7 +224,7 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
224
224
|
expect(subject["spellcheck.q"]).to be_blank
|
225
225
|
|
226
226
|
single_facet.each_value do |value|
|
227
|
-
|
227
|
+
value.each do |v|
|
228
228
|
expect(subject[:fq]).to include("{!term f=#{single_facet.keys[0]}}#{v}")
|
229
229
|
end
|
230
230
|
end
|
@@ -335,7 +335,6 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
335
335
|
qf: '$subject_qf',
|
336
336
|
pf: '$subject_pf'
|
337
337
|
}
|
338
|
-
blacklight_config.search_fields['subject'].clause_params = nil
|
339
338
|
end
|
340
339
|
|
341
340
|
it "looks up qt from field definition" do
|
@@ -364,29 +363,17 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
364
363
|
end
|
365
364
|
|
366
365
|
it "includes spellcheck.dictionary from field def solr_parameters" do
|
367
|
-
expect(subject[:
|
366
|
+
expect(subject[:'spellcheck.dictionary']).to eq "subject"
|
368
367
|
end
|
369
368
|
|
370
369
|
it "adds on :solr_local_parameters using Solr LocalParams style" do
|
371
370
|
# q == "{!pf=$subject_pf $qf=subject_qf} wome", make sure
|
372
371
|
# the LocalParams are really there
|
373
372
|
subject[:q] =~ /^\{!([^}]+)\}/
|
374
|
-
key_value_pairs = Regexp.last_match(1).split
|
373
|
+
key_value_pairs = Regexp.last_match(1).split
|
375
374
|
expect(key_value_pairs).to include("pf=$subject_pf")
|
376
375
|
expect(key_value_pairs).to include("qf=$subject_qf")
|
377
376
|
end
|
378
|
-
|
379
|
-
context 'when subject field uses JSON query DSL' do
|
380
|
-
before do
|
381
|
-
blacklight_config.search_fields['subject'].clause_params = {
|
382
|
-
edismax: {}
|
383
|
-
}
|
384
|
-
end
|
385
|
-
|
386
|
-
it "includes spellcheck.q, without LocalParams" do
|
387
|
-
expect(subject["spellcheck.q"]).to eq "wome"
|
388
|
-
end
|
389
|
-
end
|
390
377
|
end
|
391
378
|
|
392
379
|
describe "solr json query parameters from the fielded search" do
|
@@ -419,24 +406,6 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
419
406
|
it 'includes addtional clause parameters for the field' do
|
420
407
|
expect(subject.dig(:json, :query, :bool, :must, 0, :edismax)).to include another: :parameter
|
421
408
|
end
|
422
|
-
|
423
|
-
context 'with an empty search' do
|
424
|
-
let(:subject_search_params) { { commit: "search", search_field: "subject", action: "index", controller: "catalog", rows: "10", q: nil } }
|
425
|
-
|
426
|
-
it 'does not add nil query value clauses to json query' do
|
427
|
-
expect(subject).not_to have_key :json
|
428
|
-
end
|
429
|
-
end
|
430
|
-
end
|
431
|
-
|
432
|
-
describe "overriding of qt parameter" do
|
433
|
-
let(:user_params) do
|
434
|
-
{ qt: 'overridden' }
|
435
|
-
end
|
436
|
-
|
437
|
-
it "returns the correct overriden parameter" do
|
438
|
-
expect(subject[:qt]).to eq "overridden"
|
439
|
-
end
|
440
409
|
end
|
441
410
|
|
442
411
|
describe "sorting" do
|
@@ -521,7 +490,7 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
521
490
|
describe 'the search field query_builder config' do
|
522
491
|
let(:blacklight_config) do
|
523
492
|
Blacklight::Configuration.new do |config|
|
524
|
-
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' }] })
|
525
494
|
end
|
526
495
|
end
|
527
496
|
|
@@ -613,6 +582,17 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
613
582
|
|
614
583
|
expect(solr_parameters[:fq]).to be_a_kind_of Array
|
615
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
|
616
596
|
end
|
617
597
|
|
618
598
|
describe "#add_solr_fields_to_query" do
|
@@ -764,7 +744,7 @@ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
|
|
764
744
|
end
|
765
745
|
|
766
746
|
it 'sets facets requested to facet_field argument' do
|
767
|
-
expect(solr_parameters[
|
747
|
+
expect(solr_parameters[:'facet.field']).to eq facet_field
|
768
748
|
end
|
769
749
|
|
770
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
|
@@ -37,9 +37,7 @@ RSpec.describe SolrDocument, api: true do
|
|
37
37
|
title_tesim: ['Good Omens'])
|
38
38
|
end
|
39
39
|
|
40
|
-
it
|
41
|
-
expect(inspect).to match(/_source: {"id" ?=> ?"123", "title_tesim" ?=> ?\["Good Omens"\]\}>$/)
|
42
|
-
end
|
40
|
+
it { is_expected.to end_with "_source: {\"id\"=>\"123\", \"title_tesim\"=>[\"Good Omens\"]}>" }
|
43
41
|
end
|
44
42
|
|
45
43
|
describe '.attribute' do
|
@@ -51,7 +49,6 @@ RSpec.describe SolrDocument, api: true do
|
|
51
49
|
attribute :author, :array, 'author_tesim', of: :string
|
52
50
|
attribute :first_author, :select, 'author_tesim', by: :min
|
53
51
|
attribute :date, :date, field: 'date_dtsi'
|
54
|
-
attribute :time, :time, field: 'date_dtsi'
|
55
52
|
attribute :whatever, :string, default: ->(*) { 'default_value' }
|
56
53
|
end
|
57
54
|
end
|
@@ -59,17 +56,14 @@ RSpec.describe SolrDocument, api: true do
|
|
59
56
|
doc_class.new(id: '123',
|
60
57
|
title_tesim: ['Good Omens'],
|
61
58
|
author_tesim: ['Neil Gaiman', 'Terry Pratchett'],
|
62
|
-
date_dtsi: '1990-01-
|
59
|
+
date_dtsi: '1990-01-01T00:00:00Z')
|
63
60
|
end
|
64
61
|
|
65
62
|
it "casts the attributes" do
|
66
63
|
expect(document.title).to eq 'Good Omens'
|
67
64
|
expect(document.author).to eq ['Neil Gaiman', 'Terry Pratchett']
|
68
65
|
expect(document.first_author).to eq 'Neil Gaiman'
|
69
|
-
expect(document.date).to
|
70
|
-
expect(document.date.to_s).to eq '1990-01-01'
|
71
|
-
expect(document.time).to be_a Time
|
72
|
-
expect(document.time.to_s).to eq '1990-01-01 17:23:13 UTC'
|
66
|
+
expect(document.date).to eq Date.new(1990)
|
73
67
|
expect(document.whatever).to eq 'default_value'
|
74
68
|
end
|
75
69
|
|
@@ -12,13 +12,12 @@ RSpec.describe Blacklight::DocumentPresenter do
|
|
12
12
|
|
13
13
|
before do
|
14
14
|
allow(request_context).to receive(:search_state).and_return(search_state)
|
15
|
-
allow(request_context).to receive(:action_name).and_return(:show)
|
16
15
|
end
|
17
16
|
|
18
17
|
describe '#fields_to_render' do
|
19
18
|
subject { presenter.fields_to_render.to_a }
|
20
19
|
|
21
|
-
let(:field_config) { Blacklight::Configuration::
|
20
|
+
let(:field_config) { Blacklight::Configuration::DisplayField.new(field: 'asdf') }
|
22
21
|
|
23
22
|
context 'when all of the fields have values' do
|
24
23
|
before do
|
@@ -31,7 +30,7 @@ RSpec.describe Blacklight::DocumentPresenter do
|
|
31
30
|
|
32
31
|
describe '#field_value' do
|
33
32
|
let(:field_presenter) { instance_double(Blacklight::FieldPresenter, render: 'xyz') }
|
34
|
-
let(:field_config) { Blacklight::Configuration::
|
33
|
+
let(:field_config) { Blacklight::Configuration::DisplayField.new }
|
35
34
|
let(:options) { { a: 1 } }
|
36
35
|
|
37
36
|
it 'calls the field presenter' do
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'spec_helper'
|
3
4
|
|
4
5
|
RSpec.describe Blacklight::FacetFieldPresenter, type: :presenter do
|
@@ -44,11 +45,11 @@ RSpec.describe Blacklight::FacetFieldPresenter, type: :presenter do
|
|
44
45
|
describe '#active?' do
|
45
46
|
it "checks if any value is selected for a given facet" do
|
46
47
|
search_state.params[:f] = ActiveSupport::HashWithIndifferentAccess.new(key: [1])
|
47
|
-
expect(presenter.active?).to
|
48
|
+
expect(presenter.active?).to be true
|
48
49
|
end
|
49
50
|
|
50
51
|
it "is false if no value for facet is selected" do
|
51
|
-
expect(presenter.active?).to
|
52
|
+
expect(presenter.active?).to be false
|
52
53
|
end
|
53
54
|
end
|
54
55
|
|
@@ -59,12 +60,12 @@ RSpec.describe Blacklight::FacetFieldPresenter, type: :presenter do
|
|
59
60
|
end
|
60
61
|
|
61
62
|
it 'is true' do
|
62
|
-
expect(presenter.in_modal?).to
|
63
|
+
expect(presenter.in_modal?).to be true
|
63
64
|
end
|
64
65
|
end
|
65
66
|
|
66
67
|
it 'is false' do
|
67
|
-
expect(presenter.in_modal?).to
|
68
|
+
expect(presenter.in_modal?).to be false
|
68
69
|
end
|
69
70
|
end
|
70
71
|
|
@@ -72,7 +73,9 @@ RSpec.describe Blacklight::FacetFieldPresenter, type: :presenter do
|
|
72
73
|
let(:paginator) { Blacklight::FacetPaginator.new([{}, {}], limit: 1) }
|
73
74
|
|
74
75
|
before do
|
75
|
-
|
76
|
+
# rubocop:disable RSpec/SubjectStub
|
77
|
+
allow(presenter).to receive(:paginator).and_return(paginator)
|
78
|
+
# rubocop:enable RSpec/SubjectStub
|
76
79
|
end
|
77
80
|
|
78
81
|
context 'with no additional data' do
|
@@ -97,13 +100,6 @@ RSpec.describe Blacklight::FacetFieldPresenter, type: :presenter do
|
|
97
100
|
end
|
98
101
|
end
|
99
102
|
|
100
|
-
describe '#html_id' do
|
101
|
-
it 'gets the id from a helper' do
|
102
|
-
allow(view_context).to receive(:html_id).with('key').and_return('facet-key')
|
103
|
-
expect(presenter.html_id).to eq 'facet-key'
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
103
|
describe '#paginator' do
|
108
104
|
subject(:paginator) { presenter.paginator }
|
109
105
|
|
@@ -112,4 +108,81 @@ RSpec.describe Blacklight::FacetFieldPresenter, type: :presenter do
|
|
112
108
|
expect(paginator.total_count).to eq 0
|
113
109
|
end
|
114
110
|
end
|
111
|
+
|
112
|
+
describe "#facet_limit" do
|
113
|
+
subject(:facet_limit) { presenter.facet_limit }
|
114
|
+
|
115
|
+
let(:search_state) { Blacklight::SearchState.new({}, blacklight_config, controller) }
|
116
|
+
let(:blacklight_config) { CatalogController.blacklight_config }
|
117
|
+
let(:facet_field) { blacklight_config.facet_fields['subject_ssim'] }
|
118
|
+
let(:display_facet) do
|
119
|
+
instance_double(Blacklight::Solr::Response::Facets::FacetField, items: items, limit: nil, sort: :index, offset: 0, prefix: nil)
|
120
|
+
end
|
121
|
+
# let(:facet_field) { Blacklight::Configuration::FacetField.new(key: 'key') }
|
122
|
+
# let(:display_facet) do
|
123
|
+
# instance_double(Blacklight::Solr::Response::Facets::FacetField, items: items, sort: :index, offset: 0, prefix: nil)
|
124
|
+
# end
|
125
|
+
|
126
|
+
it "returns specified value for facet_field specified" do
|
127
|
+
expect(facet_limit).to eq facet_field.limit
|
128
|
+
end
|
129
|
+
|
130
|
+
describe "for 'true' configured values" do
|
131
|
+
let(:blacklight_config) do
|
132
|
+
Blacklight::Configuration.new do |config|
|
133
|
+
config.add_facet_field "language_facet", limit: true
|
134
|
+
end
|
135
|
+
end
|
136
|
+
let(:facet_field) { blacklight_config.facet_fields['language_facet'] }
|
137
|
+
|
138
|
+
context 'when the limit in the response is nil' do
|
139
|
+
let(:display_facet) do
|
140
|
+
instance_double(Blacklight::Solr::Response::Facets::FacetField, items: items, limit: nil, sort: :index, offset: 0, prefix: nil)
|
141
|
+
end
|
142
|
+
|
143
|
+
it "uses the config setting" do
|
144
|
+
blacklight_config.facet_fields['language_facet'].limit = 10
|
145
|
+
expect(facet_limit).to eq 10
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
context 'when the limit in the response is provided' do
|
150
|
+
let(:display_facet) do
|
151
|
+
instance_double(Blacklight::Solr::Response::Facets::FacetField, items: items, limit: 16, sort: :index, offset: 0, prefix: nil)
|
152
|
+
end
|
153
|
+
|
154
|
+
it "gets the limit from the facet field in @response" do
|
155
|
+
expect(facet_limit).to eq 15
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
context 'when not in the display_facet' do
|
160
|
+
let(:display_facet) { nil }
|
161
|
+
|
162
|
+
it "defaults to 10" do
|
163
|
+
expect(facet_limit).to eq 10
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
context 'for facet fields with a key that is different from the field name' do
|
169
|
+
before do
|
170
|
+
allow(controller).to receive(:blacklight_config).and_return(blacklight_config)
|
171
|
+
end
|
172
|
+
|
173
|
+
let(:blacklight_config) do
|
174
|
+
Blacklight::Configuration.new do |config|
|
175
|
+
config.add_facet_field 'some_key', field: 'x', limit: true
|
176
|
+
end
|
177
|
+
end
|
178
|
+
let(:facet_field) { blacklight_config.facet_fields['some_key'] }
|
179
|
+
let(:display_facet) do
|
180
|
+
instance_double(Blacklight::Solr::Response::Facets::FacetField, items: items, limit: 16, sort: :index, offset: 0, prefix: nil)
|
181
|
+
end
|
182
|
+
|
183
|
+
it 'gets the limit from the facet field in the @response' do
|
184
|
+
expect(facet_limit).to eq 15
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
115
188
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'spec_helper'
|
3
4
|
|
4
5
|
RSpec.describe Blacklight::FacetItemPresenter, type: :presenter do
|
@@ -7,22 +8,22 @@ RSpec.describe Blacklight::FacetItemPresenter, type: :presenter do
|
|
7
8
|
end
|
8
9
|
|
9
10
|
let(:facet_item) { instance_double(Blacklight::Solr::Response::Facets::FacetItem) }
|
11
|
+
let(:filter_field) { instance_double(Blacklight::SearchState::FilterField, include?: true) }
|
10
12
|
let(:facet_config) { Blacklight::Configuration::FacetField.new(key: 'key') }
|
11
13
|
let(:facet_field) { instance_double(Blacklight::Solr::Response::Facets::FacetField) }
|
12
14
|
let(:view_context) { controller.view_context }
|
13
|
-
let(:search_state) { instance_double(Blacklight::SearchState) }
|
15
|
+
let(:search_state) { instance_double(Blacklight::SearchState, filter: filter_field) }
|
14
16
|
|
15
17
|
describe '#selected?' do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
18
|
+
subject { presenter.selected? }
|
19
|
+
|
20
|
+
it { is_expected.to be true }
|
20
21
|
end
|
21
22
|
|
22
23
|
describe '#label' do
|
23
|
-
it "is the facet value for an ordinary facet" do
|
24
|
+
it "is the stringified facet value for an ordinary facet" do
|
24
25
|
allow(facet_config).to receive_messages(query: nil, date: nil, helper_method: nil, url_method: nil)
|
25
|
-
expect(presenter.label).to eq facet_item
|
26
|
+
expect(presenter.label).to eq facet_item.to_s
|
26
27
|
end
|
27
28
|
|
28
29
|
it "allows you to pass in a :helper_method argument to the configuration" do
|
@@ -63,9 +64,7 @@ RSpec.describe Blacklight::FacetItemPresenter, type: :presenter do
|
|
63
64
|
end
|
64
65
|
|
65
66
|
describe '#href' do
|
66
|
-
|
67
|
-
allow(search_state).to receive(:has_facet?).and_return(false)
|
68
|
-
end
|
67
|
+
let(:filter_field) { instance_double(Blacklight::SearchState::FilterField, include?: false) }
|
69
68
|
|
70
69
|
it 'is the url to apply the facet' do
|
71
70
|
allow(search_state).to receive(:add_facet_params_and_redirect).with('key', facet_item).and_return(f: 'x')
|
@@ -87,11 +86,13 @@ RSpec.describe Blacklight::FacetItemPresenter, type: :presenter do
|
|
87
86
|
end
|
88
87
|
|
89
88
|
context 'with a selected facet' do
|
90
|
-
|
91
|
-
|
92
|
-
|
89
|
+
let(:filter_field) { instance_double(Blacklight::SearchState::FilterField, include?: true, remove: {}) }
|
90
|
+
|
91
|
+
before do
|
93
92
|
allow(view_context).to receive(:search_action_path).with({}).and_return('/catalog')
|
93
|
+
end
|
94
94
|
|
95
|
+
it 'is the url to remove the facet' do
|
95
96
|
expect(presenter.href).to eq '/catalog'
|
96
97
|
end
|
97
98
|
end
|
@@ -36,7 +36,6 @@ RSpec.describe Blacklight::FieldPresenter, api: true do
|
|
36
36
|
config.add_index_field 'solr_doc_accessor', accessor: true
|
37
37
|
config.add_index_field 'explicit_accessor', accessor: :solr_doc_accessor
|
38
38
|
config.add_index_field 'explicit_array_accessor', accessor: [:solr_doc_accessor, :some_method]
|
39
|
-
config.add_index_field 'explicit_values', values: ->(_config, _doc) { ['some-value'] }
|
40
39
|
config.add_index_field 'explicit_values_with_context', values: ->(_config, _doc, view_context) { [view_context.params[:x]] }
|
41
40
|
config.add_index_field 'alias', field: 'qwer'
|
42
41
|
config.add_index_field 'with_default', default: 'value'
|
@@ -162,15 +161,6 @@ RSpec.describe Blacklight::FieldPresenter, api: true do
|
|
162
161
|
end
|
163
162
|
end
|
164
163
|
|
165
|
-
context 'when the values lambda is provided' do
|
166
|
-
let(:field_name) { 'explicit_values' }
|
167
|
-
|
168
|
-
it 'calls the accessors on the return of the preceeding' do
|
169
|
-
allow(Deprecation).to receive(:warn)
|
170
|
-
expect(subject).to eq 'some-value'
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
164
|
context 'when the values lambda is provided and accepts the view contexts' do
|
175
165
|
let(:field_name) { 'explicit_values_with_context' }
|
176
166
|
|
@@ -241,10 +231,6 @@ RSpec.describe Blacklight::FieldPresenter, api: true do
|
|
241
231
|
|
242
232
|
let(:field_config) { double('field config', if: true, unless: false, except_operations: nil) }
|
243
233
|
|
244
|
-
before do
|
245
|
-
allow(presenter).to receive_messages(document_has_value?: true)
|
246
|
-
end
|
247
|
-
|
248
234
|
it { is_expected.to be true }
|
249
235
|
|
250
236
|
context 'when the view context says not to render the field' do
|
@@ -22,18 +22,15 @@ RSpec.describe Blacklight::IndexPresenter, api: true do
|
|
22
22
|
|
23
23
|
before do
|
24
24
|
allow(request_context).to receive(:search_state).and_return(search_state)
|
25
|
-
allow(request_context).to receive(:action_name).and_return(:index)
|
26
25
|
end
|
27
26
|
|
28
27
|
describe '#fields' do
|
29
|
-
let(:field) { instance_double(Blacklight::Configuration::Field) }
|
30
|
-
|
31
28
|
before do
|
32
|
-
|
29
|
+
config.add_index_field 'title'
|
33
30
|
end
|
34
31
|
|
35
32
|
it 'returns the list from the configs' do
|
36
|
-
expect(subject.send(:fields)).to eq
|
33
|
+
expect(subject.send(:fields).keys).to eq ['title']
|
37
34
|
end
|
38
35
|
end
|
39
36
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'spec_helper'
|
3
4
|
|
4
5
|
RSpec.describe Blacklight::LinkAlternatePresenter do
|
@@ -25,8 +26,8 @@ RSpec.describe Blacklight::LinkAlternatePresenter do
|
|
25
26
|
|
26
27
|
let(:expected_html) do
|
27
28
|
'<link rel="alternate" title="xml" type="application/xml" href="http://test.host/catalog/9999.xml" />' \
|
28
|
-
|
29
|
-
|
29
|
+
'<link rel="alternate" title="dc_xml" type="text/xml" href="http://test.host/catalog/9999.dc_xml" />' \
|
30
|
+
'<link rel="alternate" title="oai_dc_xml" type="text/xml" href="http://test.host/catalog/9999.oai_dc_xml" />'
|
30
31
|
end
|
31
32
|
|
32
33
|
it { is_expected.to be_equivalent_to expected_html }
|