blacklight 7.33.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.env +3 -2
- data/.github/workflows/ruby.yml +38 -107
- data/.gitignore +1 -0
- data/.rubocop.yml +243 -2
- data/.rubocop_todo.yml +216 -270
- data/Gemfile +7 -6
- data/README.md +12 -4
- data/Rakefile +18 -0
- data/VERSION +1 -1
- data/app/assets/config/blacklight/manifest.js +3 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js +376 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -0
- data/app/assets/javascripts/blacklight/blacklight.js +332 -485
- data/app/assets/javascripts/blacklight/blacklight.js.map +1 -0
- data/app/assets/stylesheets/blacklight/_autocomplete.scss +25 -0
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -1
- data/app/assets/stylesheets/blacklight/_bookmark.scss +16 -0
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +8 -0
- data/app/assets/stylesheets/blacklight/_facets.scss +104 -49
- data/app/assets/stylesheets/blacklight/_header.scss +0 -15
- data/app/assets/stylesheets/blacklight/_icons.scss +0 -14
- data/app/assets/stylesheets/blacklight/_mixins.scss +20 -0
- data/app/assets/stylesheets/blacklight/_modal.scss +8 -2
- data/app/assets/stylesheets/blacklight/_search_form.scss +30 -3
- data/app/assets/stylesheets/blacklight/_search_history.scss +10 -1
- data/app/assets/stylesheets/blacklight/_search_results.scss +6 -2
- data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +4 -1
- data/app/builders/blacklight/action_builder.rb +18 -9
- data/app/components/blacklight/advanced_search_form_component.html.erb +1 -1
- data/app/components/blacklight/advanced_search_form_component.rb +7 -9
- data/app/components/blacklight/constraints_component.rb +27 -37
- data/app/components/blacklight/document/action_component.html.erb +2 -9
- data/app/components/blacklight/document/action_component.rb +26 -8
- data/app/components/blacklight/document/actions_component.rb +2 -2
- data/app/components/blacklight/document/bookmark_component.html.erb +9 -0
- data/app/components/blacklight/document/bookmark_component.rb +4 -2
- data/app/components/blacklight/document/citation_component.rb +5 -3
- data/app/components/blacklight/document/group_component.rb +7 -3
- data/app/components/blacklight/document/show_tools_component.html.erb +12 -0
- data/app/components/blacklight/document/show_tools_component.rb +23 -0
- data/app/components/blacklight/document/sidebar_component.html.erb +2 -0
- data/app/components/blacklight/document/sidebar_component.rb +16 -0
- data/app/components/blacklight/document/thumbnail_component.html.erb +2 -7
- data/app/components/blacklight/document/thumbnail_component.rb +1 -9
- data/app/components/blacklight/document_component.html.erb +4 -0
- data/app/components/blacklight/document_component.rb +54 -42
- data/app/components/blacklight/document_metadata_component.html.erb +4 -2
- data/app/components/blacklight/document_metadata_component.rb +11 -6
- data/app/components/blacklight/document_title_component.rb +4 -1
- data/app/components/blacklight/facet_component.rb +1 -1
- data/app/components/blacklight/facet_field_checkboxes_component.html.erb +3 -3
- data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
- data/app/components/blacklight/facet_field_component.html.erb +5 -5
- data/app/components/blacklight/facet_field_component.rb +9 -2
- data/app/components/blacklight/facet_field_list_component.html.erb +3 -3
- data/app/components/blacklight/facet_field_list_component.rb +37 -5
- data/app/components/blacklight/facet_field_no_layout_component.rb +0 -2
- data/app/components/blacklight/facet_item_component.rb +1 -43
- data/app/components/blacklight/facet_item_pivot_component.rb +21 -23
- data/app/components/blacklight/header_component.html.erb +2 -0
- data/app/components/blacklight/header_component.rb +26 -0
- data/app/components/blacklight/hidden_search_state_component.rb +1 -2
- data/app/components/blacklight/icons/legacy_icon_component.rb +30 -0
- data/app/components/blacklight/icons/list_component.rb +16 -0
- data/app/components/blacklight/icons/search_component.rb +16 -0
- data/app/components/blacklight/metadata_field_component.html.erb +2 -2
- data/app/components/blacklight/metadata_field_component.rb +24 -8
- data/app/components/blacklight/metadata_field_layout_component.rb +7 -22
- data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +17 -0
- data/app/components/blacklight/response/facet_group_component.html.erb +5 -6
- data/app/components/blacklight/response/facet_group_component.rb +29 -8
- data/app/components/blacklight/response/sort_component.rb +2 -2
- data/app/components/blacklight/response/spellcheck_component.rb +18 -7
- data/app/components/blacklight/response/view_type_button_component.rb +3 -7
- data/app/components/blacklight/response/view_type_component.rb +4 -6
- data/app/components/blacklight/search/sidebar_component.html.erb +8 -0
- data/app/components/blacklight/search/sidebar_component.rb +17 -0
- data/app/components/blacklight/search_bar_component.html.erb +20 -15
- data/app/components/blacklight/search_bar_component.rb +2 -16
- data/app/components/blacklight/search_button_component.rb +3 -3
- data/app/components/blacklight/search_context/server_applied_params_component.html.erb +4 -0
- data/app/components/blacklight/search_context/server_applied_params_component.rb +13 -0
- data/app/components/blacklight/search_context/server_item_pagination_component.rb +71 -0
- data/app/components/blacklight/search_header_component.html.erb +2 -0
- data/app/components/blacklight/search_header_component.rb +6 -0
- data/app/components/blacklight/search_navbar_component.html.erb +5 -0
- data/app/components/blacklight/search_navbar_component.rb +34 -0
- data/app/components/blacklight/start_over_button_component.rb +5 -3
- data/app/components/blacklight/system/dropdown_component.rb +3 -3
- data/app/components/blacklight/system/flash_message_component.html.erb +3 -1
- data/app/components/blacklight/system/flash_message_component.rb +12 -3
- data/app/components/blacklight/system/modal_component.html.erb +1 -1
- data/app/components/blacklight/system/modal_component.rb +1 -3
- data/app/components/blacklight/top_navbar_component.html.erb +12 -0
- data/app/components/blacklight/top_navbar_component.rb +17 -0
- data/app/controllers/bookmarks_controller.rb +1 -0
- data/app/controllers/catalog_controller.rb +1 -0
- data/app/controllers/concerns/blacklight/bookmarks.rb +11 -6
- data/app/controllers/concerns/blacklight/catalog.rb +21 -72
- data/app/controllers/concerns/blacklight/controller.rb +6 -43
- data/app/controllers/concerns/blacklight/search_context.rb +71 -13
- data/app/controllers/concerns/blacklight/search_history.rb +2 -0
- data/app/controllers/concerns/blacklight/searchable.rb +12 -1
- data/app/controllers/concerns/blacklight/token_based_user.rb +1 -0
- data/app/controllers/search_history_controller.rb +1 -0
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +1 -400
- data/app/helpers/blacklight/catalog_helper_behavior.rb +40 -182
- data/app/helpers/blacklight/component_helper_behavior.rb +1 -63
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -117
- data/app/helpers/blacklight/document_helper_behavior.rb +76 -0
- data/app/helpers/blacklight/facets_helper_behavior.rb +4 -321
- data/app/helpers/blacklight/icon_helper_behavior.rb +5 -4
- data/app/helpers/blacklight/layout_helper_behavior.rb +60 -0
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +12 -30
- data/app/helpers/blacklight/url_helper_behavior.rb +21 -97
- data/app/helpers/blacklight_helper.rb +1 -0
- data/app/helpers/catalog_helper.rb +1 -0
- data/app/javascript/blacklight/bookmark_toggle.js +9 -22
- data/app/javascript/blacklight/button_focus.js +9 -7
- data/app/javascript/blacklight/checkbox_submit.js +68 -122
- data/app/javascript/blacklight/core.js +6 -5
- data/app/javascript/blacklight/index.js +14 -0
- data/app/javascript/blacklight/modal.js +100 -165
- data/app/javascript/blacklight/modalForm.js +60 -0
- data/app/javascript/blacklight/search_context.js +13 -29
- data/app/models/blacklight/facet_paginator.rb +3 -2
- data/app/models/blacklight/icon.rb +4 -2
- data/app/models/bookmark.rb +0 -2
- data/app/models/concerns/blacklight/configurable.rb +5 -4
- data/app/models/concerns/blacklight/document/active_model_shim.rb +1 -0
- data/app/models/concerns/blacklight/document/attributes.rb +50 -0
- data/app/models/concerns/blacklight/document/cache_key.rb +1 -0
- data/app/models/concerns/blacklight/document/dublin_core.rb +2 -1
- data/app/models/concerns/blacklight/document/export.rb +2 -1
- data/app/models/concerns/blacklight/document/extensions.rb +1 -0
- data/app/models/concerns/blacklight/document/schema_org.rb +1 -0
- data/app/models/concerns/blacklight/document/semantic_fields.rb +1 -0
- data/app/models/concerns/blacklight/document.rb +23 -20
- data/app/models/concerns/blacklight/suggest/response.rb +1 -0
- data/app/models/concerns/blacklight/user.rb +17 -8
- data/app/models/record_mailer.rb +23 -18
- data/app/models/search.rb +0 -1
- data/app/models/solr_document.rb +1 -0
- data/app/presenters/blacklight/clause_presenter.rb +1 -1
- data/app/presenters/blacklight/document_presenter.rb +24 -30
- data/app/presenters/blacklight/facet_field_presenter.rb +39 -14
- data/app/presenters/blacklight/facet_grouped_item_presenter.rb +1 -5
- data/app/presenters/blacklight/facet_item_pivot_presenter.rb +60 -0
- data/app/presenters/blacklight/facet_item_presenter.rb +3 -9
- data/app/presenters/blacklight/field_presenter.rb +1 -0
- data/app/presenters/blacklight/index_presenter.rb +2 -40
- data/app/presenters/blacklight/json_presenter.rb +7 -5
- data/app/presenters/blacklight/rendering/abstract_step.rb +4 -0
- data/app/presenters/blacklight/rendering/join.rb +7 -1
- data/app/presenters/blacklight/rendering/link_to_facet.rb +3 -6
- data/app/presenters/blacklight/rendering/microdata.rb +1 -1
- data/app/presenters/blacklight/show_presenter.rb +1 -9
- data/app/presenters/blacklight/thumbnail_presenter.rb +1 -1
- data/app/services/blacklight/bookmarks_search_builder.rb +22 -0
- data/app/services/blacklight/field_retriever.rb +1 -8
- data/app/services/blacklight/search_service.rb +9 -7
- data/app/values/blacklight/types.rb +95 -11
- data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +8 -1
- data/app/views/bookmarks/_tools.html.erb +7 -12
- data/app/views/catalog/_advanced_search_form.html.erb +0 -1
- data/app/views/catalog/_bookmark_control.html.erb +1 -1
- data/app/views/catalog/_constraints.html.erb +1 -14
- data/app/views/catalog/_document.atom.builder +12 -14
- data/app/views/catalog/_document.html.erb +3 -6
- data/app/views/catalog/_document.rss.builder +2 -4
- data/app/views/catalog/_document_list.html.erb +2 -1
- data/app/views/catalog/_facet_layout.html.erb +2 -2
- data/app/views/catalog/_facets.html.erb +5 -4
- data/app/views/catalog/_home_text.html.erb +2 -14
- data/app/views/catalog/_search_form.html.erb +3 -3
- data/app/views/catalog/_search_header.html.erb +1 -2
- data/app/views/catalog/_search_results.html.erb +2 -2
- data/app/views/catalog/_search_sidebar.html.erb +5 -1
- data/app/views/catalog/_show_main_content.html.erb +8 -19
- data/app/views/catalog/_show_sidebar.html.erb +2 -2
- data/app/views/catalog/_show_tools.html.erb +1 -19
- data/app/views/catalog/_view_type_group.html.erb +1 -1
- data/app/views/catalog/email_success.html.erb +5 -6
- data/app/views/catalog/facet.html.erb +7 -5
- data/app/views/catalog/index.atom.builder +12 -14
- data/app/views/catalog/index.html.erb +7 -1
- data/app/views/catalog/index.json.jbuilder +19 -19
- data/app/views/catalog/index.rss.builder +1 -1
- data/app/views/catalog/opensearch.xml.builder +1 -1
- data/app/views/catalog/show.html.erb +1 -6
- data/app/views/catalog/sms_success.html.erb +5 -6
- data/app/views/catalog/suggest.html.erb +3 -0
- data/app/views/layouts/blacklight/base.html.erb +19 -9
- data/app/views/record_mailer/email_record.text.erb +4 -3
- data/app/views/record_mailer/sms_record.text.erb +4 -4
- data/app/views/search_history/index.html.erb +6 -2
- data/app/views/shared/_header_navbar.html.erb +1 -22
- data/app/views/shared/_modal.html.erb +3 -3
- data/blacklight.gemspec +8 -10
- data/config/importmap.rb +3 -0
- data/config/locales/blacklight.ar.yml +209 -233
- data/config/locales/blacklight.ca.yml +0 -7
- data/config/locales/blacklight.de.yml +197 -216
- data/config/locales/blacklight.en.yml +2 -7
- data/config/locales/blacklight.es.yml +196 -216
- data/config/locales/blacklight.fr.yml +196 -220
- data/config/locales/blacklight.hu.yml +193 -213
- data/config/locales/blacklight.it.yml +197 -216
- data/config/locales/blacklight.nl.yml +193 -213
- data/config/locales/blacklight.pt-BR.yml +195 -216
- data/config/locales/blacklight.sq.yml +193 -213
- data/config/locales/blacklight.zh.yml +194 -214
- data/config/routes.rb +3 -2
- data/db/migrate/20140202020201_create_searches.rb +1 -0
- data/db/migrate/20140202020202_create_bookmarks.rb +1 -0
- data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -0
- data/docker-compose.yml +1 -0
- data/lib/blacklight/abstract_repository.rb +1 -0
- data/lib/blacklight/configuration/context.rb +4 -4
- data/lib/blacklight/configuration/display_field.rb +7 -9
- data/lib/blacklight/configuration/facet_field.rb +17 -11
- data/lib/blacklight/configuration/field.rb +1 -0
- data/lib/blacklight/configuration/fields.rb +12 -15
- data/lib/blacklight/configuration/index_field.rb +1 -0
- data/lib/blacklight/configuration/null_display_field.rb +17 -0
- data/lib/blacklight/configuration/search_field.rb +1 -0
- data/lib/blacklight/configuration/session_tracking_config.rb +45 -0
- data/lib/blacklight/configuration/show_field.rb +1 -0
- data/lib/blacklight/configuration/sort_field.rb +1 -0
- data/lib/blacklight/configuration/tool_config.rb +1 -0
- data/lib/blacklight/configuration/view_config.rb +16 -10
- data/lib/blacklight/configuration.rb +322 -341
- data/lib/blacklight/engine.rb +13 -15
- data/lib/blacklight/exceptions.rb +2 -2
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +6 -12
- data/lib/blacklight/open_struct_with_hash_access.rb +19 -17
- data/lib/blacklight/parameters.rb +7 -21
- data/lib/blacklight/routes/exportable.rb +1 -0
- data/lib/blacklight/routes/searchable.rb +3 -1
- data/lib/blacklight/routes.rb +1 -0
- data/lib/blacklight/search_builder.rb +10 -10
- data/lib/blacklight/search_state/filter_field.rb +8 -25
- data/lib/blacklight/search_state/pivot_filter_field.rb +144 -0
- data/lib/blacklight/search_state.rb +23 -79
- data/lib/blacklight/solr/document.rb +1 -0
- data/lib/blacklight/solr/facet_paginator.rb +1 -0
- data/lib/blacklight/solr/repository.rb +1 -0
- data/lib/blacklight/solr/request.rb +3 -0
- data/lib/blacklight/solr/response/facets.rb +21 -5
- data/lib/blacklight/solr/response/group.rb +1 -0
- data/lib/blacklight/solr/response/group_response.rb +1 -0
- data/lib/blacklight/solr/response/more_like_this.rb +1 -0
- data/lib/blacklight/solr/response/pagination_methods.rb +4 -3
- data/lib/blacklight/solr/response/params.rb +5 -4
- data/lib/blacklight/solr/response/response.rb +1 -0
- data/lib/blacklight/solr/response/spelling.rb +1 -0
- data/lib/blacklight/solr/response.rb +4 -3
- data/lib/blacklight/solr/search_builder_behavior.rb +16 -32
- data/lib/blacklight/solr.rb +1 -0
- data/lib/blacklight/version.rb +1 -0
- data/lib/blacklight.rb +8 -11
- data/lib/generators/blacklight/assets/importmap_generator.rb +56 -0
- data/lib/generators/blacklight/assets/propshaft_generator.rb +34 -0
- data/lib/generators/blacklight/assets/sprockets_generator.rb +68 -0
- data/lib/generators/blacklight/assets_generator.rb +14 -88
- data/lib/generators/blacklight/controller_generator.rb +3 -2
- data/lib/generators/blacklight/document_generator.rb +1 -0
- data/lib/generators/blacklight/install_generator.rb +7 -4
- data/lib/generators/blacklight/models_generator.rb +1 -0
- data/lib/generators/blacklight/search_builder_generator.rb +1 -0
- data/lib/generators/blacklight/solr_generator.rb +1 -1
- data/lib/generators/blacklight/templates/catalog_controller.rb +37 -7
- data/lib/generators/blacklight/templates/solr_document.rb +1 -7
- data/lib/generators/blacklight/test_support_generator.rb +4 -2
- data/lib/generators/blacklight/user_generator.rb +7 -9
- data/lib/railties/blacklight.rake +2 -3
- data/package.json +10 -10
- data/rollup.config.js +37 -0
- data/spec/components/blacklight/constraints_component_spec.rb +17 -13
- data/spec/components/blacklight/document_component_spec.rb +74 -33
- data/spec/components/blacklight/facet_component_spec.rb +2 -7
- data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +1 -2
- data/spec/components/blacklight/facet_field_list_component_spec.rb +7 -6
- data/spec/components/blacklight/facet_item_pivot_component_spec.rb +9 -7
- data/spec/components/blacklight/header_component_spec.rb +20 -0
- data/spec/components/blacklight/response/view_type_component_spec.rb +83 -0
- data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
- data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +29 -0
- data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +51 -0
- data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +1 -6
- data/spec/controllers/blacklight/{base_spec.rb → catalog_spec.rb} +2 -2
- data/spec/controllers/bookmarks_controller_spec.rb +2 -3
- data/spec/controllers/catalog_controller_spec.rb +24 -126
- data/spec/features/autocomplete_spec.rb +1 -1
- data/spec/features/axe_spec.rb +1 -1
- data/spec/features/bookmarks_spec.rb +1 -1
- data/spec/features/component_template_override_spec.rb +8 -0
- data/spec/features/facets_spec.rb +1 -1
- data/spec/features/modal_spec.rb +12 -0
- data/spec/features/search_context_spec.rb +4 -10
- data/spec/features/search_results_spec.rb +0 -33
- data/spec/features/sitelinks_search_box_spec.rb +13 -0
- data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +2 -138
- data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +0 -387
- data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +5 -7
- data/spec/helpers/blacklight/url_helper_behavior_spec.rb +10 -132
- data/spec/helpers/blacklight_helper_spec.rb +3 -298
- data/spec/helpers/catalog_helper_spec.rb +60 -115
- data/spec/i18n_spec.rb +1 -0
- data/spec/integration/generators/blacklight/solr_generator_spec.rb +1 -1
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +27 -16
- data/spec/lib/blacklight/configuration/field_spec.rb +1 -1
- data/spec/lib/blacklight/configuration/session_tracking_config_spec.rb +38 -0
- data/spec/lib/blacklight/configuration/view_config_spec.rb +1 -1
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +4 -4
- data/spec/lib/blacklight/parameters_spec.rb +1 -4
- data/spec/lib/blacklight/search_state/filter_field_spec.rb +4 -4
- data/spec/lib/blacklight/search_state/pivot_filter_field_spec.rb +117 -0
- data/spec/lib/blacklight/search_state_spec.rb +80 -198
- data/spec/lib/tasks/blacklight_task_spec.rb +1 -0
- data/spec/models/blacklight/configuration_spec.rb +41 -53
- data/spec/models/blacklight/document/active_model_shim_spec.rb +2 -2
- data/spec/models/blacklight/icon_spec.rb +29 -15
- data/spec/models/blacklight/search_builder_spec.rb +12 -12
- data/spec/models/blacklight/solr/document_spec.rb +3 -3
- data/spec/models/blacklight/solr/request_spec.rb +2 -2
- data/spec/models/blacklight/solr/response/facets_spec.rb +27 -27
- data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -0
- data/spec/models/blacklight/solr/response/group_spec.rb +1 -0
- data/spec/models/blacklight/solr/response_spec.rb +9 -2
- data/spec/models/blacklight/solr/search_builder_spec.rb +32 -23
- data/spec/models/blacklight/user_spec.rb +22 -0
- data/spec/models/record_mailer_spec.rb +36 -23
- data/spec/models/solr_document_spec.rb +21 -3
- data/spec/presenters/blacklight/clause_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/document_presenter_spec.rb +3 -2
- data/spec/presenters/blacklight/facet_field_presenter_spec.rb +85 -12
- data/spec/presenters/blacklight/facet_grouped_item_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/facet_item_presenter_spec.rb +14 -13
- data/spec/presenters/blacklight/field_presenter_spec.rb +2 -16
- data/spec/presenters/blacklight/index_presenter_spec.rb +3 -4
- data/spec/presenters/blacklight/json_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -2
- data/spec/presenters/blacklight/show_presenter_spec.rb +11 -25
- data/spec/presenters/pipeline_spec.rb +13 -2
- data/spec/presenters/thumbnail_presenter_spec.rb +1 -1
- data/spec/requests/load_suggestions_spec.rb +16 -0
- data/spec/routing/catalog_routing_spec.rb +6 -1
- data/spec/services/blacklight/search_service_spec.rb +31 -68
- data/spec/spec_helper.rb +4 -3
- data/spec/support/controller_level_helpers.rb +1 -2
- data/spec/support/features/search_helpers.rb +39 -0
- data/spec/support/features/session_helpers.rb +1 -0
- data/spec/support/features.rb +3 -0
- data/spec/support/view_component_test_helpers.rb +21 -0
- data/spec/test_app_templates/Gemfile.extra +4 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +17 -2
- data/spec/views/catalog/_document.html.erb_spec.rb +23 -33
- data/spec/views/catalog/_document_list.html.erb_spec.rb +7 -2
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_search_header.erb_spec.rb +1 -0
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +1 -0
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +7 -54
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +17 -9
- data/spec/views/catalog/email_success.html.erb_spec.rb +2 -2
- data/spec/views/catalog/facet.html.erb_spec.rb +6 -3
- data/spec/views/catalog/index.atom.builder_spec.rb +18 -11
- data/spec/views/catalog/index.html.erb_spec.rb +5 -6
- data/spec/views/catalog/index.json.jbuilder_spec.rb +3 -3
- data/spec/views/catalog/show.html.erb_spec.rb +3 -25
- data/spec/views/catalog/sms_success.html.erb_spec.rb +2 -2
- data/tasks/blacklight.rake +7 -5
- metadata +95 -123
- data/.babelrc +0 -11
- data/app/assets/images/blacklight/list.svg +0 -1
- data/app/assets/images/blacklight/search.svg +0 -1
- data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +0 -37
- data/app/components/blacklight/content_areas_shim.rb +0 -13
- data/app/components/blacklight/search_context_component.rb +0 -34
- data/app/controllers/concerns/blacklight/base.rb +0 -7
- data/app/controllers/concerns/blacklight/default_component_configuration.rb +0 -64
- data/app/controllers/concerns/blacklight/facet.rb +0 -69
- data/app/controllers/concerns/blacklight/search_fields.rb +0 -46
- data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +0 -27
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +0 -188
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +0 -97
- data/app/helpers/blacklight/suggest_helper_behavior.rb +0 -13
- data/app/javascript/blacklight/autocomplete.js +0 -36
- data/app/javascript/blacklight/facet_load.js +0 -22
- data/app/models/concerns/blacklight/document/email.rb +0 -26
- data/app/models/concerns/blacklight/document/sms.rb +0 -24
- data/app/presenters/blacklight/search_bar_presenter.rb +0 -47
- data/app/views/catalog/_constraints_element.html.erb +0 -14
- data/app/views/catalog/_document_action.html.erb +0 -5
- data/app/views/catalog/_facet_group.html.erb +0 -5
- data/app/views/catalog/_facet_limit.html.erb +0 -3
- data/app/views/catalog/_index.html.erb +0 -1
- data/app/views/catalog/_index_header.html.erb +0 -22
- data/app/views/catalog/_previous_next_doc.html.erb +0 -2
- data/app/views/catalog/_show.html.erb +0 -6
- data/app/views/catalog/_show_header.html.erb +0 -2
- data/app/views/catalog/_thumbnail.html.erb +0 -1
- data/lib/blacklight/deprecations/engine_configuration.rb +0 -66
- data/lib/blacklight/deprecations/search_state_normalization.rb +0 -52
- data/spec/controllers/blacklight/facet_spec.rb +0 -33
- data/spec/controllers/blacklight/search_fields_spec.rb +0 -62
- data/spec/features/sitelinks_search_box.rb +0 -13
- data/spec/helpers/blacklight/hash_as_hidden_fields_behavior_spec.rb +0 -26
- data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +0 -92
- data/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb +0 -108
- data/spec/helpers/blacklight/suggest_helper_behavior_spec.rb +0 -48
- data/spec/lib/blacklight/engine_spec.rb +0 -41
- data/spec/models/blacklight/document/email_spec.rb +0 -57
- data/spec/models/blacklight/document/sms_spec.rb +0 -58
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +0 -94
- data/spec/support/view_component_capybara_test_helpers.rb +0 -8
- data/spec/views/catalog/_constraints.html.erb_spec.rb +0 -33
- data/spec/views/catalog/_facet_group.html.erb_spec.rb +0 -84
- data/spec/views/catalog/_facets.html.erb_spec.rb +0 -15
- data/spec/views/catalog/_index.html.erb_spec.rb +0 -62
- data/spec/views/catalog/_index_header.html.erb_spec.rb +0 -35
- data/spec/views/catalog/_previous_next_doc.html.erb_spec.rb +0 -22
- data/spec/views/catalog/_show.html.erb_spec.rb +0 -62
- data/spec/views/catalog/_thumbnail.html.erb_spec.rb +0 -38
- /data/app/components/blacklight/{search_context_component.html.erb → search_context/server_item_pagination_component.html.erb} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper")
|
|
3
4
|
|
|
4
5
|
RSpec.describe "Routing" do
|
|
5
6
|
describe "Paths Generated by Custom Routes:" do
|
|
@@ -23,6 +24,10 @@ RSpec.describe "Routing" do
|
|
|
23
24
|
it "maps { :controller => 'catalog', :action => 'show', :id => 666 } to /catalog/666" do
|
|
24
25
|
expect(get: "/catalog/666").to route_to(controller: 'catalog', action: 'show', id: "666")
|
|
25
26
|
end
|
|
27
|
+
|
|
28
|
+
it "maps GET {:controller => 'catalog', :action => 'prev_next_documents'} to /catalog/page_links" do
|
|
29
|
+
expect(get: "/catalog/page_links").to route_to(controller: 'catalog', action: 'page_links')
|
|
30
|
+
end
|
|
26
31
|
end
|
|
27
32
|
|
|
28
33
|
describe "solr_document_path for SolrDocument", test: true do
|
|
@@ -55,10 +55,6 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
55
55
|
describe 'for a sample query returning results' do
|
|
56
56
|
let(:user_params) { { q: all_docs_query } }
|
|
57
57
|
|
|
58
|
-
before do
|
|
59
|
-
(@solr_response, @document_list) = service.search_results
|
|
60
|
-
end
|
|
61
|
-
|
|
62
58
|
it "uses the configured request handler" do
|
|
63
59
|
allow(blacklight_config).to receive(:default_solr_params).and_return(qt: 'custom_request_handler')
|
|
64
60
|
allow(blacklight_solr).to receive(:send_and_receive) do |path, params|
|
|
@@ -69,23 +65,6 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
69
65
|
end.and_return('response' => { 'docs' => [] })
|
|
70
66
|
service.search_results
|
|
71
67
|
end
|
|
72
|
-
|
|
73
|
-
it 'has a @response.docs list of the same size as @document_list' do
|
|
74
|
-
expect(@solr_response.docs).to have(@document_list.length).docs
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it 'has @response.docs list representing same documents as SolrDocuments in @document_list' do
|
|
78
|
-
@solr_response.docs.each_index do |index|
|
|
79
|
-
mash = @solr_response.docs[index]
|
|
80
|
-
solr_document = @document_list[index]
|
|
81
|
-
|
|
82
|
-
expect(Set.new(mash.keys)).to eq Set.new(solr_document.keys)
|
|
83
|
-
|
|
84
|
-
mash.keys.each do |key|
|
|
85
|
-
expect(mash[key]).to eq solr_document[key]
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
68
|
end
|
|
90
69
|
|
|
91
70
|
describe "for a query returning a grouped response" do
|
|
@@ -95,12 +74,10 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
95
74
|
before do
|
|
96
75
|
blacklight_config.default_solr_params[:group] = true
|
|
97
76
|
blacklight_config.default_solr_params[:'group.field'] = 'pub_date_si'
|
|
98
|
-
(@solr_response, @document_list) = service.search_results
|
|
99
77
|
end
|
|
100
78
|
|
|
101
79
|
it "returns a grouped response" do
|
|
102
|
-
expect(
|
|
103
|
-
expect(@solr_response).to be_a_kind_of Blacklight::Solr::Response::GroupResponse
|
|
80
|
+
expect(service.search_results).to be_a_kind_of Blacklight::Solr::Response::GroupResponse
|
|
104
81
|
end
|
|
105
82
|
end
|
|
106
83
|
|
|
@@ -112,13 +89,12 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
112
89
|
allow(subject).to receive_messages grouped_key_for_results: 'title_si'
|
|
113
90
|
blacklight_config.default_solr_params[:group] = true
|
|
114
91
|
blacklight_config.default_solr_params[:'group.field'] = %w[pub_date_si title_si]
|
|
115
|
-
(@solr_response, @document_list) = service.search_results
|
|
116
92
|
end
|
|
117
93
|
|
|
118
94
|
it "returns a grouped response" do
|
|
119
|
-
|
|
120
|
-
expect(
|
|
121
|
-
expect(
|
|
95
|
+
solr_response = service.search_results
|
|
96
|
+
expect(solr_response).to be_a_kind_of Blacklight::Solr::Response::GroupResponse
|
|
97
|
+
expect(solr_response.group_field).to eq "title_si"
|
|
122
98
|
end
|
|
123
99
|
end
|
|
124
100
|
|
|
@@ -126,8 +102,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
126
102
|
let(:user_params) { { q: all_docs_query, f: single_facet } }
|
|
127
103
|
|
|
128
104
|
it 'has results' do
|
|
129
|
-
|
|
130
|
-
expect(solr_response.docs).to have(document_list.size).results
|
|
105
|
+
solr_response = service.search_results
|
|
131
106
|
expect(solr_response.docs).to have_at_least(1).result
|
|
132
107
|
end
|
|
133
108
|
# TODO: check that number of these results < number of results for all docs query
|
|
@@ -138,8 +113,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
138
113
|
let(:user_params) { { q: no_docs_query } }
|
|
139
114
|
|
|
140
115
|
it 'has no results and not raise error' do
|
|
141
|
-
|
|
142
|
-
expect(document_list).to have(0).results
|
|
116
|
+
solr_response = service.search_results
|
|
143
117
|
expect(solr_response.docs).to have(0).results
|
|
144
118
|
end
|
|
145
119
|
end
|
|
@@ -148,19 +122,17 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
148
122
|
let(:user_params) { { q: no_docs_query, f: single_facet } }
|
|
149
123
|
|
|
150
124
|
it 'has no results and not raise error' do
|
|
151
|
-
|
|
152
|
-
expect(document_list).to have(0).results
|
|
125
|
+
solr_response = service.search_results
|
|
153
126
|
expect(solr_response.docs).to have(0).results
|
|
154
127
|
end
|
|
155
128
|
end
|
|
156
129
|
|
|
157
130
|
describe "for All Docs Query and Bad Facet" do
|
|
158
|
-
let(:bad_facet) { { format: '666' } }
|
|
131
|
+
let(:bad_facet) { { format: ['666'] } }
|
|
159
132
|
let(:user_params) { { q: all_docs_query, f: bad_facet } }
|
|
160
133
|
|
|
161
134
|
it 'has no results and not raise error' do
|
|
162
|
-
|
|
163
|
-
expect(document_list).to have(0).results
|
|
135
|
+
solr_response = service.search_results
|
|
164
136
|
expect(solr_response.docs).to have(0).results
|
|
165
137
|
end
|
|
166
138
|
end
|
|
@@ -182,7 +154,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
182
154
|
|
|
183
155
|
it 'has all facets specified in initializer' do
|
|
184
156
|
expect(@facets.keys).to include *blacklight_config.facet_fields.keys
|
|
185
|
-
expect(@facets.none? { |_k, v| v.nil? }).to
|
|
157
|
+
expect(@facets.none? { |_k, v| v.nil? }).to be true
|
|
186
158
|
end
|
|
187
159
|
|
|
188
160
|
it 'has at least one value for each facet' do
|
|
@@ -199,13 +171,13 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
199
171
|
break
|
|
200
172
|
end
|
|
201
173
|
end
|
|
202
|
-
expect(has_mult_values).to
|
|
174
|
+
expect(has_mult_values).to be true
|
|
203
175
|
end
|
|
204
176
|
|
|
205
177
|
it 'has all value counts > 0' do
|
|
206
178
|
@facets.each do |_key, facet|
|
|
207
179
|
facet.items.each do |facet_vals|
|
|
208
|
-
expect(facet_vals.hits).to
|
|
180
|
+
expect(facet_vals.hits).to be_positive
|
|
209
181
|
end
|
|
210
182
|
end
|
|
211
183
|
end
|
|
@@ -222,9 +194,8 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
222
194
|
end
|
|
223
195
|
|
|
224
196
|
it 'has number of results (per page) set in initializer, by default' do
|
|
225
|
-
|
|
197
|
+
solr_response = service.search_results
|
|
226
198
|
expect(solr_response.docs).to have(blacklight_config[:default_solr_params][:rows]).items
|
|
227
|
-
expect(document_list).to have(blacklight_config[:default_solr_params][:rows]).items
|
|
228
199
|
end
|
|
229
200
|
|
|
230
201
|
context "with per page requested" do
|
|
@@ -232,8 +203,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
232
203
|
let(:num_results) { 3 } # non-default value
|
|
233
204
|
|
|
234
205
|
it 'gets number of results per page requested' do
|
|
235
|
-
|
|
236
|
-
expect(document_list1).to have(num_results).docs
|
|
206
|
+
solr_response1 = service.search_results
|
|
237
207
|
expect(solr_response1.docs).to have(num_results).docs
|
|
238
208
|
end
|
|
239
209
|
end
|
|
@@ -243,8 +213,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
243
213
|
let(:num_results) { 4 } # non-default value
|
|
244
214
|
|
|
245
215
|
it 'gets number of rows requested' do
|
|
246
|
-
|
|
247
|
-
expect(document_list1).to have(num_results).docs
|
|
216
|
+
solr_response1 = service.search_results
|
|
248
217
|
expect(solr_response1.docs).to have(num_results).docs
|
|
249
218
|
end
|
|
250
219
|
end
|
|
@@ -277,8 +246,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
277
246
|
let(:user_params) { { q: all_docs_query, page: page, rows: rows } }
|
|
278
247
|
|
|
279
248
|
it 'has no results when prompted for page after last result' do
|
|
280
|
-
|
|
281
|
-
expect(document_list3).to have(0).docs
|
|
249
|
+
solr_response3 = service.search_results
|
|
282
250
|
expect(solr_response3.docs).to have(0).docs
|
|
283
251
|
end
|
|
284
252
|
end
|
|
@@ -301,8 +269,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
301
269
|
let(:user_params) { { q: all_docs_query, page: page, rows: rows } }
|
|
302
270
|
|
|
303
271
|
it 'has results available when asked for more than are in response' do
|
|
304
|
-
|
|
305
|
-
expect(solr_response5.docs).to have(document_list5.length).docs
|
|
272
|
+
solr_response5 = service.search_results
|
|
306
273
|
expect(solr_response5.docs).to have_at_least(1).doc
|
|
307
274
|
end
|
|
308
275
|
end
|
|
@@ -314,7 +281,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
314
281
|
let(:bad_id) { 'redrum' }
|
|
315
282
|
|
|
316
283
|
before do
|
|
317
|
-
@
|
|
284
|
+
@document = service.fetch(doc_id)
|
|
318
285
|
end
|
|
319
286
|
|
|
320
287
|
it "raises Blacklight::RecordNotFound for an unknown id" do
|
|
@@ -327,10 +294,6 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
327
294
|
expect(@document).not_to be_nil
|
|
328
295
|
end
|
|
329
296
|
|
|
330
|
-
it "has a single document in the response for a known id" do
|
|
331
|
-
expect(@response2.docs.size).to eq 1
|
|
332
|
-
end
|
|
333
|
-
|
|
334
297
|
it 'has the expected value in the id field' do
|
|
335
298
|
expect(@document.id).to eq doc_id
|
|
336
299
|
end
|
|
@@ -339,18 +302,18 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
339
302
|
describe 'Get multiple documents By Id', integration: true do
|
|
340
303
|
let(:doc_id) { '2007020969' }
|
|
341
304
|
let(:bad_id) { 'redrum' }
|
|
342
|
-
let(:response) { service.fetch([doc_id])
|
|
305
|
+
let(:response) { service.fetch([doc_id]) }
|
|
343
306
|
|
|
344
307
|
before do
|
|
345
308
|
blacklight_config.fetch_many_document_params[:fl] = 'id,format'
|
|
346
309
|
end
|
|
347
310
|
|
|
348
311
|
it 'has the expected value in the id field' do
|
|
349
|
-
expect(response.
|
|
312
|
+
expect(response.first.id).to eq doc_id
|
|
350
313
|
end
|
|
351
314
|
|
|
352
315
|
it 'returns all the requested fields' do
|
|
353
|
-
expect(response.
|
|
316
|
+
expect(response.first['format']).to eq ['Book']
|
|
354
317
|
end
|
|
355
318
|
end
|
|
356
319
|
|
|
@@ -382,7 +345,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
382
345
|
end
|
|
383
346
|
|
|
384
347
|
context "for title search" do
|
|
385
|
-
let(:user_params) { { q: 'yehudiyam',
|
|
348
|
+
let(:user_params) { { q: 'yehudiyam', 'spellcheck.dictionary': "title" } }
|
|
386
349
|
|
|
387
350
|
it 'has spelling suggestions' do
|
|
388
351
|
(solr_response,) = service.search_results
|
|
@@ -391,7 +354,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
391
354
|
end
|
|
392
355
|
|
|
393
356
|
context "for author search" do
|
|
394
|
-
let(:user_params) { { q: 'shirma',
|
|
357
|
+
let(:user_params) { { q: 'shirma', 'spellcheck.dictionary': "author" } }
|
|
395
358
|
|
|
396
359
|
it 'has spelling suggestions' do
|
|
397
360
|
(solr_response,) = service.search_results
|
|
@@ -400,7 +363,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
400
363
|
end
|
|
401
364
|
|
|
402
365
|
context "for subject search" do
|
|
403
|
-
let(:user_params) { { q: 'wome',
|
|
366
|
+
let(:user_params) { { q: 'wome', 'spellcheck.dictionary': "subject" } }
|
|
404
367
|
|
|
405
368
|
it 'has spelling suggestions' do
|
|
406
369
|
(solr_response,) = service.search_results
|
|
@@ -433,26 +396,26 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
433
396
|
let(:user_params) { { q: '', per_page: 100 } }
|
|
434
397
|
|
|
435
398
|
before do
|
|
436
|
-
@full_response
|
|
399
|
+
@full_response = service.search_results
|
|
437
400
|
end
|
|
438
401
|
|
|
439
402
|
it "returns the previous and next documents for a search" do
|
|
440
403
|
_response, docs = service.previous_and_next_documents_for_search(4, q: '')
|
|
441
404
|
|
|
442
|
-
expect(docs.first.id).to eq @
|
|
443
|
-
expect(docs.last.id).to eq @
|
|
405
|
+
expect(docs.first.id).to eq @full_response.documents[3].id
|
|
406
|
+
expect(docs.last.id).to eq @full_response.documents[5].id
|
|
444
407
|
end
|
|
445
408
|
|
|
446
409
|
it "returns only the next document if the counter is 0" do
|
|
447
410
|
_response, docs = service.previous_and_next_documents_for_search(0, q: '')
|
|
448
411
|
|
|
449
412
|
expect(docs.first).to be_nil
|
|
450
|
-
expect(docs.last.id).to eq @
|
|
413
|
+
expect(docs.last.id).to eq @full_response.documents[1].id
|
|
451
414
|
end
|
|
452
415
|
|
|
453
416
|
it "returns only the previous document if the counter is the total number of documents" do
|
|
454
417
|
_response, docs = service.previous_and_next_documents_for_search(@full_response.total - 1, q: '')
|
|
455
|
-
expect(docs.first.id).to eq @
|
|
418
|
+
expect(docs.first.id).to eq @full_response.documents.slice(-2).id
|
|
456
419
|
expect(docs.last).to be_nil
|
|
457
420
|
end
|
|
458
421
|
|
|
@@ -464,7 +427,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
464
427
|
|
|
465
428
|
it 'returns only the unique key by default' do
|
|
466
429
|
_response, docs = service.previous_and_next_documents_for_search(0, q: '')
|
|
467
|
-
expect(docs.last.to_h).to eq 'id' => @
|
|
430
|
+
expect(docs.last.to_h).to eq 'id' => @full_response.documents[1].id
|
|
468
431
|
end
|
|
469
432
|
|
|
470
433
|
it 'allows the query parameters to be customized using configuration' do
|
|
@@ -472,7 +435,7 @@ RSpec.describe Blacklight::SearchService, api: true do
|
|
|
472
435
|
|
|
473
436
|
_response, docs = service.previous_and_next_documents_for_search(0, q: '')
|
|
474
437
|
|
|
475
|
-
expect(docs.last.to_h).to eq @
|
|
438
|
+
expect(docs.last.to_h).to eq @full_response.documents[1].to_h.slice('id', 'format')
|
|
476
439
|
end
|
|
477
440
|
end
|
|
478
441
|
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
|
3
4
|
# Has been customized by Blacklight to work when application is in one place,
|
|
4
5
|
# and actual spec/ stuff is in another (the blacklight gem checkout).
|
|
@@ -47,10 +48,10 @@ RSpec.configure do |config|
|
|
|
47
48
|
config.disable_monkey_patching!
|
|
48
49
|
|
|
49
50
|
# When we're testing the API, only run the api tests
|
|
50
|
-
config.filter_run api: true if ENV['BLACKLIGHT_API_TEST']
|
|
51
|
+
config.filter_run api: true if ENV['BLACKLIGHT_API_TEST'].present?
|
|
51
52
|
|
|
52
53
|
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
|
53
|
-
config.fixture_path =
|
|
54
|
+
config.fixture_path = Rails.root.join("spec/fixtures")
|
|
54
55
|
|
|
55
56
|
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
|
56
57
|
# examples within a transaction, remove the following line or assign false
|
|
@@ -67,7 +68,7 @@ RSpec.configure do |config|
|
|
|
67
68
|
config.infer_spec_type_from_file_location!
|
|
68
69
|
config.include PresenterTestHelpers, type: :presenter
|
|
69
70
|
config.include ViewComponent::TestHelpers, type: :component
|
|
70
|
-
config.include
|
|
71
|
+
config.include ViewComponentTestHelpers, type: :component
|
|
71
72
|
|
|
72
73
|
config.include(ControllerLevelHelpers, type: :helper)
|
|
73
74
|
config.before(:each, type: :helper) { initialize_controller_helpers(helper) }
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# spec/support/features/search_helpers.rb
|
|
4
|
+
module Features
|
|
5
|
+
module SearchHelpers
|
|
6
|
+
def search_for q
|
|
7
|
+
visit root_path
|
|
8
|
+
fill_in "q", with: q
|
|
9
|
+
click_button 'search'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def position_in_result_page(page, id)
|
|
13
|
+
i = -1
|
|
14
|
+
page.all(".index_title a").each_with_index do |link, idx|
|
|
15
|
+
i = (idx + 1) if link['href'] =~ Regexp.new("#{Regexp.escape(id)}$")
|
|
16
|
+
end
|
|
17
|
+
i.to_i
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def number_of_results_for_query(query)
|
|
21
|
+
visit root_path
|
|
22
|
+
fill_in "q", with: query
|
|
23
|
+
click_button "search"
|
|
24
|
+
get_number_of_results_from_page(page)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def number_of_results_from_page(page)
|
|
28
|
+
tmp_value = Capybara.ignore_hidden_elements
|
|
29
|
+
Capybara.ignore_hidden_elements = false
|
|
30
|
+
val = begin
|
|
31
|
+
page.find("meta[name=totalResults]")['content'].to_i
|
|
32
|
+
rescue StandardError
|
|
33
|
+
0
|
|
34
|
+
end
|
|
35
|
+
Capybara.ignore_hidden_elements = tmp_value
|
|
36
|
+
val
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
data/spec/support/features.rb
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
# spec/support/features.rb
|
|
3
4
|
|
|
5
|
+
require File.expand_path('features/search_helpers.rb', __dir__)
|
|
4
6
|
require File.expand_path('features/session_helpers.rb', __dir__)
|
|
5
7
|
|
|
6
8
|
RSpec.configure do |config|
|
|
9
|
+
config.include Features::SearchHelpers, type: :feature
|
|
7
10
|
config.include Features::SessionHelpers, type: :feature
|
|
8
11
|
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ViewComponentTestHelpers
|
|
4
|
+
# Work around for https://github.com/teamcapybara/capybara/issues/2466
|
|
5
|
+
def render_inline_to_capybara_node(component)
|
|
6
|
+
Capybara::Node::Simple.new(render_inline(component).to_s)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# Work-around for https://github.com/ViewComponent/view_component/pull/1661
|
|
10
|
+
# which made the component test's controller method (more) private. This makes
|
|
11
|
+
# it available so we can set up controller-level state for our tests.
|
|
12
|
+
def controller
|
|
13
|
+
# ViewComponent 2.x
|
|
14
|
+
return super if defined?(super)
|
|
15
|
+
|
|
16
|
+
# ViewComponent 3.x
|
|
17
|
+
return vc_test_controller if defined?(vc_test_controller)
|
|
18
|
+
|
|
19
|
+
ApplicationController.new.extend(Rails.application.routes.url_helpers)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
require 'rails/generators'
|
|
3
4
|
|
|
4
5
|
class TestAppGenerator < Rails::Generators::Base
|
|
@@ -11,11 +12,11 @@ class TestAppGenerator < Rails::Generators::Base
|
|
|
11
12
|
def run_blacklight_generator
|
|
12
13
|
say_status("warning", "GENERATING BL", :yellow)
|
|
13
14
|
|
|
14
|
-
Bundler.
|
|
15
|
+
Bundler.with_unbundled_env do
|
|
15
16
|
run "bundle install"
|
|
16
17
|
end
|
|
17
18
|
options = '--devise'
|
|
18
|
-
if ENV['BLACKLIGHT_API_TEST']
|
|
19
|
+
if ENV['BLACKLIGHT_API_TEST'].present?
|
|
19
20
|
options += ' --skip-assets'
|
|
20
21
|
end
|
|
21
22
|
|
|
@@ -27,4 +28,18 @@ class TestAppGenerator < Rails::Generators::Base
|
|
|
27
28
|
|
|
28
29
|
generate 'blacklight:test_support'
|
|
29
30
|
end
|
|
31
|
+
|
|
32
|
+
def add_local_assets_for_propshaft
|
|
33
|
+
return unless defined?(Propshaft)
|
|
34
|
+
|
|
35
|
+
run "yarn add #{Blacklight::Engine.root}"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def add_component_template_override
|
|
39
|
+
src_template = File.join(Blacklight::Engine.root, 'app', 'components', 'blacklight', 'top_navbar_component.html.erb')
|
|
40
|
+
target_template = File.join('app', 'components', 'blacklight', 'top_navbar_component.html.erb')
|
|
41
|
+
create_file(target_template) do
|
|
42
|
+
File.read(src_template).gsub('role="navigation"', 'role="navigation" data-template-override="top_navbar_component"')
|
|
43
|
+
end
|
|
44
|
+
end
|
|
30
45
|
end
|
|
@@ -8,51 +8,41 @@ RSpec.describe "catalog/_document" do
|
|
|
8
8
|
allow(controller).to receive(:controller_name).and_return('test')
|
|
9
9
|
allow(view).to receive(:render_grouped_response?).and_return(false)
|
|
10
10
|
allow(view).to receive(:blacklight_config).and_return(blacklight_config)
|
|
11
|
+
allow(view).to receive(:search_session).and_return({})
|
|
12
|
+
allow(view).to receive(:current_search_session).and_return(nil)
|
|
13
|
+
allow(view.main_app).to receive(:track_test_path).and_return('/track')
|
|
11
14
|
assign(:response, instance_double(Blacklight::Solr::Response, start: 20))
|
|
12
15
|
end
|
|
13
16
|
|
|
14
|
-
it "renders the header, thumbnail and index by default" do
|
|
15
|
-
stub_template "catalog/_index_header.html.erb" => "document_header"
|
|
16
|
-
stub_template "catalog/_thumbnail.html.erb" => "thumbnail_default"
|
|
17
|
-
stub_template "catalog/_index_default.html.erb" => "index_default"
|
|
18
|
-
render partial: "catalog/document", locals: { document: document, document_counter: 1 }
|
|
19
|
-
expect(rendered).to have_selector 'article.document[@data-document-counter="22"]'
|
|
20
|
-
expect(rendered).to match /document_header/
|
|
21
|
-
expect(rendered).to match /thumbnail_default/
|
|
22
|
-
expect(rendered).to match /index_default/
|
|
23
|
-
end
|
|
24
|
-
|
|
25
17
|
it "uses the index.partials parameter to determine the partials to render" do
|
|
26
18
|
blacklight_config.index.partials = %w[a b c]
|
|
27
19
|
stub_template "catalog/_a_default.html.erb" => "a_partial"
|
|
28
20
|
stub_template "catalog/_b_default.html.erb" => "b_partial"
|
|
29
21
|
stub_template "catalog/_c_default.html.erb" => "c_partial"
|
|
30
|
-
render partial: "catalog/document", locals: { document: document, document_counter: 1 }
|
|
22
|
+
render partial: "catalog/document", locals: { document: document, document_counter: 1, view_config: blacklight_config.index }
|
|
31
23
|
expect(rendered).to match /a_partial/
|
|
32
24
|
expect(rendered).to match /b_partial/
|
|
33
25
|
expect(rendered).to match /c_partial/
|
|
34
26
|
end
|
|
35
27
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
expect(rendered).to match(/partial/)
|
|
28
|
+
context 'with a configured document component' do
|
|
29
|
+
let(:custom_component_class) do
|
|
30
|
+
Class.new(Blacklight::DocumentComponent) do
|
|
31
|
+
# Override component rendering with our own value
|
|
32
|
+
def call
|
|
33
|
+
'blah'
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
before do
|
|
39
|
+
stub_const('MyDocumentComponent', custom_component_class)
|
|
40
|
+
blacklight_config.index.document_component = MyDocumentComponent
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it 'renders the document component' do
|
|
44
|
+
render partial: "catalog/document", locals: { document: document, document_counter: 1, view_config: blacklight_config.index }
|
|
45
|
+
expect(rendered).to match /blah/
|
|
46
|
+
end
|
|
57
47
|
end
|
|
58
48
|
end
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
RSpec.describe "catalog/_document_list", type: :view do
|
|
4
|
+
let(:view_type) { 'some-view' }
|
|
5
|
+
let(:view_config) { double(Blacklight::Configuration::ViewConfig) }
|
|
6
|
+
|
|
4
7
|
before do
|
|
5
|
-
allow(
|
|
8
|
+
allow(view_config).to receive_messages(key: view_type, document_component: Blacklight::DocumentComponent, partials: [])
|
|
9
|
+
allow(view).to receive_messages(document_index_view_type: view_type, documents: [], blacklight_config: nil)
|
|
10
|
+
assign(:response, instance_double(Blacklight::Solr::Response, start: 0))
|
|
6
11
|
end
|
|
7
12
|
|
|
8
13
|
it "includes a class for the current view" do
|
|
9
|
-
render
|
|
14
|
+
render(partial: "catalog/document_list", locals: { view_config: view_config })
|
|
10
15
|
expect(rendered).to have_selector(".documents-some-view")
|
|
11
16
|
end
|
|
12
17
|
end
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
RSpec.describe 'catalog/_facet_index_navigation.html.erb', type: :view do
|
|
4
4
|
let(:pagination) { Blacklight::Solr::FacetPaginator.new([]) }
|
|
5
|
-
let(:facet) { Blacklight::Configuration::FacetField.new(index_range: '0'..'9') }
|
|
5
|
+
let(:facet) { Blacklight::Configuration::FacetField.new(index_range: '0'..'9', presenter: Blacklight::FacetFieldPresenter) }
|
|
6
6
|
let(:display_facet) { double(items: [], offset: 0, prefix: '', sort: 'index') }
|
|
7
7
|
let(:blacklight_config) { Blacklight::Configuration.new }
|
|
8
8
|
|
|
@@ -6,6 +6,7 @@ RSpec.describe "/catalog/_search_header.html.erb" do
|
|
|
6
6
|
it "renders the default search header partials" do
|
|
7
7
|
stub_template "_did_you_mean.html.erb" => "did_you_mean"
|
|
8
8
|
stub_template "_sort_and_per_page.html.erb" => "sort_and_per_page"
|
|
9
|
+
allow(view).to receive(:blacklight_config).and_return(CatalogController.blacklight_config)
|
|
9
10
|
render
|
|
10
11
|
expect(rendered).to match /did_you_mean/
|
|
11
12
|
expect(rendered).to match /sort_and_per_page/
|