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
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
RSpec.describe Blacklight::UrlHelperBehavior do
|
4
|
-
around { |test| Deprecation.silence(described_class) { test.call } }
|
5
|
-
|
6
4
|
let(:blacklight_config) do
|
7
5
|
Blacklight::Configuration.new.configure do |config|
|
8
6
|
config.index.title_field = 'title_tsim'
|
@@ -14,6 +12,7 @@ RSpec.describe Blacklight::UrlHelperBehavior do
|
|
14
12
|
|
15
13
|
before do
|
16
14
|
allow(controller).to receive(:controller_name).and_return('test')
|
15
|
+
allow(controller).to receive(:search_state_class).and_return(Blacklight::SearchState)
|
17
16
|
allow(helper).to receive(:search_action_path) do |*args|
|
18
17
|
search_catalog_url *args
|
19
18
|
end
|
@@ -23,54 +22,6 @@ RSpec.describe Blacklight::UrlHelperBehavior do
|
|
23
22
|
allow(helper).to receive(:search_session).and_return({})
|
24
23
|
end
|
25
24
|
|
26
|
-
describe "url_for_document" do
|
27
|
-
let(:controller_class) { ::CatalogController.new }
|
28
|
-
let(:doc) { SolrDocument.new }
|
29
|
-
|
30
|
-
before do
|
31
|
-
allow(helper).to receive_messages(controller: controller_class)
|
32
|
-
allow(helper).to receive_messages(controller_name: controller_class.controller_name)
|
33
|
-
allow(helper).to receive_messages(params: parameter_class.new)
|
34
|
-
end
|
35
|
-
|
36
|
-
it "is a polymorphic routing-ready object" do
|
37
|
-
expect(helper.url_for_document(doc)).to eq doc
|
38
|
-
end
|
39
|
-
|
40
|
-
it "allows for custom show routes" do
|
41
|
-
helper.blacklight_config.show.route = { controller: 'catalog' }
|
42
|
-
expect(helper.url_for_document(doc)).to eq(controller: 'catalog', action: :show, id: doc)
|
43
|
-
end
|
44
|
-
|
45
|
-
context "within bookmarks" do
|
46
|
-
let(:controller_class) { ::BookmarksController.new }
|
47
|
-
|
48
|
-
it "uses polymorphic routing" do
|
49
|
-
expect(helper.url_for_document(doc)).to eq doc
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context "within an alternative catalog controller" do
|
54
|
-
let(:controller_class) { ::AlternateController.new }
|
55
|
-
|
56
|
-
before do
|
57
|
-
helper.blacklight_config.show.route = { controller: :current }
|
58
|
-
allow(helper).to receive(:params).and_return(parameter_class.new(controller: 'alternate'))
|
59
|
-
end
|
60
|
-
|
61
|
-
it "supports the :current controller configuration" do
|
62
|
-
expect(helper.url_for_document(doc)).to eq(controller: 'alternate', action: :show, id: doc)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
it "is a polymorphic route if the solr document responds to #to_model with a non-SolrDocument" do
|
67
|
-
some_model = double
|
68
|
-
doc = SolrDocument.new
|
69
|
-
allow(doc).to receive_messages(to_model: some_model)
|
70
|
-
expect(helper.url_for_document(doc)).to eq doc
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
25
|
describe "link_back_to_catalog" do
|
75
26
|
let(:query_params) { { q: "query", f: "facets", controller: 'catalog' } }
|
76
27
|
let(:bookmarks_query_params) { { controller: 'bookmarks' } }
|
@@ -148,61 +99,6 @@ RSpec.describe Blacklight::UrlHelperBehavior do
|
|
148
99
|
end
|
149
100
|
end
|
150
101
|
|
151
|
-
describe "link_to_previous_document" do
|
152
|
-
context "when the argument is nil" do
|
153
|
-
subject { helper.link_to_previous_document(nil) }
|
154
|
-
|
155
|
-
it { is_expected.to eq '<span class="previous">« Previous</span>' }
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
describe "link_to_query" do
|
160
|
-
it "builds a link tag to catalog using query string (no other params)" do
|
161
|
-
query = "brilliant"
|
162
|
-
allow(helper).to receive_messages(params: parameter_class.new)
|
163
|
-
tag = helper.link_to_query(query)
|
164
|
-
expect(tag).to match /q=#{query}/
|
165
|
-
expect(tag).to match %r{>#{query}</a>}
|
166
|
-
end
|
167
|
-
|
168
|
-
it "builds a link tag to catalog using query string and other existing params" do
|
169
|
-
query = "wonderful"
|
170
|
-
allow(helper).to receive_messages(params: parameter_class.new(qt: "title_search", per_page: "50"))
|
171
|
-
tag = helper.link_to_query(query)
|
172
|
-
expect(tag).to match /qt=title_search/
|
173
|
-
expect(tag).to match /per_page=50/
|
174
|
-
end
|
175
|
-
|
176
|
-
it "ignores existing :page param" do
|
177
|
-
query = "yes"
|
178
|
-
allow(helper).to receive_messages(params: parameter_class.new(page: "2", qt: "author_search"))
|
179
|
-
tag = helper.link_to_query(query)
|
180
|
-
expect(tag).to match /qt=author_search/
|
181
|
-
expect(tag).not_to match /page/
|
182
|
-
end
|
183
|
-
|
184
|
-
it "is html_safe" do
|
185
|
-
query = "brilliant"
|
186
|
-
allow(helper).to receive_messages(params: parameter_class.new(page: "2", qt: "author_search"))
|
187
|
-
tag = helper.link_to_query(query)
|
188
|
-
expect(tag).to be_html_safe
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
|
-
describe "start_over_path" do
|
193
|
-
it 'is the catalog path with the current view type' do
|
194
|
-
allow(blacklight_config).to receive(:view).and_return(list: nil, abc: nil)
|
195
|
-
allow(helper).to receive_messages(blacklight_config: blacklight_config)
|
196
|
-
expect(helper.start_over_path(view: 'abc')).to eq search_catalog_url(view: 'abc')
|
197
|
-
end
|
198
|
-
|
199
|
-
it 'does not include the current view type if it is the default' do
|
200
|
-
allow(blacklight_config).to receive(:view).and_return(list: nil, asdf: nil)
|
201
|
-
allow(helper).to receive_messages(blacklight_config: blacklight_config)
|
202
|
-
expect(helper.start_over_path(view: 'list')).to eq search_catalog_url
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
102
|
describe "link_to_document" do
|
207
103
|
let(:title_tsim) { '654321' }
|
208
104
|
let(:id) { '123456' }
|
@@ -216,30 +112,22 @@ RSpec.describe Blacklight::UrlHelperBehavior do
|
|
216
112
|
end
|
217
113
|
|
218
114
|
it "consists of the document title wrapped in a <a>" do
|
219
|
-
|
220
|
-
expect(helper.link_to_document(document, :title_tsim)).to have_selector("a", text: '654321', count: 1)
|
115
|
+
expect(helper.link_to_document(document)).to have_selector("a", text: '654321', count: 1)
|
221
116
|
end
|
222
117
|
|
223
118
|
it "accepts and returns a string label" do
|
224
119
|
expect(helper.link_to_document(document, 'This is the title')).to have_selector("a", text: 'This is the title', count: 1)
|
225
120
|
end
|
226
121
|
|
227
|
-
it "accepts and returns a Proc" do
|
228
|
-
allow(Deprecation).to receive(:warn)
|
229
|
-
expect(helper.link_to_document(document, proc { |doc, _opts| doc[:id] + ": " + doc.first(:title_tsim) })).to have_selector("a", text: '123456: 654321', count: 1)
|
230
|
-
end
|
231
|
-
|
232
122
|
context 'when label is missing' do
|
233
123
|
let(:data) { { 'id' => id } }
|
234
124
|
|
235
125
|
it "returns id" do
|
236
|
-
|
237
|
-
expect(helper.link_to_document(document, :title_tsim)).to have_selector("a", text: '123456', count: 1)
|
126
|
+
expect(helper.link_to_document(document)).to have_selector("a", text: '123456', count: 1)
|
238
127
|
end
|
239
128
|
|
240
129
|
it "is html safe" do
|
241
|
-
|
242
|
-
expect(helper.link_to_document(document, :title_tsim)).to be_html_safe
|
130
|
+
expect(helper.link_to_document(document)).to be_html_safe
|
243
131
|
end
|
244
132
|
|
245
133
|
it "passes on the title attribute to the link_to_with_data method" do
|
@@ -253,15 +141,14 @@ RSpec.describe Blacklight::UrlHelperBehavior do
|
|
253
141
|
context "with an integer id" do
|
254
142
|
let(:id) { 123_456 }
|
255
143
|
|
256
|
-
it "
|
144
|
+
it "has a link" do
|
257
145
|
expect(helper.link_to_document(document)).to have_selector("a")
|
258
146
|
end
|
259
147
|
end
|
260
148
|
end
|
261
149
|
|
262
150
|
it "converts the counter parameter into a data- attribute" do
|
263
|
-
|
264
|
-
expect(helper.link_to_document(document, :title_tsim, counter: 5)).to include 'data-context-href="tracking url"'
|
151
|
+
expect(helper.link_to_document(document, 'foo', counter: 5)).to include 'data-context-href="tracking url"'
|
265
152
|
expect(helper.main_app).to have_received(:track_test_path).with(hash_including(id: have_attributes(id: '123456'), counter: 5))
|
266
153
|
end
|
267
154
|
|
@@ -279,19 +166,10 @@ RSpec.describe Blacklight::UrlHelperBehavior do
|
|
279
166
|
end
|
280
167
|
|
281
168
|
describe "link_to_previous_search" do
|
282
|
-
let(:params) { {} }
|
169
|
+
let(:params) { { q: 'search query' } }
|
283
170
|
|
284
171
|
it "links to the given search parameters" do
|
285
|
-
|
286
|
-
expect(helper.link_to_previous_search({})).to eq helper.link_to("link text", helper.search_action_path)
|
287
|
-
end
|
288
|
-
end
|
289
|
-
|
290
|
-
describe "#bookmarks_export_url" do
|
291
|
-
it "is the bookmark url with an encrypted user token" do
|
292
|
-
allow(helper).to receive_messages(encrypt_user_id: 'xyz', current_or_guest_user: double(id: 123))
|
293
|
-
url = helper.bookmarks_export_url(:html)
|
294
|
-
expect(url).to eq helper.bookmarks_url(format: :html, encrypted_user_id: 'xyz')
|
172
|
+
expect(helper.link_to_previous_search(params)).to have_link(href: helper.search_action_path(params)).and(have_text('search query'))
|
295
173
|
end
|
296
174
|
end
|
297
175
|
|
@@ -310,7 +188,7 @@ RSpec.describe Blacklight::UrlHelperBehavior do
|
|
310
188
|
|
311
189
|
it "uses the track_search_session configuration to determine whether to track the search session" do
|
312
190
|
blacklight_config.track_search_session = false
|
313
|
-
expect(helper.session_tracking_path(document, x: 1)).to
|
191
|
+
expect(helper.session_tracking_path(document, x: 1)).to be_nil
|
314
192
|
end
|
315
193
|
end
|
316
194
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
RSpec.describe BlacklightHelper do
|
3
4
|
before do
|
4
5
|
allow(helper).to receive(:current_or_guest_user).and_return(User.new)
|
@@ -16,7 +17,7 @@ RSpec.describe BlacklightHelper do
|
|
16
17
|
expect(application_name).to eq "Blacklight"
|
17
18
|
end
|
18
19
|
|
19
|
-
context "when the language is not english
|
20
|
+
context "when the language is not english" do
|
20
21
|
around do |example|
|
21
22
|
I18n.locale = :de
|
22
23
|
example.run
|
@@ -72,7 +73,7 @@ RSpec.describe BlacklightHelper do
|
|
72
73
|
end
|
73
74
|
|
74
75
|
before do
|
75
|
-
allow(helper).to receive(:
|
76
|
+
allow(helper).to receive(:document_presenter).and_return(presenter)
|
76
77
|
allow(helper).to receive(:blacklight_config).and_return(blacklight_config)
|
77
78
|
end
|
78
79
|
|
@@ -131,104 +132,6 @@ RSpec.describe BlacklightHelper do
|
|
131
132
|
expect(helper.render_index_doc_actions(document)).to be_blank
|
132
133
|
end
|
133
134
|
end
|
134
|
-
|
135
|
-
describe "render_show_doc_actions" do
|
136
|
-
it "renders partials" do
|
137
|
-
response = helper.render_show_doc_actions(document)
|
138
|
-
expect(response).to have_selector(".bookmark-toggle")
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
describe "#should_render_index_field?" do
|
144
|
-
before do
|
145
|
-
allow(helper).to receive_messages(should_render_field?: true, document_has_value?: true)
|
146
|
-
end
|
147
|
-
|
148
|
-
it "is true" do
|
149
|
-
expect(Deprecation).to receive(:warn)
|
150
|
-
expect(helper.should_render_index_field?(double, double)).to be true
|
151
|
-
end
|
152
|
-
|
153
|
-
it "is false if the document doesn't have a value for the field" do
|
154
|
-
expect(Deprecation).to receive(:warn)
|
155
|
-
allow(helper).to receive_messages(document_has_value?: false)
|
156
|
-
expect(helper.should_render_index_field?(double, double)).to be false
|
157
|
-
end
|
158
|
-
|
159
|
-
it "is false if the configuration has the field disabled" do
|
160
|
-
expect(Deprecation).to receive(:warn)
|
161
|
-
allow(helper).to receive_messages(should_render_field?: false)
|
162
|
-
expect(helper.should_render_index_field?(double, double)).to be false
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
describe "#should_render_show_field?" do
|
167
|
-
before do
|
168
|
-
allow(helper).to receive_messages(should_render_field?: true, document_has_value?: true)
|
169
|
-
end
|
170
|
-
|
171
|
-
it "is true" do
|
172
|
-
expect(Deprecation).to receive(:warn)
|
173
|
-
expect(helper.should_render_show_field?(double, double)).to be true
|
174
|
-
end
|
175
|
-
|
176
|
-
it "is false if the document doesn't have a value for the field" do
|
177
|
-
expect(Deprecation).to receive(:warn)
|
178
|
-
allow(helper).to receive_messages(document_has_value?: false)
|
179
|
-
expect(helper.should_render_show_field?(double, double)).to be false
|
180
|
-
end
|
181
|
-
|
182
|
-
it "is false if the configuration has the field disabled" do
|
183
|
-
expect(Deprecation).to receive(:warn)
|
184
|
-
allow(helper).to receive_messages(should_render_field?: false)
|
185
|
-
expect(helper.should_render_show_field?(double, double)).to be false
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
describe "#document_has_value?" do
|
190
|
-
let(:doc) { double(SolrDocument) }
|
191
|
-
|
192
|
-
before { allow(Deprecation).to receive(:warn) }
|
193
|
-
|
194
|
-
it "ifs the document has the field value" do
|
195
|
-
allow(doc).to receive(:has?).with('asdf').and_return(true)
|
196
|
-
field_config = double(field: 'asdf')
|
197
|
-
expect(helper.document_has_value?(doc, field_config)).to eq true
|
198
|
-
end
|
199
|
-
|
200
|
-
it "ifs the document has a highlight field value" do
|
201
|
-
allow(doc).to receive(:has?).with('asdf').and_return(false)
|
202
|
-
allow(doc).to receive(:has_highlight_field?).with('asdf').and_return(true)
|
203
|
-
field_config = double(field: 'asdf', highlight: true)
|
204
|
-
expect(helper.document_has_value?(doc, field_config)).to eq true
|
205
|
-
end
|
206
|
-
|
207
|
-
it "ifs the field has a model accessor" do
|
208
|
-
allow(doc).to receive(:has?).with('asdf').and_return(false)
|
209
|
-
allow(doc).to receive(:has_highlight_field?).with('asdf').and_return(false)
|
210
|
-
field_config = double(field: 'asdf', highlight: true, accessor: true)
|
211
|
-
expect(helper.document_has_value?(doc, field_config)).to eq true
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
|
-
describe '#render_index_field_label' do
|
216
|
-
around { |test| Deprecation.silence(Blacklight::BlacklightHelperBehavior) { test.call } }
|
217
|
-
|
218
|
-
let(:doc) { SolrDocument.new({}) }
|
219
|
-
|
220
|
-
before do
|
221
|
-
allow(helper).to receive_messages(document_index_view_type: :current_view)
|
222
|
-
end
|
223
|
-
|
224
|
-
it 'accepts an explicit field label' do
|
225
|
-
expect(helper.render_index_field_label(doc, field: 'xyz', label: 'some label')).to eq 'some label:'
|
226
|
-
end
|
227
|
-
|
228
|
-
it 'calculates the appropriate field label for a field' do
|
229
|
-
allow(helper).to receive(:blacklight_config).and_return(CatalogController.blacklight_config)
|
230
|
-
expect(helper.render_index_field_label(doc, field: 'xyz')).to eq 'Xyz:'
|
231
|
-
end
|
232
135
|
end
|
233
136
|
|
234
137
|
describe "render_grouped_response?" do
|
@@ -243,43 +146,6 @@ RSpec.describe BlacklightHelper do
|
|
243
146
|
end
|
244
147
|
end
|
245
148
|
|
246
|
-
describe "render_grouped_document_index" do
|
247
|
-
pending 'not implemented'
|
248
|
-
end
|
249
|
-
|
250
|
-
describe "should_show_spellcheck_suggestions?" do
|
251
|
-
around { |test| Deprecation.silence(Blacklight::BlacklightHelperBehavior) { test.call } }
|
252
|
-
|
253
|
-
before do
|
254
|
-
allow(helper).to receive_messages spell_check_max: 5
|
255
|
-
end
|
256
|
-
|
257
|
-
it "does not show suggestions if there are enough results" do
|
258
|
-
response = double(total: 10)
|
259
|
-
expect(helper.should_show_spellcheck_suggestions?(response)).to be false
|
260
|
-
end
|
261
|
-
|
262
|
-
it "only shows suggestions if there are very few results" do
|
263
|
-
response = double(total: 4, spelling: double(words: [1]))
|
264
|
-
expect(helper.should_show_spellcheck_suggestions?(response)).to be true
|
265
|
-
end
|
266
|
-
|
267
|
-
it "only shows suggestions from collations" do
|
268
|
-
response = double(total: 4, spelling: double(words: [], collation: { blah: 1 }))
|
269
|
-
expect(helper.should_show_spellcheck_suggestions?(response)).to be true
|
270
|
-
end
|
271
|
-
|
272
|
-
it "shows suggestions only if there are spelling suggestions available" do
|
273
|
-
response = double(total: 4, spelling: double(words: [], collation: nil))
|
274
|
-
expect(helper.should_show_spellcheck_suggestions?(response)).to be false
|
275
|
-
end
|
276
|
-
|
277
|
-
it "does not show suggestions if spelling is not available" do
|
278
|
-
response = double(total: 4, spelling: nil)
|
279
|
-
expect(helper.should_show_spellcheck_suggestions?(response)).to be false
|
280
|
-
end
|
281
|
-
end
|
282
|
-
|
283
149
|
describe "#opensearch_description_tag" do
|
284
150
|
subject { helper.opensearch_description_tag 'title', 'href' }
|
285
151
|
|
@@ -331,17 +197,12 @@ RSpec.describe BlacklightHelper do
|
|
331
197
|
blacklight_config.view.gallery(template: '/my/partial')
|
332
198
|
end
|
333
199
|
|
200
|
+
def stub_template(hash)
|
201
|
+
view.view_paths.unshift(ActionView::FixtureResolver.new(hash))
|
202
|
+
end
|
203
|
+
|
334
204
|
it 'renders that template' do
|
335
|
-
|
336
|
-
# we already were, and need a Rails 7.1+ safe alternate too
|
337
|
-
# https://github.com/rspec/rspec-rails/commit/4d65bea0619955acb15023b9c3f57a3a53183da8
|
338
|
-
# https://github.com/rspec/rspec-rails/issues/2696
|
339
|
-
replace_hash = { 'my/_partial.html.erb' => 'some content' }
|
340
|
-
if ::Rails.version.to_f >= 7.1
|
341
|
-
controller.prepend_view_path(RSpec::Rails::ViewExampleGroup::StubResolverCache.resolver_for(replace_hash))
|
342
|
-
else
|
343
|
-
view.view_paths.unshift(ActionView::FixtureResolver.new(replace_hash))
|
344
|
-
end
|
205
|
+
stub_template 'my/_partial.html.erb' => 'some content'
|
345
206
|
|
346
207
|
response = helper.render_document_index_with_view :gallery, [obj1, obj1]
|
347
208
|
|
@@ -393,109 +254,4 @@ RSpec.describe BlacklightHelper do
|
|
393
254
|
end
|
394
255
|
end
|
395
256
|
end
|
396
|
-
|
397
|
-
context "related classes" do
|
398
|
-
let(:presenter_class) { double }
|
399
|
-
let(:blacklight_config) { Blacklight::Configuration.new }
|
400
|
-
|
401
|
-
around { |test| Deprecation.silence(Blacklight::BlacklightHelperBehavior) { test.call } }
|
402
|
-
|
403
|
-
before do
|
404
|
-
allow(helper).to receive(:blacklight_config).and_return(blacklight_config)
|
405
|
-
end
|
406
|
-
|
407
|
-
describe "#index_presenter_class" do
|
408
|
-
it "uses the value defined in the blacklight configuration" do
|
409
|
-
blacklight_config.index.document_presenter_class = presenter_class
|
410
|
-
expect(helper.index_presenter_class(nil)).to eq presenter_class
|
411
|
-
end
|
412
|
-
|
413
|
-
it "defaults to Blacklight::IndexPresenter" do
|
414
|
-
expect(helper.index_presenter_class(nil)).to eq Blacklight::IndexPresenter
|
415
|
-
end
|
416
|
-
end
|
417
|
-
|
418
|
-
describe "#show_presenter_class" do
|
419
|
-
it "uses the value defined in the blacklight configuration" do
|
420
|
-
blacklight_config.show.document_presenter_class = presenter_class
|
421
|
-
expect(helper.show_presenter_class(nil)).to eq presenter_class
|
422
|
-
end
|
423
|
-
|
424
|
-
it "defaults to Blacklight::DocumentPresenter" do
|
425
|
-
expect(helper.show_presenter_class(nil)).to eq Blacklight::ShowPresenter
|
426
|
-
end
|
427
|
-
end
|
428
|
-
end
|
429
|
-
|
430
|
-
describe "#render_document_heading" do
|
431
|
-
around { |test| Deprecation.silence(Blacklight::BlacklightHelperBehavior) { test.call } }
|
432
|
-
|
433
|
-
let(:document) { double }
|
434
|
-
|
435
|
-
before do
|
436
|
-
allow(helper).to receive(:presenter).and_return(double(heading: "Heading"))
|
437
|
-
end
|
438
|
-
|
439
|
-
it "accepts no arguments and render the document heading" do
|
440
|
-
expect(helper.render_document_heading).to have_selector "h4", text: "Heading"
|
441
|
-
end
|
442
|
-
|
443
|
-
it "accepts the tag name as an option" do
|
444
|
-
expect(helper.render_document_heading(tag: "h1")).to have_selector "h1", text: "Heading"
|
445
|
-
end
|
446
|
-
|
447
|
-
it "accepts an explicit document argument" do
|
448
|
-
allow(helper).to receive(:presenter).with(document).and_return(double(heading: "Document Heading"))
|
449
|
-
expect(helper.render_document_heading(document)).to have_selector "h4", text: "Document Heading"
|
450
|
-
end
|
451
|
-
|
452
|
-
it "accepts the document with a tag option" do
|
453
|
-
allow(helper).to receive(:presenter).with(document).and_return(double(heading: "Document Heading"))
|
454
|
-
expect(helper.render_document_heading(document, tag: "h3")).to have_selector "h3", text: "Document Heading"
|
455
|
-
end
|
456
|
-
end
|
457
|
-
|
458
|
-
describe "#presenter" do
|
459
|
-
around { |test| Deprecation.silence(Blacklight::BlacklightHelperBehavior) { test.call } }
|
460
|
-
|
461
|
-
let(:document) { double }
|
462
|
-
|
463
|
-
before do
|
464
|
-
allow(helper).to receive(:index_presenter).and_return(:index_presenter)
|
465
|
-
allow(helper).to receive(:show_presenter).and_return(:show_presenter)
|
466
|
-
allow(helper).to receive(:action_name).and_return(action_name)
|
467
|
-
end
|
468
|
-
|
469
|
-
context "action is show" do
|
470
|
-
let(:action_name) { "show" }
|
471
|
-
|
472
|
-
it "uses the show presenter" do
|
473
|
-
expect(helper.presenter(document)).to eq(:show_presenter)
|
474
|
-
end
|
475
|
-
end
|
476
|
-
|
477
|
-
context "action is citation" do
|
478
|
-
let(:action_name) { "citation" }
|
479
|
-
|
480
|
-
it "uses the show presenter" do
|
481
|
-
expect(helper.presenter(document)).to eq(:show_presenter)
|
482
|
-
end
|
483
|
-
end
|
484
|
-
|
485
|
-
context "action is index" do
|
486
|
-
let(:action_name) { "index" }
|
487
|
-
|
488
|
-
it "uses the index presenter" do
|
489
|
-
expect(helper.presenter(document)).to eq(:index_presenter)
|
490
|
-
end
|
491
|
-
end
|
492
|
-
|
493
|
-
context "action is foo" do
|
494
|
-
let(:action_name) { "foo" }
|
495
|
-
|
496
|
-
it "uses the index presenter (by default)" do
|
497
|
-
expect(helper.presenter(document)).to eq(:index_presenter)
|
498
|
-
end
|
499
|
-
end
|
500
|
-
end
|
501
257
|
end
|
@@ -164,111 +164,6 @@ RSpec.describe CatalogHelper do
|
|
164
164
|
end
|
165
165
|
end
|
166
166
|
|
167
|
-
describe "should_autofocus_on_search_box?" do
|
168
|
-
before do
|
169
|
-
allow(Deprecation).to receive(:warn)
|
170
|
-
end
|
171
|
-
|
172
|
-
it "is focused if we're on a catalog-like index page without query or facet parameters" do
|
173
|
-
allow(helper).to receive_messages(controller: CatalogController.new, action_name: "index", has_search_parameters?: false)
|
174
|
-
expect(helper.should_autofocus_on_search_box?).to be true
|
175
|
-
end
|
176
|
-
|
177
|
-
it "does not be focused if we're not on a catalog controller" do
|
178
|
-
allow(helper).to receive_messages(controller: ApplicationController.new)
|
179
|
-
expect(helper.should_autofocus_on_search_box?).to be false
|
180
|
-
end
|
181
|
-
|
182
|
-
it "does not be focused if we're not on a catalog controller index" do
|
183
|
-
allow(helper).to receive_messages(controller: CatalogController.new, action_name: "show")
|
184
|
-
expect(helper.should_autofocus_on_search_box?).to be false
|
185
|
-
end
|
186
|
-
|
187
|
-
it "does not be focused if a search parameters are provided" do
|
188
|
-
allow(helper).to receive_messages(controller: CatalogController.new, action_name: "index", has_search_parameters?: true)
|
189
|
-
expect(helper.should_autofocus_on_search_box?).to be false
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
describe "has_thumbnail?" do
|
194
|
-
before do
|
195
|
-
allow(Deprecation).to receive(:warn)
|
196
|
-
end
|
197
|
-
|
198
|
-
let(:document) { SolrDocument.new(data) }
|
199
|
-
let(:data) { {} }
|
200
|
-
|
201
|
-
it "has a thumbnail if a thumbnail_method is configured" do
|
202
|
-
allow(helper).to receive_messages(blacklight_config: Blacklight::Configuration.new(index: Blacklight::OpenStructWithHashAccess.new(thumbnail_method: :xyz, document_presenter_class: Blacklight::IndexPresenter)))
|
203
|
-
expect(helper.has_thumbnail?(document)).to be true
|
204
|
-
end
|
205
|
-
|
206
|
-
context "if a thumbnail_field is configured and it exists in the document" do
|
207
|
-
let(:data) { { xyz: 'abc' } }
|
208
|
-
|
209
|
-
it "has a thumbnail" do
|
210
|
-
allow(helper).to receive_messages(blacklight_config: Blacklight::Configuration.new(index: Blacklight::OpenStructWithHashAccess.new(thumbnail_field: :xyz, document_presenter_class: Blacklight::IndexPresenter)))
|
211
|
-
expect(helper.has_thumbnail?(document)).to be true
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
|
-
it "does not have a thumbnail if the thumbnail_field is missing from the document" do
|
216
|
-
allow(helper).to receive_messages(blacklight_config: Blacklight::Configuration.new(index: Blacklight::OpenStructWithHashAccess.new(thumbnail_field: :xyz, document_presenter_class: Blacklight::IndexPresenter)))
|
217
|
-
allow(document).to receive_messages(has?: false)
|
218
|
-
expect(helper.has_thumbnail?(document)).to be false
|
219
|
-
end
|
220
|
-
|
221
|
-
it "does not have a thumbnail if none of the fields are configured" do
|
222
|
-
allow(helper).to receive_messages(blacklight_config: Blacklight::Configuration.new(index: Blacklight::OpenStructWithHashAccess.new(document_presenter_class: Blacklight::IndexPresenter)))
|
223
|
-
expect(helper).not_to have_thumbnail(document)
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
describe "render_thumbnail_tag" do
|
228
|
-
let(:index_presenter) do
|
229
|
-
instance_double(Blacklight::IndexPresenter, thumbnail: thumbnail_presenter)
|
230
|
-
end
|
231
|
-
let(:thumbnail_presenter) { instance_double(Blacklight::ThumbnailPresenter) }
|
232
|
-
|
233
|
-
before do
|
234
|
-
allow(Deprecation).to receive(:warn)
|
235
|
-
allow(helper).to receive(:index_presenter).with(document).and_return(index_presenter)
|
236
|
-
end
|
237
|
-
|
238
|
-
let(:document) { instance_double(SolrDocument) }
|
239
|
-
|
240
|
-
it "calls thumbnail presenter with default values" do
|
241
|
-
expect(thumbnail_presenter).to receive(:thumbnail_tag).with({}, {})
|
242
|
-
helper.render_thumbnail_tag document
|
243
|
-
end
|
244
|
-
|
245
|
-
it "calls thumbnail presenter with provided values" do
|
246
|
-
expect(thumbnail_presenter).to receive(:thumbnail_tag).with({}, { suppress_link: true })
|
247
|
-
helper.render_thumbnail_tag document, {}, suppress_link: true
|
248
|
-
end
|
249
|
-
end
|
250
|
-
|
251
|
-
describe "thumbnail_url" do
|
252
|
-
before do
|
253
|
-
allow(Deprecation).to receive(:warn)
|
254
|
-
end
|
255
|
-
|
256
|
-
it "pulls the configured thumbnail field out of the document" do
|
257
|
-
allow(helper).to receive_messages(blacklight_config: Blacklight::Configuration.new(index: Blacklight::OpenStructWithHashAccess.new(thumbnail_field: :xyz)))
|
258
|
-
document = instance_double(SolrDocument)
|
259
|
-
allow(document).to receive(:has?).with(:xyz).and_return(true)
|
260
|
-
allow(document).to receive(:first).with(:xyz).and_return("asdf")
|
261
|
-
expect(helper.thumbnail_url(document)).to eq("asdf")
|
262
|
-
end
|
263
|
-
|
264
|
-
it "returns nil if the thumbnail field doesn't exist" do
|
265
|
-
allow(helper).to receive_messages(blacklight_config: Blacklight::Configuration.new(index: Blacklight::OpenStructWithHashAccess.new(thumbnail_field: :xyz)))
|
266
|
-
document = instance_double(SolrDocument)
|
267
|
-
allow(document).to receive(:has?).with(:xyz).and_return(false)
|
268
|
-
expect(helper.thumbnail_url(document)).to be_nil
|
269
|
-
end
|
270
|
-
end
|
271
|
-
|
272
167
|
describe "document_counter_with_offset" do
|
273
168
|
it "renders the document index with the appropriate offset" do
|
274
169
|
assign(:response, instance_double(Blacklight::Solr::Response, start: 0, grouped?: false))
|
@@ -299,32 +194,32 @@ RSpec.describe CatalogHelper do
|
|
299
194
|
|
300
195
|
it "pulls data out of a document's field" do
|
301
196
|
blacklight_config.index.display_type_field = :type
|
302
|
-
doc = { type: 'book' }
|
197
|
+
doc = { type: 'book' }.with_indifferent_access
|
303
198
|
expect(helper.render_document_class(doc)).to eq "blacklight-book"
|
304
199
|
end
|
305
200
|
|
306
201
|
it "supports multivalued fields" do
|
307
202
|
blacklight_config.index.display_type_field = :type
|
308
|
-
doc = { type: %w[book mss] }
|
203
|
+
doc = { type: %w[book mss] }.with_indifferent_access
|
309
204
|
expect(helper.render_document_class(doc)).to eq "blacklight-book blacklight-mss"
|
310
205
|
end
|
311
206
|
|
312
207
|
it "supports empty fields" do
|
313
208
|
blacklight_config.index.display_type_field = :type
|
314
|
-
doc = { type: [] }
|
209
|
+
doc = { type: [] }.with_indifferent_access
|
315
210
|
expect(helper.render_document_class(doc)).to be_blank
|
316
211
|
end
|
317
212
|
|
318
213
|
it "supports missing fields" do
|
319
214
|
blacklight_config.index.display_type_field = :type
|
320
|
-
doc = {}
|
215
|
+
doc = {}.with_indifferent_access
|
321
216
|
expect(helper.render_document_class(doc)).to be_blank
|
322
217
|
end
|
323
218
|
|
324
219
|
it "supports view-specific field configuration" do
|
325
220
|
allow(helper).to receive(:document_index_view_type).and_return(:some_view_type)
|
326
221
|
blacklight_config.view.some_view_type(display_type_field: :other_type)
|
327
|
-
doc = { other_type: "document" }
|
222
|
+
doc = { other_type: "document" }.with_indifferent_access
|
328
223
|
expect(helper.render_document_class(doc)).to eq "blacklight-document"
|
329
224
|
end
|
330
225
|
end
|
@@ -338,11 +233,11 @@ RSpec.describe CatalogHelper do
|
|
338
233
|
end
|
339
234
|
|
340
235
|
it "is bookmarked if the document is in the bookmarks" do
|
341
|
-
expect(helper.bookmarked?(bookmarked_document)).to
|
236
|
+
expect(helper.bookmarked?(bookmarked_document)).to be true
|
342
237
|
end
|
343
238
|
|
344
239
|
it "does not be bookmarked if the document is not listed in the bookmarks" do
|
345
|
-
expect(helper.bookmarked?(SolrDocument.new(id: 'b'))).to
|
240
|
+
expect(helper.bookmarked?(SolrDocument.new(id: 'b'))).to be false
|
346
241
|
end
|
347
242
|
end
|
348
243
|
|
@@ -388,11 +283,5 @@ RSpec.describe CatalogHelper do
|
|
388
283
|
|
389
284
|
it { is_expected.to eq "foobar / Format: Book" }
|
390
285
|
end
|
391
|
-
|
392
|
-
context 'when the f param is not an array' do
|
393
|
-
let(:params) { ActionController::Parameters.new(q: 'foobar', f: { format: 'Book' }) }
|
394
|
-
|
395
|
-
it { is_expected.to eq "foobar / Format: Book" }
|
396
|
-
end
|
397
286
|
end
|
398
287
|
end
|