blacklight 6.14.0 → 7.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 +5 -5
- data/.gitignore +1 -0
- data/.npmignore +23 -0
- data/.rubocop.yml +40 -16
- data/.rubocop_todo.yml +479 -375
- data/.solr_wrapper.yml +9 -2
- data/.travis.yml +27 -20
- data/Gemfile +3 -1
- data/README.md +22 -5
- data/Rakefile +3 -2
- data/VERSION +1 -1
- data/Vagrantfile +2 -0
- data/app/assets/images/blacklight/list.svg +1 -0
- data/app/assets/images/blacklight/search.svg +1 -0
- data/app/assets/javascripts/blacklight/blacklight.js +497 -57
- data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +18 -15
- data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
- data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
- data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
- data/app/assets/stylesheets/blacklight/_facets.scss +64 -93
- data/app/assets/stylesheets/blacklight/_header.scss +35 -48
- data/app/assets/stylesheets/blacklight/_icons.scss +35 -0
- data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
- data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
- data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
- data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
- data/app/assets/stylesheets/blacklight/_search_form.scss +7 -0
- data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
- data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
- data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
- data/app/assets/stylesheets/blacklight/blacklight.scss +1 -1
- data/app/builders/blacklight/action_builder.rb +57 -0
- data/app/controllers/bookmarks_controller.rb +2 -2
- data/app/controllers/catalog_controller.rb +2 -2
- data/app/controllers/concerns/blacklight/base.rb +0 -33
- data/app/controllers/concerns/blacklight/bookmarks.rb +36 -33
- data/app/controllers/concerns/blacklight/catalog.rb +266 -210
- data/app/controllers/concerns/blacklight/controller.rb +111 -126
- data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
- data/app/controllers/concerns/blacklight/facet.rb +3 -0
- data/app/controllers/concerns/blacklight/search_context.rb +16 -14
- data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
- data/app/controllers/concerns/blacklight/search_history.rb +1 -6
- data/app/controllers/concerns/blacklight/token_based_user.rb +24 -9
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +39 -119
- data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
- data/app/helpers/blacklight/component_helper_behavior.rb +21 -19
- data/app/helpers/blacklight/configuration_helper_behavior.rb +30 -57
- data/app/helpers/blacklight/facets_helper_behavior.rb +55 -51
- data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
- data/app/helpers/blacklight/icon_helper_behavior.rb +18 -0
- data/app/helpers/blacklight/layout_helper_behavior.rb +3 -3
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +8 -6
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +19 -11
- data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
- data/app/helpers/blacklight/url_helper_behavior.rb +50 -41
- data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
- data/app/javascript/blacklight/bookmark_toggle.js +25 -0
- data/app/javascript/blacklight/checkbox_submit.js +134 -0
- data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
- data/app/{assets/javascripts → javascript}/blacklight/core.js +10 -8
- data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
- data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +62 -64
- data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -3
- data/app/models/blacklight/facet_paginator.rb +3 -3
- data/app/models/blacklight/icon.rb +56 -0
- data/app/models/blacklight/solr/facet_paginator.rb +3 -3
- data/app/models/blacklight/suggest_search.rb +4 -15
- data/app/models/bookmark.rb +5 -10
- data/app/models/concerns/blacklight/configurable.rb +13 -13
- data/app/models/concerns/blacklight/document/active_model_shim.rb +13 -11
- data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
- data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
- data/app/models/concerns/blacklight/document/email.rb +1 -1
- data/app/models/concerns/blacklight/document/extensions.rb +5 -5
- data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
- data/app/models/concerns/blacklight/document/sms.rb +1 -1
- data/app/models/concerns/blacklight/document.rb +26 -40
- data/app/models/concerns/blacklight/solr/document.rb +8 -8
- data/app/models/concerns/blacklight/suggest/response.rb +5 -3
- data/app/models/concerns/blacklight/user.rb +7 -6
- data/app/models/record_mailer.rb +5 -6
- data/app/models/search.rb +5 -7
- data/app/presenters/blacklight/document_presenter.rb +25 -140
- data/app/presenters/blacklight/field_presenter.rb +7 -5
- data/app/presenters/blacklight/index_presenter.rb +41 -58
- data/app/presenters/blacklight/json_presenter.rb +10 -14
- data/app/presenters/blacklight/link_alternate_presenter.rb +3 -1
- data/app/presenters/blacklight/rendering/abstract_step.rb +7 -5
- data/app/presenters/blacklight/rendering/helper_method.rb +10 -8
- data/app/presenters/blacklight/rendering/join.rb +5 -3
- data/app/presenters/blacklight/rendering/link_to_facet.rb +23 -19
- data/app/presenters/blacklight/rendering/microdata.rb +6 -3
- data/app/presenters/blacklight/rendering/pipeline.rb +7 -5
- data/app/presenters/blacklight/rendering/terminator.rb +2 -0
- data/app/presenters/blacklight/search_bar_presenter.rb +39 -0
- data/app/presenters/blacklight/show_presenter.rb +26 -63
- data/app/presenters/blacklight/thumbnail_presenter.rb +74 -0
- data/app/services/blacklight/document_factory.rb +13 -0
- data/app/services/blacklight/field_retriever.rb +26 -24
- data/app/services/blacklight/search_service.rb +152 -0
- data/app/values/blacklight/types.rb +31 -0
- data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
- data/app/views/blacklight/nav/_search_history.html.erb +1 -1
- data/app/views/bookmarks/_tools.html.erb +2 -2
- data/app/views/bookmarks/index.html.erb +12 -13
- data/app/views/catalog/_bookmark_control.html.erb +26 -10
- data/app/views/catalog/_citation.html.erb +4 -4
- data/app/views/catalog/_constraints.html.erb +6 -7
- data/app/views/catalog/_constraints_element.html.erb +6 -6
- data/app/views/catalog/_did_you_mean.html.erb +1 -1
- data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +19 -18
- data/app/views/catalog/_document.html.erb +5 -3
- data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +2 -0
- data/app/views/catalog/_document_action.html.erb +2 -1
- data/app/views/catalog/_email_form.html.erb +8 -4
- data/app/views/catalog/_facet_index_navigation.html.erb +5 -4
- data/app/views/catalog/_facet_layout.html.erb +6 -10
- data/app/views/catalog/_facet_limit.html.erb +3 -2
- data/app/views/catalog/_facet_pagination.html.erb +8 -8
- data/app/views/catalog/_facet_pivot.html.erb +2 -2
- data/app/views/catalog/_facets.html.erb +9 -12
- data/app/views/catalog/_field.json.jbuilder +10 -0
- data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +1 -1
- data/app/views/catalog/_home_text.html.erb +32 -36
- data/app/views/catalog/_index.html.erb +10 -0
- data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +3 -3
- data/app/views/catalog/_per_page_widget.html.erb +6 -7
- data/app/views/catalog/_previous_next_doc.html.erb +6 -14
- data/app/views/catalog/_results_pagination.html.erb +2 -2
- data/app/views/catalog/_search_form.html.erb +12 -8
- data/app/views/catalog/_search_header.html.erb +0 -3
- data/app/views/catalog/_search_results.html.erb +6 -2
- data/app/views/catalog/_show.html.erb +8 -0
- data/app/views/catalog/_show_main_content.html.erb +4 -4
- data/app/views/catalog/_show_more_like_this.html.erb +1 -1
- data/app/views/catalog/_show_sidebar.html.erb +3 -3
- data/app/views/catalog/_show_tools.html.erb +10 -12
- data/app/views/catalog/_sms_form.html.erb +8 -4
- data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
- data/app/views/catalog/_sort_widget.html.erb +7 -7
- data/app/views/catalog/_thumbnail.html.erb +5 -0
- data/app/views/catalog/_view_type_group.html.erb +2 -2
- data/app/views/catalog/_zero_results.html.erb +1 -1
- data/app/views/catalog/citation.js.erb +4 -2
- data/app/views/catalog/email.html.erb +5 -3
- data/app/views/catalog/email_success.html.erb +12 -8
- data/app/views/catalog/facet.html.erb +10 -8
- data/app/views/catalog/facet.json.jbuilder +2 -0
- data/app/views/catalog/index.atom.builder +13 -16
- data/app/views/catalog/index.html.erb +9 -11
- data/app/views/catalog/index.json.jbuilder +84 -3
- data/app/views/catalog/index.rss.builder +7 -5
- data/app/views/catalog/opensearch.xml.builder +12 -10
- data/app/views/catalog/show.html.erb +11 -6
- data/app/views/catalog/show.json.jbuilder +21 -0
- data/app/views/catalog/sms.html.erb +3 -1
- data/app/views/catalog/sms_success.html.erb +12 -8
- data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
- data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
- data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
- data/app/views/kaminari/blacklight/_next_page.html.erb +5 -5
- data/app/views/kaminari/blacklight/_page.html.erb +5 -3
- data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
- data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
- data/app/views/layouts/blacklight/base.html.erb +35 -0
- data/app/views/layouts/blacklight.html.erb +14 -41
- data/app/views/layouts/catalog_result.html.erb +11 -0
- data/app/views/search_history/index.html.erb +16 -21
- data/app/views/shared/_header_navbar.html.erb +8 -13
- data/app/views/shared/_modal.html.erb +6 -0
- data/app/views/shared/_user_util_links.html.erb +22 -0
- data/blacklight.gemspec +10 -11
- data/config/i18n-tasks.yml +17 -0
- data/config/locales/blacklight.de.yml +71 -82
- data/config/locales/blacklight.en.yml +15 -27
- data/config/locales/blacklight.es.yml +14 -26
- data/config/locales/blacklight.fr.yml +16 -33
- data/config/locales/blacklight.hu.yml +212 -0
- data/config/locales/blacklight.it.yml +15 -26
- data/config/locales/blacklight.nl.yml +212 -0
- data/config/locales/blacklight.pt-BR.yml +24 -29
- data/config/locales/blacklight.sq.yml +4 -28
- data/config/locales/blacklight.zh.yml +3 -25
- data/config/routes.rb +2 -10
- data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
- data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
- data/lib/blacklight/abstract_repository.rb +22 -10
- data/lib/blacklight/configuration/context.rb +12 -1
- data/lib/blacklight/configuration/facet_field.rb +16 -9
- data/lib/blacklight/configuration/field.rb +32 -3
- data/lib/blacklight/configuration/fields.rb +61 -58
- data/lib/blacklight/configuration/null_field.rb +2 -0
- data/lib/blacklight/configuration/search_field.rb +2 -2
- data/lib/blacklight/configuration/sort_field.rb +2 -2
- data/lib/blacklight/configuration/view_config.rb +4 -0
- data/lib/blacklight/configuration.rb +101 -88
- data/lib/blacklight/engine.rb +11 -7
- data/lib/blacklight/exceptions.rb +4 -7
- data/lib/blacklight/{utils.rb → nested_open_struct_with_hash_access.rb} +9 -81
- data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
- data/lib/blacklight/parameters.rb +1 -1
- data/lib/blacklight/routes/exportable.rb +1 -3
- data/lib/blacklight/routes/searchable.rb +3 -3
- data/lib/blacklight/runtime_registry.rb +2 -0
- data/lib/blacklight/search_builder.rb +28 -35
- data/lib/blacklight/search_state.rb +10 -8
- data/lib/blacklight/solr/repository.rb +40 -6
- data/lib/blacklight/solr/request.rb +1 -1
- data/lib/blacklight/solr/response/facets.rb +29 -31
- data/lib/blacklight/solr/response/group.rb +3 -3
- data/lib/blacklight/solr/response/group_response.rb +1 -1
- data/lib/blacklight/solr/response/more_like_this.rb +2 -2
- data/lib/blacklight/solr/response/response.rb +2 -2
- data/lib/blacklight/solr/response/spelling.rb +4 -3
- data/lib/blacklight/solr/response.rb +29 -30
- data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
- data/lib/blacklight/version.rb +1 -1
- data/lib/blacklight.rb +10 -8
- data/lib/generators/blacklight/assets_generator.rb +18 -12
- data/lib/generators/blacklight/controller_generator.rb +4 -5
- data/lib/generators/blacklight/document_generator.rb +1 -1
- data/lib/generators/blacklight/install_generator.rb +18 -28
- data/lib/generators/blacklight/search_builder_generator.rb +1 -1
- data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +12 -6
- data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
- data/lib/generators/blacklight/templates/alternate_controller.rb +4 -4
- data/lib/generators/blacklight/templates/blacklight.scss +0 -2
- data/lib/generators/blacklight/templates/catalog_controller.rb +59 -49
- data/lib/generators/blacklight/templates/config/blacklight.yml +1 -13
- data/lib/generators/blacklight/templates/solr/conf/schema.xml +388 -0
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
- data/lib/generators/blacklight/test_support_generator.rb +10 -10
- data/lib/generators/blacklight/user_generator.rb +5 -6
- data/lib/railties/blacklight.rake +17 -21
- data/package-lock.json +2195 -0
- data/package.json +29 -0
- data/spec/controllers/alternate_controller_spec.rb +5 -4
- data/spec/controllers/application_controller_spec.rb +1 -5
- data/spec/controllers/blacklight/base_spec.rb +6 -3
- data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
- data/spec/controllers/blacklight/facet_spec.rb +1 -2
- data/spec/controllers/blacklight/search_fields_spec.rb +25 -34
- data/spec/controllers/bookmarks_controller_spec.rb +46 -11
- data/spec/controllers/catalog_controller_spec.rb +334 -161
- data/spec/controllers/search_history_controller_spec.rb +6 -6
- data/spec/features/alternate_controller_spec.rb +4 -4
- data/spec/features/autocomplete_spec.rb +4 -2
- data/spec/features/bookmarks_spec.rb +10 -10
- data/spec/features/did_you_mean_spec.rb +7 -12
- data/spec/features/facets_spec.rb +29 -17
- data/spec/features/record_view_spec.rb +12 -18
- data/spec/features/search_context_spec.rb +6 -7
- data/spec/features/search_crawler_spec.rb +3 -5
- data/spec/features/search_filters_spec.rb +80 -80
- data/spec/features/search_formats_spec.rb +1 -1
- data/spec/features/search_history_spec.rb +6 -29
- data/spec/features/search_pagination_spec.rb +4 -2
- data/spec/features/search_results_spec.rb +14 -12
- data/spec/features/search_sort_spec.rb +2 -2
- data/spec/features/search_spec.rb +8 -9
- data/spec/features/sitelinks_search_box.rb +4 -4
- data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
- data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +97 -92
- data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +72 -67
- data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +2 -2
- data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +10 -0
- data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -5
- data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +10 -6
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +92 -0
- data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +29 -30
- data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +9 -2
- data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +56 -54
- data/spec/helpers/blacklight_helper_spec.rb +65 -150
- data/spec/helpers/catalog_helper_spec.rb +80 -96
- data/spec/i18n_spec.rb +18 -0
- data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +21 -13
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +13 -0
- data/spec/lib/blacklight/configuration/field_spec.rb +15 -0
- data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +148 -0
- data/spec/lib/blacklight/parameters_spec.rb +4 -2
- data/spec/lib/blacklight/search_state_spec.rb +53 -36
- data/spec/lib/blacklight_spec.rb +14 -15
- data/spec/lib/tasks/blacklight_task_spec.rb +4 -6
- data/spec/models/blacklight/configurable_spec.rb +24 -27
- data/spec/models/blacklight/configuration/context_spec.rb +9 -10
- data/spec/models/blacklight/configuration_spec.rb +248 -223
- data/spec/models/blacklight/document/active_model_shim_spec.rb +15 -6
- data/spec/models/blacklight/document/cache_key_spec.rb +9 -2
- data/spec/models/blacklight/document/dublin_core_spec.rb +17 -20
- data/spec/models/blacklight/document/email_spec.rb +10 -10
- data/spec/models/blacklight/document/sms_spec.rb +10 -10
- data/spec/models/blacklight/document_spec.rb +10 -22
- data/spec/models/blacklight/facet_paginator_spec.rb +40 -30
- data/spec/models/blacklight/icon_spec.rb +44 -0
- data/spec/models/blacklight/search_builder_spec.rb +41 -26
- data/spec/models/blacklight/solr/document_spec.rb +224 -216
- data/spec/models/blacklight/solr/facet_paginator_spec.rb +6 -4
- data/spec/models/blacklight/solr/repository_spec.rb +61 -46
- data/spec/models/blacklight/solr/request_spec.rb +17 -18
- data/spec/models/blacklight/solr/response/facets_spec.rb +58 -58
- data/spec/models/blacklight/solr/response/group_response_spec.rb +16 -22
- data/spec/models/blacklight/solr/response/group_spec.rb +18 -25
- data/spec/models/blacklight/solr/response_spec.rb +56 -55
- data/spec/models/blacklight/solr/search_builder_spec.rb +150 -164
- data/spec/models/blacklight/suggest/response_spec.rb +6 -4
- data/spec/models/blacklight/suggest_search_spec.rb +9 -16
- data/spec/models/blacklight/user_spec.rb +9 -11
- data/spec/models/bookmark_spec.rb +7 -6
- data/spec/models/record_mailer_spec.rb +23 -21
- data/spec/models/search_spec.rb +19 -18
- data/spec/models/solr_document_spec.rb +33 -5
- data/spec/presenters/blacklight/document_presenter_spec.rb +86 -0
- data/spec/presenters/blacklight/index_presenter_spec.rb +186 -0
- data/spec/presenters/blacklight/json_presenter_spec.rb +59 -0
- data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -0
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +79 -0
- data/spec/presenters/blacklight/show_presenter_spec.rb +333 -0
- data/spec/presenters/pipeline_spec.rb +18 -11
- data/spec/presenters/thumbnail_presenter_spec.rb +174 -0
- data/spec/routing/catalog_routing_spec.rb +13 -15
- data/spec/services/blacklight/search_service_spec.rb +488 -0
- data/spec/spec_helper.rb +20 -19
- data/spec/support/features/session_helpers.rb +4 -4
- data/spec/support/features.rb +1 -1
- data/spec/test_app_templates/Gemfile.extra +2 -4
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +12 -13
- data/spec/views/catalog/_constraints.html.erb_spec.rb +3 -6
- data/spec/views/catalog/_constraints_element.html.erb_spec.rb +17 -13
- data/spec/views/catalog/_document.html.erb_spec.rb +11 -11
- data/spec/views/catalog/_document_list.html.erb_spec.rb +2 -1
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +5 -5
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
- data/spec/views/catalog/_facets.html.erb_spec.rb +10 -12
- data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +14 -15
- data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +6 -9
- data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +7 -30
- data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
- data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +13 -14
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +6 -9
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +5 -5
- data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -2
- data/spec/views/catalog/_sort_widget.html.erb_spec.rb +3 -1
- data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +7 -9
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +12 -10
- data/spec/views/catalog/email_success.html.erb_spec.rb +8 -0
- data/spec/views/catalog/facet.html.erb_spec.rb +4 -3
- data/spec/views/catalog/facet.json.jbuilder_spec.rb +3 -2
- data/spec/views/catalog/index.atom.builder_spec.rb +11 -6
- data/spec/views/catalog/index.html.erb_spec.rb +6 -8
- data/spec/views/catalog/index.json.jbuilder_spec.rb +119 -26
- data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
- data/spec/views/catalog/show.html.erb_spec.rb +8 -8
- data/spec/views/catalog/show.json.jbuilder_spec.rb +40 -0
- data/spec/views/catalog/sms_success.html.erb_spec.rb +8 -0
- data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -7
- data/tasks/blacklight.rake +10 -8
- data/template.demo.rb +3 -11
- metadata +188 -189
- data/app/assets/javascripts/blacklight/autofocus.js +0 -16
- data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
- data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -135
- data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
- data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
- data/app/controllers/concerns/blacklight/search_helper.rb +0 -155
- data/app/controllers/concerns/blacklight/suggest.rb +0 -25
- data/app/controllers/saved_searches_controller.rb +0 -4
- data/app/controllers/suggest_controller.rb +0 -4
- data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
- data/app/helpers/blacklight/render_partials_helper.rb +0 -205
- data/app/helpers/blacklight_configuration_helper.rb +0 -4
- data/app/helpers/blacklight_url_helper.rb +0 -4
- data/app/helpers/component_helper.rb +0 -4
- data/app/helpers/facets_helper.rb +0 -4
- data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
- data/app/helpers/layout_helper.rb +0 -4
- data/app/helpers/render_constraints_helper.rb +0 -4
- data/app/helpers/search_history_constraints_helper.rb +0 -4
- data/app/helpers/suggest_helper.rb +0 -4
- data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
- data/app/views/_user_util_links.html.erb +0 -26
- data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
- data/app/views/catalog/_index_default.html.erb +0 -12
- data/app/views/catalog/_show_default.html.erb +0 -10
- data/app/views/catalog/_thumbnail_default.html.erb +0 -5
- data/app/views/saved_searches/index.html.erb +0 -32
- data/app/views/shared/_ajax_modal.html.erb +0 -6
- data/lib/generators/blacklight/solr4_generator.rb +0 -31
- data/lib/generators/blacklight/templates/config/jetty.yml +0 -13
- data/solr/conf/schema.xml +0 -629
- data/solr/conf/solrconfig.xml +0 -411
- data/spec/controllers/blacklight/search_helper_spec.rb +0 -470
- data/spec/controllers/saved_searches_controller_spec.rb +0 -32
- data/spec/controllers/suggest_controller_spec.rb +0 -17
- data/spec/features/saved_searches_spec.rb +0 -47
- data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
- data/spec/lib/blacklight/utils_spec.rb +0 -167
- data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
- data/spec/presenters/document_presenter_spec.rb +0 -438
- data/spec/presenters/index_presenter_spec.rb +0 -173
- data/spec/presenters/show_presenter_spec.rb +0 -313
- data/spec/support/backport_test.rb +0 -14
- /data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
- /data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
- /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
|
@@ -1,470 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# check the methods that do solr requests. Note that we are not testing if
|
|
4
|
-
# solr gives "correct" responses, as that's out of scope (it's a part of
|
|
5
|
-
# testing the solr code itself). We *are* testing if blacklight code sends
|
|
6
|
-
# queries to solr such that it gets appropriate results. When a user does a search,
|
|
7
|
-
# do we get data back from solr (i.e. did we properly configure blacklight code
|
|
8
|
-
# to talk with solr and get results)? when we do a document request, does
|
|
9
|
-
# blacklight code get a single document returned?)
|
|
10
|
-
#
|
|
11
|
-
describe Blacklight::SearchHelper do
|
|
12
|
-
|
|
13
|
-
# SearchHelper is a controller layer mixin, which depends
|
|
14
|
-
# on being mixed into a class which has #params (from Rails)
|
|
15
|
-
# and #blacklight_config
|
|
16
|
-
class SearchHelperTestClass
|
|
17
|
-
include Blacklight::SearchHelper
|
|
18
|
-
|
|
19
|
-
attr_accessor :blacklight_config
|
|
20
|
-
attr_accessor :repository
|
|
21
|
-
|
|
22
|
-
def initialize blacklight_config, conn
|
|
23
|
-
self.blacklight_config = blacklight_config
|
|
24
|
-
self.repository = Blacklight::Solr::Repository.new(blacklight_config)
|
|
25
|
-
self.repository.connection = conn
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def params
|
|
29
|
-
{}
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
subject { SearchHelperTestClass.new blacklight_config, blacklight_solr }
|
|
34
|
-
|
|
35
|
-
let(:blacklight_config) { Blacklight::Configuration.new }
|
|
36
|
-
let(:copy_of_catalog_config) { ::CatalogController.blacklight_config.deep_copy }
|
|
37
|
-
let(:blacklight_solr) { RSolr.connect(Blacklight.connection_config.except(:adapter)) }
|
|
38
|
-
|
|
39
|
-
before(:each) do
|
|
40
|
-
@all_docs_query = ''
|
|
41
|
-
@no_docs_query = 'zzzzzzzzzzzz'
|
|
42
|
-
@single_word_query = 'include'
|
|
43
|
-
@mult_word_query = 'tibetan history'
|
|
44
|
-
# f[format][]=Book&f[language_facet][]=English
|
|
45
|
-
@single_facet = {:format=>'Book'}
|
|
46
|
-
@multi_facets = {:format=>'Book', :language_facet=>'Tibetan'}
|
|
47
|
-
@bad_facet = {:format=>'666'}
|
|
48
|
-
@subject_search_params = {:commit=>"search", :search_field=>"subject", :action=>"index", :"controller"=>"catalog", :"rows"=>"10", :"q"=>"wome"}
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# SPECS FOR SEARCH RESULTS FOR QUERY
|
|
52
|
-
describe 'Search Results', :integration => true do
|
|
53
|
-
|
|
54
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
55
|
-
describe 'for a sample query returning results' do
|
|
56
|
-
|
|
57
|
-
before do
|
|
58
|
-
(@solr_response, @document_list) = subject.search_results(q: @all_docs_query)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it "uses the configured request handler" do
|
|
62
|
-
allow(blacklight_config).to receive(:default_solr_params).and_return({:qt => 'custom_request_handler'})
|
|
63
|
-
allow(blacklight_solr).to receive(:send_and_receive) do |path, params|
|
|
64
|
-
expect(path).to eq 'select'
|
|
65
|
-
expect(params[:params]['facet.field']).to eq ["format", "{!ex=pub_date_single}pub_date", "subject_topic_facet", "language_facet", "lc_1letter_facet", "subject_geo_facet", "subject_era_facet"]
|
|
66
|
-
expect(params[:params]["facet.query"]).to eq ["pub_date:[#{5.years.ago.year} TO *]", "pub_date:[#{10.years.ago.year} TO *]", "pub_date:[#{25.years.ago.year} TO *]"]
|
|
67
|
-
expect(params[:params]).to include('rows' => 10, 'qt'=>"custom_request_handler", 'q'=>"", "f.subject_topic_facet.facet.limit"=>21, 'sort'=>"score desc, pub_date_sort desc, title_sort asc")
|
|
68
|
-
end.and_return({'response'=>{'docs'=>[]}})
|
|
69
|
-
subject.search_results(q: @all_docs_query)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it 'has a @response.docs list of the same size as @document_list' do
|
|
73
|
-
expect(@solr_response.docs).to have(@document_list.length).docs
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
it 'has @response.docs list representing same documents as SolrDocuments in @document_list' do
|
|
77
|
-
@solr_response.docs.each_index do |index|
|
|
78
|
-
mash = @solr_response.docs[index]
|
|
79
|
-
solr_document = @document_list[index]
|
|
80
|
-
|
|
81
|
-
expect(Set.new(mash.keys)).to eq Set.new(solr_document.keys)
|
|
82
|
-
|
|
83
|
-
mash.keys.each do |key|
|
|
84
|
-
expect(mash[key]).to eq solr_document[key]
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
describe "for a query returning a grouped response" do
|
|
91
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
92
|
-
before do
|
|
93
|
-
blacklight_config.default_solr_params[:group] = true
|
|
94
|
-
blacklight_config.default_solr_params[:'group.field'] = 'pub_date_sort'
|
|
95
|
-
(@solr_response, @document_list) = subject.search_results(q: @all_docs_query)
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
it "has an empty document list" do
|
|
99
|
-
expect(@document_list).to be_empty
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
it "returns a grouped response" do
|
|
103
|
-
expect(@solr_response).to be_a_kind_of Blacklight::Solr::Response::GroupResponse
|
|
104
|
-
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
describe "for a query returning multiple groups", integration: true do
|
|
109
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
110
|
-
|
|
111
|
-
before do
|
|
112
|
-
allow(subject).to receive_messages grouped_key_for_results: 'title_sort'
|
|
113
|
-
blacklight_config.default_solr_params[:group] = true
|
|
114
|
-
blacklight_config.default_solr_params[:'group.field'] = ['pub_date_sort', 'title_sort']
|
|
115
|
-
(@solr_response, @document_list) = subject.search_results(q: @all_docs_query)
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
it "has an empty document list" do
|
|
119
|
-
expect(@document_list).to be_empty
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
it "returns a grouped response" do
|
|
123
|
-
expect(@solr_response).to be_a_kind_of Blacklight::Solr::Response::GroupResponse
|
|
124
|
-
expect(@solr_response.group_field).to eq "title_sort"
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
describe "for All Docs Query and One Facet" do
|
|
130
|
-
it 'has results' do
|
|
131
|
-
(solr_response, document_list) = subject.search_results(q: @all_docs_query, f: @single_facet)
|
|
132
|
-
expect(solr_response.docs).to have(document_list.size).results
|
|
133
|
-
expect(solr_response.docs).to have_at_least(1).result
|
|
134
|
-
end
|
|
135
|
-
# TODO: check that number of these results < number of results for all docs query
|
|
136
|
-
# BUT can't: num docs isn't total, it's the num docs in the single SOLR response (e.g. 10)
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
describe "for Query Without Results and No Facet" do
|
|
140
|
-
it 'has no results and not raise error' do
|
|
141
|
-
(solr_response, document_list) = subject.search_results(q: @no_docs_query)
|
|
142
|
-
expect(document_list).to have(0).results
|
|
143
|
-
expect(solr_response.docs).to have(0).results
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
describe "for Query Without Results and One Facet" do
|
|
148
|
-
it 'has no results and not raise error' do
|
|
149
|
-
(solr_response, document_list) = subject.search_results(q: @no_docs_query, f: @single_facet)
|
|
150
|
-
expect(document_list).to have(0).results
|
|
151
|
-
expect(solr_response.docs).to have(0).results
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
describe "for All Docs Query and Bad Facet" do
|
|
156
|
-
it 'has no results and not raise error' do
|
|
157
|
-
(solr_response, document_list) = subject.search_results(q: @all_docs_query, f: @bad_facet)
|
|
158
|
-
expect(document_list).to have(0).results
|
|
159
|
-
expect(solr_response.docs).to have(0).results
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
end # Search Results
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
# SPECS FOR SEARCH RESULTS FOR FACETS
|
|
166
|
-
describe 'Facets in Search Results for All Docs Query', :integration => true do
|
|
167
|
-
|
|
168
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
169
|
-
|
|
170
|
-
before do
|
|
171
|
-
(solr_response, document_list) = subject.search_results(q: @all_docs_query)
|
|
172
|
-
@facets = solr_response.aggregations
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
it 'has more than one facet' do
|
|
176
|
-
expect(@facets).to have_at_least(1).facet
|
|
177
|
-
end
|
|
178
|
-
it 'has all facets specified in initializer' do
|
|
179
|
-
expect(@facets.keys).to include *blacklight_config.facet_fields.keys
|
|
180
|
-
expect(@facets.none? { |k, v| v.nil? }).to eq true
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
it 'has at least one value for each facet' do
|
|
184
|
-
@facets.each do |key, facet|
|
|
185
|
-
expect(facet.items).to have_at_least(1).hit
|
|
186
|
-
end
|
|
187
|
-
end
|
|
188
|
-
it 'has multiple values for at least one facet' do
|
|
189
|
-
has_mult_values = false
|
|
190
|
-
@facets.each do |key, facet|
|
|
191
|
-
if facet.items.size > 1
|
|
192
|
-
has_mult_values = true
|
|
193
|
-
break
|
|
194
|
-
end
|
|
195
|
-
end
|
|
196
|
-
expect(has_mult_values).to eq true
|
|
197
|
-
end
|
|
198
|
-
it 'has all value counts > 0' do
|
|
199
|
-
@facets.each do |key, facet|
|
|
200
|
-
facet.items.each do |facet_vals|
|
|
201
|
-
expect(facet_vals.hits).to be > 0
|
|
202
|
-
end
|
|
203
|
-
end
|
|
204
|
-
end
|
|
205
|
-
end # facet specs
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
# SPECS FOR SEARCH RESULTS FOR PAGING
|
|
209
|
-
describe 'Paging', :integration => true do
|
|
210
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
211
|
-
|
|
212
|
-
it 'starts with first results by default' do
|
|
213
|
-
(solr_response, document_list) = subject.search_results(q: @all_docs_query)
|
|
214
|
-
expect(solr_response.params[:start].to_i).to eq 0
|
|
215
|
-
end
|
|
216
|
-
it 'has number of results (per page) set in initializer, by default' do
|
|
217
|
-
(solr_response, document_list) = subject.search_results(q: @all_docs_query)
|
|
218
|
-
expect(solr_response.docs).to have(blacklight_config[:default_solr_params][:rows]).items
|
|
219
|
-
expect(document_list).to have(blacklight_config[:default_solr_params][:rows]).items
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
it 'gets number of results per page requested' do
|
|
223
|
-
num_results = 3 # non-default value
|
|
224
|
-
(solr_response1, document_list1) = subject.search_results(q: @all_docs_query, per_page: num_results)
|
|
225
|
-
expect(document_list1).to have(num_results).docs
|
|
226
|
-
expect(solr_response1.docs).to have(num_results).docs
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
it 'gets number of rows requested' do
|
|
230
|
-
num_results = 4 # non-default value
|
|
231
|
-
(solr_response1, document_list1) = subject.search_results(q: @all_docs_query, rows: num_results)
|
|
232
|
-
expect(document_list1).to have(num_results).docs
|
|
233
|
-
expect(solr_response1.docs).to have(num_results).docs
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
it 'skips appropriate number of results when requested - default per page' do
|
|
237
|
-
page = 3
|
|
238
|
-
(solr_response2, document_list2) = subject.search_results(q: @all_docs_query, page: page)
|
|
239
|
-
expect(solr_response2.params[:start].to_i).to eq blacklight_config[:default_solr_params][:rows] * (page-1)
|
|
240
|
-
end
|
|
241
|
-
it 'skips appropriate number of results when requested - non-default per page' do
|
|
242
|
-
page = 3
|
|
243
|
-
num_results = 3
|
|
244
|
-
(solr_response2a, document_list2a) = subject.search_results(q: @all_docs_query, per_page: num_results, page: page)
|
|
245
|
-
expect(solr_response2a.params[:start].to_i).to eq num_results * (page-1)
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
it 'has no results when prompted for page after last result' do
|
|
249
|
-
big = 5000
|
|
250
|
-
(solr_response3, document_list3) = subject.search_results(q: @all_docs_query, rows: big, page: big)
|
|
251
|
-
expect(document_list3).to have(0).docs
|
|
252
|
-
expect(solr_response3.docs).to have(0).docs
|
|
253
|
-
end
|
|
254
|
-
|
|
255
|
-
it 'shows first results when prompted for page before first result' do
|
|
256
|
-
# FIXME: should it show first results, or should it throw an error for view to deal w?
|
|
257
|
-
# Solr throws an error for a negative start value
|
|
258
|
-
(solr_response4, document_list4) = subject.search_results(q: @all_docs_query, page: '-1')
|
|
259
|
-
expect(solr_response4.params[:start].to_i).to eq 0
|
|
260
|
-
end
|
|
261
|
-
it 'has results available when asked for more than are in response' do
|
|
262
|
-
big = 5000
|
|
263
|
-
(solr_response5, document_list5) = subject.search_results(q: @all_docs_query, rows: big, page: 1)
|
|
264
|
-
expect(solr_response5.docs).to have(document_list5.length).docs
|
|
265
|
-
expect(solr_response5.docs).to have_at_least(1).doc
|
|
266
|
-
end
|
|
267
|
-
|
|
268
|
-
end # page specs
|
|
269
|
-
|
|
270
|
-
# SPECS FOR SINGLE DOCUMENT REQUESTS
|
|
271
|
-
describe 'Get Document By Id', :integration => true do
|
|
272
|
-
before do
|
|
273
|
-
@doc_id = '2007020969'
|
|
274
|
-
@bad_id = "redrum"
|
|
275
|
-
@response2, @document = subject.fetch(@doc_id)
|
|
276
|
-
end
|
|
277
|
-
|
|
278
|
-
it "raises Blacklight::RecordNotFound for an unknown id" do
|
|
279
|
-
expect {
|
|
280
|
-
subject.fetch(@bad_id)
|
|
281
|
-
}.to raise_error(Blacklight::Exceptions::RecordNotFound)
|
|
282
|
-
end
|
|
283
|
-
|
|
284
|
-
it "uses a provided document request handler" do
|
|
285
|
-
allow(blacklight_config).to receive_messages(:document_solr_request_handler => 'document')
|
|
286
|
-
allow(blacklight_solr).to receive(:send_and_receive).with('select', kind_of(Hash)).and_return({'response'=>{'docs'=>[]}})
|
|
287
|
-
expect { subject.fetch(@doc_id)}.to raise_error Blacklight::Exceptions::RecordNotFound
|
|
288
|
-
end
|
|
289
|
-
|
|
290
|
-
it "uses a provided document solr path" do
|
|
291
|
-
allow(blacklight_config).to receive_messages(:document_solr_path => 'get')
|
|
292
|
-
allow(blacklight_solr).to receive(:send_and_receive).with('get', kind_of(Hash)).and_return({'response'=>{'docs'=>[]}})
|
|
293
|
-
expect { subject.fetch(@doc_id)}.to raise_error Blacklight::Exceptions::RecordNotFound
|
|
294
|
-
end
|
|
295
|
-
|
|
296
|
-
it "has a non-nil result for a known id" do
|
|
297
|
-
expect(@document).not_to be_nil
|
|
298
|
-
end
|
|
299
|
-
it "has a single document in the response for a known id" do
|
|
300
|
-
expect(@response2.docs.size).to eq 1
|
|
301
|
-
end
|
|
302
|
-
it 'has the expected value in the id field' do
|
|
303
|
-
expect(@document.id).to eq @doc_id
|
|
304
|
-
end
|
|
305
|
-
it 'has non-nil values for required fields set in initializer' do
|
|
306
|
-
expect(@document.fetch(blacklight_config.view_config(:show).display_type_field)).not_to be_nil
|
|
307
|
-
end
|
|
308
|
-
end
|
|
309
|
-
|
|
310
|
-
# SPECS FOR SPELLING SUGGESTIONS VIA SEARCH
|
|
311
|
-
describe "Searches should return spelling suggestions", :integration => true do
|
|
312
|
-
it 'search results for just-poor-enough-query term should have (multiple) spelling suggestions' do
|
|
313
|
-
(solr_response, document_list) = subject.search_results(q: 'boo')
|
|
314
|
-
expect(solr_response.spelling.words).to include('bon')
|
|
315
|
-
expect(solr_response.spelling.words).to include('bod') #for multiple suggestions
|
|
316
|
-
end
|
|
317
|
-
|
|
318
|
-
it 'search results for just-poor-enough-query term should have multiple spelling suggestions' do
|
|
319
|
-
(solr_response, document_list) = subject.search_results(q: 'politica')
|
|
320
|
-
expect(solr_response.spelling.words).to include('policy') # less freq
|
|
321
|
-
expect(solr_response.spelling.words).to include('politics') # more freq
|
|
322
|
-
expect(solr_response.spelling.words).to include('political') # more freq
|
|
323
|
-
=begin
|
|
324
|
-
# when we can have multiple suggestions
|
|
325
|
-
expect(solr_response.spelling.words).to_not include('policy') # less freq
|
|
326
|
-
solr_response.spelling.words).to include('politics') # more freq
|
|
327
|
-
solr_response.spelling.words).to include('political') # more freq
|
|
328
|
-
=end
|
|
329
|
-
end
|
|
330
|
-
|
|
331
|
-
it "title search results for just-poor-enough query term should have spelling suggestions" do
|
|
332
|
-
(solr_response, document_list) = subject.search_results(q: 'yehudiyam', qt: 'search', :"spellcheck.dictionary" => "title")
|
|
333
|
-
expect(solr_response.spelling.words).to include('yehudiyim')
|
|
334
|
-
end
|
|
335
|
-
|
|
336
|
-
it "author search results for just-poor-enough-query term should have spelling suggestions" do
|
|
337
|
-
(solr_response, document_list) = subject.search_results(q: 'shirma', qt: 'search', :"spellcheck.dictionary" => "author")
|
|
338
|
-
expect(solr_response.spelling.words).to include('sharma')
|
|
339
|
-
end
|
|
340
|
-
|
|
341
|
-
it "subject search results for just-poor-enough-query term should have spelling suggestions" do
|
|
342
|
-
(solr_response, document_list) = subject.search_results(q: 'wome', qt: 'search', :"spellcheck.dictionary" => "subject")
|
|
343
|
-
expect(solr_response.spelling.words).to include('women')
|
|
344
|
-
end
|
|
345
|
-
|
|
346
|
-
it 'search results for multiple terms query with just-poor-enough-terms should have spelling suggestions for each term' do
|
|
347
|
-
skip
|
|
348
|
-
# get_spelling_suggestion("histo politica").should_not be_nil
|
|
349
|
-
end
|
|
350
|
-
|
|
351
|
-
end
|
|
352
|
-
|
|
353
|
-
describe "facet_limit_for" do
|
|
354
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
355
|
-
|
|
356
|
-
it "returns specified value for facet_field specified" do
|
|
357
|
-
expect(subject.facet_limit_for("subject_topic_facet")).to eq blacklight_config.facet_fields["subject_topic_facet"].limit
|
|
358
|
-
end
|
|
359
|
-
|
|
360
|
-
it "facet_limit_hash should return hash with key being facet_field and value being configured limit" do
|
|
361
|
-
# facet_limit_hash has been removed from solrhelper in refactor. should it go back?
|
|
362
|
-
skip "facet_limit_hash has been removed from solrhelper in refactor. should it go back?"
|
|
363
|
-
expect(subject.facet_limit_hash).to eq blacklight_config[:facet][:limits]
|
|
364
|
-
end
|
|
365
|
-
|
|
366
|
-
it "handles no facet_limits in config" do
|
|
367
|
-
blacklight_config.facet_fields = {}
|
|
368
|
-
expect(subject.facet_limit_for("subject_topic_facet")).to be_nil
|
|
369
|
-
end
|
|
370
|
-
|
|
371
|
-
describe "for 'true' configured values" do
|
|
372
|
-
let(:blacklight_config) do
|
|
373
|
-
Blacklight::Configuration.new do |config|
|
|
374
|
-
config.add_facet_field "language_facet", limit: true
|
|
375
|
-
end
|
|
376
|
-
end
|
|
377
|
-
it "returns nil if no @response available" do
|
|
378
|
-
expect(subject.facet_limit_for("some_unknown_field")).to be_nil
|
|
379
|
-
end
|
|
380
|
-
it "gets from @response facet.limit if available" do
|
|
381
|
-
@response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: nil) })
|
|
382
|
-
subject.instance_variable_set(:@response, @response)
|
|
383
|
-
blacklight_config.facet_fields['language_facet'].limit = 10
|
|
384
|
-
expect(subject.facet_limit_for("language_facet")).to eq 10
|
|
385
|
-
end
|
|
386
|
-
it "gets the limit from the facet field in @response" do
|
|
387
|
-
@response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: 16) })
|
|
388
|
-
subject.instance_variable_set(:@response, @response)
|
|
389
|
-
expect(subject.facet_limit_for("language_facet")).to eq 15
|
|
390
|
-
end
|
|
391
|
-
it "defaults to 10" do
|
|
392
|
-
expect(subject.facet_limit_for("language_facet")).to eq 10
|
|
393
|
-
end
|
|
394
|
-
end
|
|
395
|
-
|
|
396
|
-
context 'for facet fields with a key that is different from the field name' do
|
|
397
|
-
let(:blacklight_config) do
|
|
398
|
-
Blacklight::Configuration.new do |config|
|
|
399
|
-
config.add_facet_field 'some_key', field: 'x', limit: true
|
|
400
|
-
end
|
|
401
|
-
end
|
|
402
|
-
|
|
403
|
-
it 'gets the limit from the facet field in the @response' do
|
|
404
|
-
response = instance_double(Blacklight::Solr::Response, aggregations: { 'x' => double(limit: 16) })
|
|
405
|
-
subject.instance_variable_set(:@response, response)
|
|
406
|
-
expect(subject.facet_limit_for('some_key')).to eq 15
|
|
407
|
-
end
|
|
408
|
-
end
|
|
409
|
-
end
|
|
410
|
-
|
|
411
|
-
# TODO: more complex queries! phrases, offset into search results, non-latin, boosting(?)
|
|
412
|
-
# search within query building (?)
|
|
413
|
-
# search + facets (search done first; facet selected first, both selected)
|
|
414
|
-
|
|
415
|
-
# TODO: maybe eventually check other types of solr requests
|
|
416
|
-
# more like this
|
|
417
|
-
# nearby on shelf
|
|
418
|
-
it "raises a Blacklight exception if RSolr can't connect to the Solr instance" do
|
|
419
|
-
allow(blacklight_solr).to receive(:send_and_receive).and_raise(Errno::ECONNREFUSED)
|
|
420
|
-
expect { subject.repository.search }.to raise_exception(/Unable to connect to Solr instance/)
|
|
421
|
-
end
|
|
422
|
-
|
|
423
|
-
describe "grouped_key_for_results" do
|
|
424
|
-
it "pulls the grouped key out of the config" do
|
|
425
|
-
blacklight_config.index.group = 'xyz'
|
|
426
|
-
expect(subject.grouped_key_for_results).to eq('xyz')
|
|
427
|
-
end
|
|
428
|
-
end
|
|
429
|
-
|
|
430
|
-
describe "#get_previous_and_next_documents_for_search" do
|
|
431
|
-
let(:pre_query) { SearchHelperTestClass.new blacklight_config, blacklight_solr }
|
|
432
|
-
before do
|
|
433
|
-
@full_response, @all_docs = pre_query.search_results(q: '', per_page: '100')
|
|
434
|
-
end
|
|
435
|
-
|
|
436
|
-
it "returns the previous and next documents for a search" do
|
|
437
|
-
response, docs = subject.get_previous_and_next_documents_for_search(4, :q => '')
|
|
438
|
-
|
|
439
|
-
expect(docs.first.id).to eq @all_docs[3].id
|
|
440
|
-
expect(docs.last.id).to eq @all_docs[5].id
|
|
441
|
-
end
|
|
442
|
-
|
|
443
|
-
it "returns only the next document if the counter is 0" do
|
|
444
|
-
response, docs = subject.get_previous_and_next_documents_for_search(0, :q => '')
|
|
445
|
-
|
|
446
|
-
expect(docs.first).to be_nil
|
|
447
|
-
expect(docs.last.id).to eq @all_docs[1].id
|
|
448
|
-
end
|
|
449
|
-
|
|
450
|
-
it "returns only the previous document if the counter is the total number of documents" do
|
|
451
|
-
response, docs = subject.get_previous_and_next_documents_for_search(@full_response.total - 1, :q => '')
|
|
452
|
-
expect(docs.first.id).to eq @all_docs.slice(-2).id
|
|
453
|
-
expect(docs.last).to be_nil
|
|
454
|
-
end
|
|
455
|
-
|
|
456
|
-
it "returns an array of nil values if there is only one result" do
|
|
457
|
-
response, docs = subject.get_previous_and_next_documents_for_search(0, :q => 'id:2007020969')
|
|
458
|
-
expect(docs.last).to be_nil
|
|
459
|
-
expect(docs.first).to be_nil
|
|
460
|
-
end
|
|
461
|
-
|
|
462
|
-
it 'allows the query parameters to be customized using configuration' do
|
|
463
|
-
blacklight_config.document_pagination_params[:fl] = 'id,format'
|
|
464
|
-
|
|
465
|
-
response, docs = subject.get_previous_and_next_documents_for_search(0, :q => '')
|
|
466
|
-
|
|
467
|
-
expect(docs.last.to_h).to eq @all_docs[1].to_h.slice('id', 'format')
|
|
468
|
-
end
|
|
469
|
-
end
|
|
470
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe SavedSearchesController do
|
|
4
|
-
routes { Blacklight::Engine.routes }
|
|
5
|
-
|
|
6
|
-
before(:all) do
|
|
7
|
-
@one = Search.create
|
|
8
|
-
@two = Search.create
|
|
9
|
-
@three = Search.create
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
before(:each) do
|
|
13
|
-
@user = User.create! :email => 'test@example.com', :password => 'abcd12345', :password_confirmation => 'abcd12345'
|
|
14
|
-
sign_in @user
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
describe "save" do
|
|
18
|
-
it "lets you save a search" do
|
|
19
|
-
request.env["HTTP_REFERER"] = "where_i_came_from"
|
|
20
|
-
session[:history] = [@one.id]
|
|
21
|
-
post :save, params: { id: @one.id }
|
|
22
|
-
expect(response).to redirect_to "where_i_came_from"
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "does not let you save a search that isn't in your search history" do
|
|
26
|
-
session[:history] = [@one.id]
|
|
27
|
-
expect {
|
|
28
|
-
post :save, params: { id: @two.id }
|
|
29
|
-
}.to raise_error ActiveRecord::RecordNotFound
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe SuggestController do
|
|
4
|
-
routes { Blacklight::Engine.routes }
|
|
5
|
-
describe 'GET index' do
|
|
6
|
-
it 'returns JSON' do
|
|
7
|
-
get :index, params: { format: 'json' }
|
|
8
|
-
expect(response.body).to eq [].to_json
|
|
9
|
-
end
|
|
10
|
-
it 'returns suggestions' do
|
|
11
|
-
get :index, params: { format: 'json', q: 'new' }
|
|
12
|
-
json = JSON.parse(response.body)
|
|
13
|
-
expect(json.count).to eq 3
|
|
14
|
-
expect(json.first['term']).to eq 'new jersey'
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe "Saved Searches" do
|
|
4
|
-
before do
|
|
5
|
-
sign_in 'user1'
|
|
6
|
-
visit root_path
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it "is empty" do
|
|
10
|
-
click_link 'Saved Searches'
|
|
11
|
-
expect(page).to have_content 'You have no saved searches'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
describe "with a saved search 'book'" do
|
|
15
|
-
before do
|
|
16
|
-
fill_in "q", with: 'book'
|
|
17
|
-
click_button 'search'
|
|
18
|
-
click_link "History"
|
|
19
|
-
click_button "save"
|
|
20
|
-
click_link 'Saved Searches'
|
|
21
|
-
end
|
|
22
|
-
it "shows saved searches" do
|
|
23
|
-
expect(page).to have_content 'Your saved searches'
|
|
24
|
-
expect(page).to have_content 'book'
|
|
25
|
-
end
|
|
26
|
-
it "deletes saved searches" do
|
|
27
|
-
click_button 'delete'
|
|
28
|
-
expect(page).to have_content 'Successfully removed that saved search.'
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
describe "and a saved search 'dang'" do
|
|
32
|
-
before do
|
|
33
|
-
visit root_path
|
|
34
|
-
fill_in "q", with: 'dang'
|
|
35
|
-
click_button 'search'
|
|
36
|
-
click_link "History"
|
|
37
|
-
click_button "save"
|
|
38
|
-
click_link 'Saved Searches'
|
|
39
|
-
end
|
|
40
|
-
it "clears the searhes" do
|
|
41
|
-
click_link "Clear Saved Searches"
|
|
42
|
-
expect(page).to have_content 'Cleared your saved searches.'
|
|
43
|
-
expect(page).to have_content 'You have no saved searches'
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe Blacklight::DeprecatedUrlHelperBehavior do
|
|
4
|
-
around do |test|
|
|
5
|
-
Deprecation.silence(described_class) do
|
|
6
|
-
test.call
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
let(:parameter_class) { ActionController::Parameters }
|
|
11
|
-
let(:search_state) { Blacklight::SearchState.new(params, blacklight_config) }
|
|
12
|
-
let(:params) { parameter_class.new }
|
|
13
|
-
let(:blacklight_config) { Blacklight::Configuration.new }
|
|
14
|
-
|
|
15
|
-
before do
|
|
16
|
-
allow(helper).to receive(:search_state).and_return(search_state)
|
|
17
|
-
allow(helper).to receive(:params).and_return(params)
|
|
18
|
-
allow(helper).to receive(:blacklight_config).and_return(blacklight_config)
|
|
19
|
-
allow(controller).to receive(:search_state_class).and_return(Blacklight::SearchState)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
describe '#params_for_search' do
|
|
23
|
-
it 'passes through to the search state' do
|
|
24
|
-
expect(helper.params_for_search).to eq search_state.params_for_search
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it 'passes arguments through to the search state' do
|
|
28
|
-
expect(helper.params_for_search(merge: 1)).to eq search_state.params_for_search(merge: 1)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it 'generates a search state for the source parameters' do
|
|
32
|
-
expect(helper.params_for_search(parameter_class.new(source: 1), { merge: 1 })).to include merge: 1, source: 1
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
describe '#sanitize_search_params' do
|
|
37
|
-
it 'passes through to the parameter sanitizer' do
|
|
38
|
-
expect(helper.sanitize_search_params(a: 1)).to eq Blacklight::Parameters.sanitize(a: 1)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
describe '#reset_search_params' do
|
|
43
|
-
let(:source_parameters) { parameter_class.new page: 1, counter: 10 }
|
|
44
|
-
it 'resets the current page and counter' do
|
|
45
|
-
expect(helper.reset_search_params(source_parameters)).to be_blank
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
describe '#add_facet_params' do
|
|
50
|
-
before do
|
|
51
|
-
blacklight_config.add_facet_field 'x'
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
let(:field) { blacklight_config.facet_fields['x'] }
|
|
55
|
-
let(:item) { true }
|
|
56
|
-
|
|
57
|
-
it 'passes through to the search state' do
|
|
58
|
-
expect(helper.add_facet_params(field, item)).to eq search_state.add_facet_params(field, item)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
context "with source_parameters" do
|
|
62
|
-
let(:source_parameters) { parameter_class.new source: 1 }
|
|
63
|
-
it 'generates a search state for the source parameters' do
|
|
64
|
-
expect(helper.add_facet_params(field, item, source_parameters)).to include source: 1
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
describe '#add_facet_params_and_redirect' do
|
|
70
|
-
before do
|
|
71
|
-
blacklight_config.add_facet_field 'x'
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
let(:field) { blacklight_config.facet_fields['x'] }
|
|
75
|
-
let(:item) { true }
|
|
76
|
-
|
|
77
|
-
it 'passes through to the search state' do
|
|
78
|
-
expect(helper.add_facet_params_and_redirect(field, item)).to eq search_state.add_facet_params_and_redirect(field, item)
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
describe '#remove_facet_params' do
|
|
83
|
-
before do
|
|
84
|
-
blacklight_config.add_facet_field 'x'
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
let(:field) { blacklight_config.facet_fields['x'] }
|
|
88
|
-
let(:item) { true }
|
|
89
|
-
|
|
90
|
-
it 'passes through to the search state' do
|
|
91
|
-
expect(helper.remove_facet_params(field, item)).to eq search_state.remove_facet_params(field, item)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
context "with source_parameters" do
|
|
95
|
-
let(:source_parameters) { parameter_class.new source: 1 }
|
|
96
|
-
it 'generates a search state for the source parameters' do
|
|
97
|
-
expect(helper.remove_facet_params(field, item, source_parameters)).to include source: 1
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
end
|