blacklight 6.24.0 → 7.0.0.rc1
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/.gitignore +1 -0
- data/.npmignore +23 -0
- data/.rubocop.yml +15 -3
- data/.rubocop_todo.yml +242 -379
- data/.solr_wrapper.yml +1 -1
- data/.travis.yml +20 -24
- data/Gemfile +1 -4
- data/README.md +21 -4
- data/Rakefile +1 -2
- data/VERSION +1 -1
- 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 +496 -56
- data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +3 -1
- 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 +74 -92
- data/app/assets/stylesheets/blacklight/_header.scss +35 -48
- data/app/assets/stylesheets/blacklight/_icons.scss +29 -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_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/builders/blacklight/action_builder.rb +56 -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 +20 -37
- data/app/controllers/concerns/blacklight/catalog.rb +254 -213
- data/app/controllers/concerns/blacklight/controller.rb +117 -133
- data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
- data/app/controllers/concerns/blacklight/search_context.rb +10 -14
- data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
- data/app/controllers/concerns/blacklight/token_based_user.rb +6 -10
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +32 -118
- data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
- data/app/helpers/blacklight/component_helper_behavior.rb +19 -19
- data/app/helpers/blacklight/configuration_helper_behavior.rb +25 -54
- data/app/helpers/blacklight/facets_helper_behavior.rb +40 -39
- data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
- data/app/helpers/blacklight/icon_helper_behavior.rb +16 -0
- data/app/helpers/blacklight/layout_helper_behavior.rb +3 -10
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +6 -6
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +18 -11
- data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
- data/app/helpers/blacklight/url_helper_behavior.rb +21 -27
- data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
- data/app/javascript/blacklight/autofocus.js +20 -0
- data/app/javascript/blacklight/bookmark_toggle.js +25 -0
- data/app/javascript/blacklight/checkbox_submit.js +133 -0
- data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
- data/app/javascript/blacklight/core.js +39 -0
- data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
- data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +63 -63
- data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -2
- data/app/models/blacklight/facet_paginator.rb +3 -3
- data/app/models/blacklight/icon.rb +53 -0
- data/app/models/blacklight/solr/facet_paginator.rb +3 -3
- data/app/models/blacklight/suggest_search.rb +15 -4
- data/app/models/bookmark.rb +4 -9
- data/app/models/concerns/blacklight/configurable.rb +13 -13
- data/app/models/concerns/blacklight/document.rb +8 -42
- data/app/models/concerns/blacklight/document/active_model_shim.rb +8 -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/solr/document.rb +7 -8
- data/app/models/concerns/blacklight/suggest/response.rb +3 -5
- data/app/models/concerns/blacklight/user.rb +6 -6
- data/app/models/record_mailer.rb +5 -6
- data/app/models/search.rb +4 -7
- data/app/presenters/blacklight/field_presenter.rb +5 -5
- data/app/presenters/blacklight/index_presenter.rb +34 -71
- data/app/presenters/blacklight/json_presenter.rb +7 -4
- data/app/presenters/blacklight/link_alternate_presenter.rb +1 -1
- data/app/presenters/blacklight/rendering/abstract_step.rb +5 -5
- data/app/presenters/blacklight/rendering/helper_method.rb +8 -8
- data/app/presenters/blacklight/rendering/join.rb +3 -3
- data/app/presenters/blacklight/rendering/link_to_facet.rb +19 -19
- data/app/presenters/blacklight/rendering/microdata.rb +3 -3
- data/app/presenters/blacklight/rendering/pipeline.rb +5 -5
- data/app/presenters/blacklight/search_bar_presenter.rb +37 -0
- data/app/presenters/blacklight/show_presenter.rb +20 -69
- data/app/presenters/blacklight/thumbnail_presenter.rb +72 -0
- data/app/services/blacklight/document_factory.rb +11 -0
- data/app/services/blacklight/field_retriever.rb +24 -24
- data/app/services/blacklight/search_service.rb +154 -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 +2 -2
- data/app/views/catalog/_bookmark_control.html.erb +26 -10
- data/app/views/catalog/_citation.html.erb +18 -23
- data/app/views/catalog/_constraints.html.erb +5 -8
- data/app/views/catalog/_constraints_element.html.erb +6 -6
- data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +2 -2
- data/app/views/catalog/_document.html.erb +5 -3
- data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +0 -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 +3 -3
- data/app/views/catalog/_facet_layout.html.erb +5 -7
- data/app/views/catalog/_facet_limit.html.erb +3 -2
- data/app/views/catalog/_facet_pagination.html.erb +10 -10
- data/app/views/catalog/_facet_pivot.html.erb +2 -2
- data/app/views/catalog/_facets.html.erb +8 -12
- data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +0 -0
- data/app/views/catalog/_home_text.html.erb +32 -36
- data/app/views/catalog/_index.html.erb +12 -0
- data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +2 -2
- 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/_search_form.html.erb +12 -8
- data/app/views/catalog/_search_header.html.erb +0 -3
- data/app/views/catalog/_search_results.html.erb +4 -0
- data/app/views/catalog/_show.html.erb +10 -0
- data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
- data/app/views/catalog/_show_main_content.html.erb +4 -4
- data/app/views/catalog/_show_sidebar.html.erb +3 -3
- data/app/views/catalog/_show_tools.html.erb +9 -11
- 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/citation.html.erb +1 -1
- data/app/views/catalog/citation.js.erb +9 -1
- data/app/views/catalog/email.html.erb +5 -5
- data/app/views/catalog/email_success.html.erb +11 -9
- data/app/views/catalog/facet.html.erb +5 -6
- data/app/views/catalog/index.atom.builder +10 -15
- data/app/views/catalog/index.html.erb +9 -11
- data/app/views/catalog/index.json.jbuilder +65 -3
- data/app/views/catalog/index.rss.builder +5 -5
- data/app/views/catalog/opensearch.xml.builder +10 -10
- data/app/views/catalog/show.html.erb +11 -6
- data/app/views/catalog/sms.html.erb +2 -3
- data/app/views/catalog/sms_success.html.erb +11 -10
- 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 +4 -4
- data/app/views/kaminari/blacklight/_page.html.erb +3 -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.html.erb +14 -41
- data/app/views/layouts/blacklight/base.html.erb +43 -0
- data/app/views/layouts/catalog_result.html.erb +11 -0
- data/app/views/search_history/index.html.erb +16 -21
- data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
- 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/locales/blacklight.de.yml +0 -30
- data/config/locales/blacklight.en.yml +1 -27
- data/config/locales/blacklight.es.yml +0 -30
- data/config/locales/blacklight.fr.yml +0 -30
- data/config/locales/blacklight.hu.yml +210 -0
- data/config/locales/blacklight.it.yml +0 -30
- data/config/locales/blacklight.nl.yml +210 -0
- data/config/locales/blacklight.pt-BR.yml +6 -32
- data/config/locales/blacklight.sq.yml +1 -28
- data/config/locales/blacklight.zh.yml +0 -25
- data/config/routes.rb +3 -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.rb +4 -5
- data/lib/blacklight/abstract_repository.rb +9 -21
- data/lib/blacklight/configuration.rb +82 -89
- data/lib/blacklight/configuration/context.rb +1 -1
- data/lib/blacklight/configuration/facet_field.rb +16 -9
- data/lib/blacklight/configuration/field.rb +32 -3
- data/lib/blacklight/configuration/fields.rb +41 -48
- 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/engine.rb +6 -10
- data/lib/blacklight/exceptions.rb +4 -7
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +107 -0
- data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
- data/lib/blacklight/parameters.rb +1 -1
- data/lib/blacklight/routes/searchable.rb +1 -0
- data/lib/blacklight/search_builder.rb +26 -35
- data/lib/blacklight/search_state.rb +8 -8
- data/lib/blacklight/solr/repository.rb +3 -36
- data/lib/blacklight/solr/request.rb +1 -1
- data/lib/blacklight/solr/response.rb +29 -30
- 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 +3 -3
- data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
- data/lib/blacklight/version.rb +1 -1
- data/lib/generators/blacklight/assets_generator.rb +8 -8
- 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 -21
- data/lib/generators/blacklight/search_builder_generator.rb +1 -1
- data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +4 -6
- data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
- data/lib/generators/blacklight/templates/blacklight.scss +0 -2
- data/lib/generators/blacklight/templates/catalog_controller.rb +52 -51
- 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/lib/generators/blacklight/templates/solr/conf/schema.xml +390 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -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
- data/lib/generators/blacklight/test_support_generator.rb +10 -10
- data/lib/generators/blacklight/user_generator.rb +3 -6
- data/lib/railties/blacklight.rake +19 -14
- data/package-lock.json +2057 -0
- data/package.json +28 -0
- data/spec/controllers/alternate_controller_spec.rb +1 -1
- data/spec/controllers/application_controller_spec.rb +1 -1
- data/spec/controllers/blacklight/base_spec.rb +1 -1
- data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
- data/spec/controllers/blacklight/facet_spec.rb +1 -1
- data/spec/controllers/blacklight/search_fields_spec.rb +1 -13
- data/spec/controllers/bookmarks_controller_spec.rb +1 -36
- data/spec/controllers/catalog_controller_spec.rb +153 -53
- data/spec/controllers/search_history_controller_spec.rb +2 -2
- data/spec/features/alternate_controller_spec.rb +1 -1
- data/spec/features/autocomplete_spec.rb +2 -2
- data/spec/features/bookmarks_spec.rb +10 -10
- data/spec/features/did_you_mean_spec.rb +3 -9
- data/spec/features/facets_spec.rb +11 -11
- data/spec/features/record_view_spec.rb +1 -6
- data/spec/features/search_context_spec.rb +2 -2
- data/spec/features/search_filters_spec.rb +41 -41
- data/spec/features/search_formats_spec.rb +1 -1
- data/spec/features/search_history_spec.rb +1 -26
- data/spec/features/search_pagination_spec.rb +1 -1
- data/spec/features/search_results_spec.rb +3 -4
- data/spec/features/search_sort_spec.rb +2 -2
- data/spec/features/search_spec.rb +5 -10
- data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
- data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +70 -65
- data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +7 -8
- data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +1 -1
- data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
- data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -15
- data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +2 -3
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +80 -0
- data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +9 -9
- data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +4 -2
- data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +11 -15
- data/spec/helpers/blacklight_helper_spec.rb +36 -141
- data/spec/helpers/catalog_helper_spec.rb +37 -56
- data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +3 -3
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +11 -0
- data/spec/lib/blacklight/configuration/field_spec.rb +12 -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 +153 -0
- data/spec/lib/blacklight/parameters_spec.rb +1 -1
- data/spec/lib/blacklight/search_state_spec.rb +2 -2
- data/spec/lib/blacklight_spec.rb +1 -1
- data/spec/lib/tasks/blacklight_task_spec.rb +1 -1
- data/spec/models/blacklight/configurable_spec.rb +15 -16
- data/spec/models/blacklight/configuration/context_spec.rb +1 -1
- data/spec/models/blacklight/configuration_spec.rb +146 -135
- data/spec/models/blacklight/document/active_model_shim_spec.rb +11 -1
- data/spec/models/blacklight/document/cache_key_spec.rb +1 -1
- data/spec/models/blacklight/document/dublin_core_spec.rb +5 -5
- data/spec/models/blacklight/document/email_spec.rb +3 -3
- data/spec/models/blacklight/document/sms_spec.rb +3 -3
- data/spec/models/blacklight/document_spec.rb +3 -16
- data/spec/models/blacklight/facet_paginator_spec.rb +1 -1
- data/spec/models/blacklight/icon_spec.rb +34 -0
- data/spec/models/blacklight/search_builder_spec.rb +33 -27
- data/spec/models/blacklight/solr/document_spec.rb +18 -7
- data/spec/models/blacklight/solr/facet_paginator_spec.rb +1 -1
- data/spec/models/blacklight/solr/repository_spec.rb +32 -27
- data/spec/models/blacklight/solr/request_spec.rb +1 -1
- data/spec/models/blacklight/solr/response/facets_spec.rb +1 -1
- data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -1
- data/spec/models/blacklight/solr/response/group_spec.rb +1 -1
- data/spec/models/blacklight/solr/response_spec.rb +9 -6
- data/spec/models/blacklight/solr/search_builder_spec.rb +35 -48
- data/spec/models/blacklight/suggest/response_spec.rb +4 -5
- data/spec/models/blacklight/suggest_search_spec.rb +14 -7
- data/spec/models/blacklight/user_spec.rb +1 -1
- data/spec/models/bookmark_spec.rb +1 -1
- data/spec/models/record_mailer_spec.rb +2 -2
- data/spec/models/search_spec.rb +1 -1
- data/spec/models/solr_document_spec.rb +3 -3
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +72 -0
- data/spec/presenters/index_presenter_spec.rb +70 -143
- data/spec/presenters/pipeline_spec.rb +4 -4
- data/spec/presenters/show_presenter_spec.rb +83 -145
- data/spec/presenters/thumbnail_presenter_spec.rb +171 -0
- data/spec/routing/catalog_routing_spec.rb +1 -17
- data/spec/services/blacklight/search_service_spec.rb +446 -0
- data/spec/spec_helper.rb +22 -9
- data/spec/test_app_templates/Gemfile.extra +2 -5
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
- data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -3
- data/spec/views/catalog/_constraints_element.html.erb_spec.rb +8 -8
- data/spec/views/catalog/_document.html.erb_spec.rb +7 -7
- data/spec/views/catalog/_document_list.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
- data/spec/views/catalog/_facets.html.erb_spec.rb +2 -2
- data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +1 -1
- data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +4 -4
- data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +4 -27
- 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} +1 -1
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +3 -3
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +3 -3
- data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -1
- data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +3 -3
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +5 -1
- data/spec/views/catalog/email_success.html.erb_spec.rb +9 -0
- data/spec/views/catalog/facet.html.erb_spec.rb +1 -1
- data/spec/views/catalog/facet.json.jbuilder_spec.rb +1 -1
- data/spec/views/catalog/index.atom.builder_spec.rb +2 -2
- data/spec/views/catalog/index.html.erb_spec.rb +4 -7
- data/spec/views/catalog/index.json.jbuilder_spec.rb +66 -21
- data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
- data/spec/views/catalog/show.html.erb_spec.rb +2 -2
- data/spec/views/catalog/sms_success.html.erb_spec.rb +9 -0
- data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -4
- data/tasks/blacklight.rake +10 -8
- data/template.demo.rb +1 -11
- metadata +171 -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 -139
- data/app/assets/javascripts/blacklight/core.js +0 -30
- 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 -161
- 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/presenters/blacklight/document_presenter.rb +0 -153
- 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/blacklight/utils.rb +0 -183
- data/lib/generators/blacklight/solr4_generator.rb +0 -31
- data/solr/conf/schema.xml +0 -627
- data/solr/conf/solrconfig.xml +0 -411
- data/spec/controllers/blacklight/search_helper_spec.rb +0 -489
- 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/support/backport_test.rb +0 -14
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
3
3
|
|
|
4
|
-
describe "Routing" do
|
|
4
|
+
RSpec.describe "Routing" do
|
|
5
5
|
describe "Paths Generated by Custom Routes:" do
|
|
6
6
|
# paths generated by custom routes
|
|
7
7
|
it "has a path for showing the email form" do
|
|
@@ -21,22 +21,6 @@ describe "Routing" do
|
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
describe 'tracking' do
|
|
25
|
-
context 'when the routing constraint is set to allow periods' do
|
|
26
|
-
before do
|
|
27
|
-
if Rails.version < '5.2.0'
|
|
28
|
-
skip 'requires https://github.com/rails/rails/pull/22435'
|
|
29
|
-
end
|
|
30
|
-
allow(Blacklight::Engine.config.routes).to receive(:identifier_constraint).and_return(%r{[^/]+})
|
|
31
|
-
Rails.application.reload_routes!
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it 'routes to #track' do
|
|
35
|
-
expect(post('/catalog/gallica.bnf.fr/track')).to route_to('catalog#track', id: 'gallica.bnf.fr')
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
24
|
|
|
41
25
|
describe "solr_document_path for SolrDocument", :test => true do
|
|
42
26
|
it "routes correctly" do
|
|
@@ -0,0 +1,446 @@
|
|
|
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
|
+
RSpec.describe Blacklight::SearchService do
|
|
12
|
+
|
|
13
|
+
let(:service) { described_class.new(blacklight_config, user_params) }
|
|
14
|
+
let(:repository) { Blacklight::Solr::Repository.new(blacklight_config) }
|
|
15
|
+
let(:user_params) { {} }
|
|
16
|
+
subject { service }
|
|
17
|
+
let(:blacklight_config) { Blacklight::Configuration.new }
|
|
18
|
+
let(:copy_of_catalog_config) { ::CatalogController.blacklight_config.deep_copy }
|
|
19
|
+
let(:blacklight_solr) { RSolr.connect(Blacklight.connection_config.except(:adapter)) }
|
|
20
|
+
|
|
21
|
+
let(:all_docs_query) { '' }
|
|
22
|
+
let(:no_docs_query) { 'zzzzzzzzzzzz' }
|
|
23
|
+
# f[format][]=Book&f[language_facet][]=English
|
|
24
|
+
let(:single_facet) { { format: 'Book' } }
|
|
25
|
+
|
|
26
|
+
before do
|
|
27
|
+
allow(service).to receive(:repository).and_return(repository)
|
|
28
|
+
service.repository.connection = blacklight_solr
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# SPECS FOR SEARCH RESULTS FOR QUERY
|
|
32
|
+
describe 'Search Results', :integration => true do
|
|
33
|
+
|
|
34
|
+
let(:blacklight_config) { copy_of_catalog_config }
|
|
35
|
+
describe 'for a sample query returning results' do
|
|
36
|
+
let(:user_params) { { q: all_docs_query } }
|
|
37
|
+
|
|
38
|
+
before do
|
|
39
|
+
(@solr_response, @document_list) = service.search_results
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "uses the configured request handler" do
|
|
43
|
+
allow(blacklight_config).to receive(:default_solr_params).and_return({:qt => 'custom_request_handler'})
|
|
44
|
+
allow(blacklight_solr).to receive(:send_and_receive) do |path, params|
|
|
45
|
+
expect(path).to eq 'select'
|
|
46
|
+
expect(params[:params]['facet.field']).to eq ["format", "{!ex=pub_date_ssim_single}pub_date_ssim", "subject_ssim", "language_ssim", "lc_1letter_ssim", "subject_geo_ssim", "subject_era_ssim"]
|
|
47
|
+
expect(params[:params]["facet.query"]).to eq ["pub_date_ssim:[#{5.years.ago.year} TO *]", "pub_date_ssim:[#{10.years.ago.year} TO *]", "pub_date_ssim:[#{25.years.ago.year} TO *]"]
|
|
48
|
+
expect(params[:params]).to include('rows' => 10, 'qt'=>"custom_request_handler", 'q'=>"", "f.subject_ssim.facet.limit"=>21, 'sort'=>"score desc, pub_date_si desc, title_si asc")
|
|
49
|
+
end.and_return({'response'=>{'docs'=>[]}})
|
|
50
|
+
service.search_results
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it 'has a @response.docs list of the same size as @document_list' do
|
|
54
|
+
expect(@solr_response.docs).to have(@document_list.length).docs
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'has @response.docs list representing same documents as SolrDocuments in @document_list' do
|
|
58
|
+
@solr_response.docs.each_index do |index|
|
|
59
|
+
mash = @solr_response.docs[index]
|
|
60
|
+
solr_document = @document_list[index]
|
|
61
|
+
|
|
62
|
+
expect(Set.new(mash.keys)).to eq Set.new(solr_document.keys)
|
|
63
|
+
|
|
64
|
+
mash.keys.each do |key|
|
|
65
|
+
expect(mash[key]).to eq solr_document[key]
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
describe "for a query returning a grouped response" do
|
|
72
|
+
let(:blacklight_config) { copy_of_catalog_config }
|
|
73
|
+
let(:user_params) { { q: all_docs_query } }
|
|
74
|
+
before do
|
|
75
|
+
blacklight_config.default_solr_params[:group] = true
|
|
76
|
+
blacklight_config.default_solr_params[:'group.field'] = 'pub_date_si'
|
|
77
|
+
(@solr_response, @document_list) = service.search_results
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "returns a grouped response" do
|
|
81
|
+
expect(@document_list).to be_empty
|
|
82
|
+
expect(@solr_response).to be_a_kind_of Blacklight::Solr::Response::GroupResponse
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
describe "for a query returning multiple groups", integration: true do
|
|
87
|
+
let(:blacklight_config) { copy_of_catalog_config }
|
|
88
|
+
let(:user_params) { { q: all_docs_query } }
|
|
89
|
+
before do
|
|
90
|
+
allow(subject).to receive_messages grouped_key_for_results: 'title_si'
|
|
91
|
+
blacklight_config.default_solr_params[:group] = true
|
|
92
|
+
blacklight_config.default_solr_params[:'group.field'] = ['pub_date_si', 'title_si']
|
|
93
|
+
(@solr_response, @document_list) = service.search_results
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "returns a grouped response" do
|
|
97
|
+
expect(@document_list).to be_empty
|
|
98
|
+
expect(@solr_response).to be_a_kind_of Blacklight::Solr::Response::GroupResponse
|
|
99
|
+
expect(@solr_response.group_field).to eq "title_si"
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
describe "for All Docs Query and One Facet" do
|
|
105
|
+
let(:user_params) { { q: all_docs_query, f: single_facet } }
|
|
106
|
+
it 'has results' do
|
|
107
|
+
(solr_response, document_list) = service.search_results
|
|
108
|
+
expect(solr_response.docs).to have(document_list.size).results
|
|
109
|
+
expect(solr_response.docs).to have_at_least(1).result
|
|
110
|
+
end
|
|
111
|
+
# TODO: check that number of these results < number of results for all docs query
|
|
112
|
+
# BUT can't: num docs isn't total, it's the num docs in the single SOLR response (e.g. 10)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
describe "for Query Without Results and No Facet" do
|
|
116
|
+
let(:user_params) { { q: no_docs_query } }
|
|
117
|
+
it 'has no results and not raise error' do
|
|
118
|
+
(solr_response, document_list) = service.search_results
|
|
119
|
+
expect(document_list).to have(0).results
|
|
120
|
+
expect(solr_response.docs).to have(0).results
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
describe "for Query Without Results and One Facet" do
|
|
125
|
+
let(:user_params) { { q: no_docs_query, f: single_facet } }
|
|
126
|
+
it 'has no results and not raise error' do
|
|
127
|
+
(solr_response, document_list) = service.search_results
|
|
128
|
+
expect(document_list).to have(0).results
|
|
129
|
+
expect(solr_response.docs).to have(0).results
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
describe "for All Docs Query and Bad Facet" do
|
|
134
|
+
let(:bad_facet) { { format: '666' } }
|
|
135
|
+
let(:user_params) { { q: all_docs_query, f: bad_facet } }
|
|
136
|
+
|
|
137
|
+
it 'has no results and not raise error' do
|
|
138
|
+
(solr_response, document_list) = service.search_results
|
|
139
|
+
expect(document_list).to have(0).results
|
|
140
|
+
expect(solr_response.docs).to have(0).results
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end # Search Results
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
# SPECS FOR SEARCH RESULTS FOR FACETS
|
|
147
|
+
describe 'Facets in Search Results for All Docs Query', :integration => true do
|
|
148
|
+
|
|
149
|
+
let(:blacklight_config) { copy_of_catalog_config }
|
|
150
|
+
let(:user_params) { { q: all_docs_query } }
|
|
151
|
+
|
|
152
|
+
before do
|
|
153
|
+
(solr_response, document_list) = service.search_results
|
|
154
|
+
@facets = solr_response.aggregations
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it 'has more than one facet' do
|
|
158
|
+
expect(@facets).to have_at_least(1).facet
|
|
159
|
+
end
|
|
160
|
+
it 'has all facets specified in initializer' do
|
|
161
|
+
expect(@facets.keys).to include *blacklight_config.facet_fields.keys
|
|
162
|
+
expect(@facets.none? { |k, v| v.nil? }).to eq true
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
it 'has at least one value for each facet' do
|
|
166
|
+
@facets.each do |key, facet|
|
|
167
|
+
expect(facet.items).to have_at_least(1).hit
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
it 'has multiple values for at least one facet' do
|
|
171
|
+
has_mult_values = false
|
|
172
|
+
@facets.each do |key, facet|
|
|
173
|
+
if facet.items.size > 1
|
|
174
|
+
has_mult_values = true
|
|
175
|
+
break
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
expect(has_mult_values).to eq true
|
|
179
|
+
end
|
|
180
|
+
it 'has all value counts > 0' do
|
|
181
|
+
@facets.each do |key, facet|
|
|
182
|
+
facet.items.each do |facet_vals|
|
|
183
|
+
expect(facet_vals.hits).to be > 0
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
end # facet specs
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
# SPECS FOR SEARCH RESULTS FOR PAGING
|
|
191
|
+
describe 'Paging', :integration => true do
|
|
192
|
+
let(:blacklight_config) { copy_of_catalog_config }
|
|
193
|
+
let(:user_params) { { q: all_docs_query } }
|
|
194
|
+
|
|
195
|
+
it 'starts with first results by default' do
|
|
196
|
+
(solr_response, document_list) = service.search_results
|
|
197
|
+
expect(solr_response.params[:start].to_i).to eq 0
|
|
198
|
+
end
|
|
199
|
+
it 'has number of results (per page) set in initializer, by default' do
|
|
200
|
+
(solr_response, document_list) = service.search_results
|
|
201
|
+
expect(solr_response.docs).to have(blacklight_config[:default_solr_params][:rows]).items
|
|
202
|
+
expect(document_list).to have(blacklight_config[:default_solr_params][:rows]).items
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
context "with per page requested" do
|
|
206
|
+
let(:user_params) { { q: all_docs_query, per_page: num_results } }
|
|
207
|
+
let(:num_results) { 3 } # non-default value
|
|
208
|
+
it 'gets number of results per page requested' do
|
|
209
|
+
(solr_response1, document_list1) = service.search_results
|
|
210
|
+
expect(document_list1).to have(num_results).docs
|
|
211
|
+
expect(solr_response1.docs).to have(num_results).docs
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
context "with rows requested" do
|
|
216
|
+
let(:user_params) { { q: all_docs_query, rows: num_results } }
|
|
217
|
+
let(:num_results) { 4 } # non-default value
|
|
218
|
+
it 'gets number of rows requested' do
|
|
219
|
+
(solr_response1, document_list1) = service.search_results
|
|
220
|
+
expect(document_list1).to have(num_results).docs
|
|
221
|
+
expect(solr_response1.docs).to have(num_results).docs
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
context "with page requested" do
|
|
226
|
+
let(:user_params) { { q: all_docs_query, page: page } }
|
|
227
|
+
let(:page) { 3 }
|
|
228
|
+
it 'skips appropriate number of results when requested - default per page' do
|
|
229
|
+
(solr_response2, document_list2) = service.search_results
|
|
230
|
+
expect(solr_response2.params[:start].to_i).to eq blacklight_config[:default_solr_params][:rows] * (page-1)
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
context "with page and num_results requested" do
|
|
235
|
+
let(:user_params) { { q: all_docs_query, page: page, per_page: num_results } }
|
|
236
|
+
let(:page) { 3 }
|
|
237
|
+
let(:num_results) { 3 } # non-default value
|
|
238
|
+
it 'skips appropriate number of results when requested - non-default per page' do
|
|
239
|
+
num_results = 3
|
|
240
|
+
(solr_response2a, document_list2a) = service.search_results
|
|
241
|
+
expect(solr_response2a.params[:start].to_i).to eq num_results * (page-1)
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
context "with page and num_results requested" do
|
|
246
|
+
let(:page) { 5000 }
|
|
247
|
+
let(:rows) { 5000 }
|
|
248
|
+
let(:user_params) { { q: all_docs_query, page: page, rows: rows } }
|
|
249
|
+
it 'has no results when prompted for page after last result' do
|
|
250
|
+
(solr_response3, document_list3) = service.search_results
|
|
251
|
+
expect(document_list3).to have(0).docs
|
|
252
|
+
expect(solr_response3.docs).to have(0).docs
|
|
253
|
+
end
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
context "with negative page" do
|
|
257
|
+
let(:page) { '-1' }
|
|
258
|
+
let(:user_params) { { q: all_docs_query, page: page } }
|
|
259
|
+
it 'shows first results when prompted for page before first result' do
|
|
260
|
+
# FIXME: should it show first results, or should it throw an error for view to deal w?
|
|
261
|
+
# Solr throws an error for a negative start value
|
|
262
|
+
(solr_response4, document_list4) = service.search_results
|
|
263
|
+
expect(solr_response4.params[:start].to_i).to eq 0
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
context "when asking for more rows than are in the reponse" do
|
|
268
|
+
let(:page) { 1 }
|
|
269
|
+
let(:rows) { 5000 }
|
|
270
|
+
let(:user_params) { { q: all_docs_query, page: page, rows: rows } }
|
|
271
|
+
it 'has results available when asked for more than are in response' do
|
|
272
|
+
(solr_response5, document_list5) = service.search_results
|
|
273
|
+
expect(solr_response5.docs).to have(document_list5.length).docs
|
|
274
|
+
expect(solr_response5.docs).to have_at_least(1).doc
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
end # page specs
|
|
278
|
+
|
|
279
|
+
# SPECS FOR SINGLE DOCUMENT REQUESTS
|
|
280
|
+
describe 'Get Document By Id', :integration => true do
|
|
281
|
+
let(:doc_id) { '2007020969' }
|
|
282
|
+
let(:bad_id) { 'redrum' }
|
|
283
|
+
|
|
284
|
+
before do
|
|
285
|
+
@response2, @document = service.fetch(doc_id)
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
it "raises Blacklight::RecordNotFound for an unknown id" do
|
|
289
|
+
expect {
|
|
290
|
+
service.fetch(bad_id)
|
|
291
|
+
}.to raise_error(Blacklight::Exceptions::RecordNotFound)
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
it "uses a provided document solr path" do
|
|
295
|
+
allow(blacklight_config).to receive_messages(document_solr_path: 'get')
|
|
296
|
+
allow(blacklight_solr).to receive(:send_and_receive).with('get', kind_of(Hash)).and_return({'response'=>{'docs'=>[]}})
|
|
297
|
+
expect { service.fetch(doc_id)}.to raise_error Blacklight::Exceptions::RecordNotFound
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
it "has a non-nil result for a known id" do
|
|
301
|
+
expect(@document).not_to be_nil
|
|
302
|
+
end
|
|
303
|
+
it "has a single document in the response for a known id" do
|
|
304
|
+
expect(@response2.docs.size).to eq 1
|
|
305
|
+
end
|
|
306
|
+
it 'has the expected value in the id field' do
|
|
307
|
+
expect(@document.id).to eq doc_id
|
|
308
|
+
end
|
|
309
|
+
it 'has non-nil values for required fields set in initializer' do
|
|
310
|
+
expect(@document.fetch(blacklight_config.view_config(:show).display_type_field)).not_to be_nil
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
# SPECS FOR SPELLING SUGGESTIONS VIA SEARCH
|
|
315
|
+
describe "Searches should return spelling suggestions", :integration => true do
|
|
316
|
+
|
|
317
|
+
context "for just-poor-enough-query term" do
|
|
318
|
+
let(:user_params) { { q: 'boo' } }
|
|
319
|
+
it 'has (multiple) spelling suggestions' do
|
|
320
|
+
(solr_response, document_list) = service.search_results
|
|
321
|
+
expect(solr_response.spelling.words).to include('bon')
|
|
322
|
+
expect(solr_response.spelling.words).to include('bod') #for multiple suggestions
|
|
323
|
+
end
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
context "for another just-poor-enough-query term" do
|
|
327
|
+
let(:user_params) { { q: 'politica' } }
|
|
328
|
+
it 'has multiple spelling suggestions' do
|
|
329
|
+
(solr_response, document_list) = service.search_results
|
|
330
|
+
expect(solr_response.spelling.words).to include('policy') # less freq
|
|
331
|
+
expect(solr_response.spelling.words).to include('politics') # more freq
|
|
332
|
+
expect(solr_response.spelling.words).to include('political') # more freq
|
|
333
|
+
=begin
|
|
334
|
+
# when we can have multiple suggestions
|
|
335
|
+
expect(solr_response.spelling.words).to_not include('policy') # less freq
|
|
336
|
+
solr_response.spelling.words).to include('politics') # more freq
|
|
337
|
+
solr_response.spelling.words).to include('political') # more freq
|
|
338
|
+
=end
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
context "for title search" do
|
|
343
|
+
let(:user_params) { { q: 'yehudiyam', qt: 'search', :"spellcheck.dictionary" => "title" } }
|
|
344
|
+
it 'has spelling suggestions' do
|
|
345
|
+
(solr_response, document_list) = service.search_results
|
|
346
|
+
expect(solr_response.spelling.words).to include('yehudiyim')
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
context "for author search" do
|
|
351
|
+
let(:user_params) { { q: 'shirma', qt: 'search', :"spellcheck.dictionary" => "author" } }
|
|
352
|
+
it 'has spelling suggestions' do
|
|
353
|
+
(solr_response, document_list) = service.search_results
|
|
354
|
+
expect(solr_response.spelling.words).to include('sharma')
|
|
355
|
+
end
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
context "for subject search" do
|
|
359
|
+
let(:user_params) { { q: 'wome', qt: 'search', :"spellcheck.dictionary" => "subject" } }
|
|
360
|
+
it 'has spelling suggestions' do
|
|
361
|
+
(solr_response, document_list) = service.search_results
|
|
362
|
+
expect(solr_response.spelling.words).to include('women')
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
# TODO: more complex queries! phrases, offset into search results, non-latin, boosting(?)
|
|
368
|
+
# search within query building (?)
|
|
369
|
+
# search + facets (search done first; facet selected first, both selected)
|
|
370
|
+
|
|
371
|
+
# TODO: maybe eventually check other types of solr requests
|
|
372
|
+
# more like this
|
|
373
|
+
# nearby on shelf
|
|
374
|
+
it "raises a Blacklight exception if RSolr can't connect to the Solr instance" do
|
|
375
|
+
allow(blacklight_solr).to receive(:send_and_receive).and_raise(Errno::ECONNREFUSED)
|
|
376
|
+
expect { service.repository.search }.to raise_exception(/Unable to connect to Solr instance/)
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
describe "#previous_and_next_documents_for_search" do
|
|
380
|
+
let(:user_params) { { q: '', per_page: 100 } }
|
|
381
|
+
before do
|
|
382
|
+
@full_response, @all_docs = service.search_results
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
it "returns the previous and next documents for a search" do
|
|
386
|
+
response, docs = service.previous_and_next_documents_for_search(4, :q => '')
|
|
387
|
+
|
|
388
|
+
expect(docs.first.id).to eq @all_docs[3].id
|
|
389
|
+
expect(docs.last.id).to eq @all_docs[5].id
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
it "returns only the next document if the counter is 0" do
|
|
393
|
+
response, docs = service.previous_and_next_documents_for_search(0, :q => '')
|
|
394
|
+
|
|
395
|
+
expect(docs.first).to be_nil
|
|
396
|
+
expect(docs.last.id).to eq @all_docs[1].id
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
it "returns only the previous document if the counter is the total number of documents" do
|
|
400
|
+
response, docs = service.previous_and_next_documents_for_search(@full_response.total - 1, :q => '')
|
|
401
|
+
expect(docs.first.id).to eq @all_docs.slice(-2).id
|
|
402
|
+
expect(docs.last).to be_nil
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
it "returns an array of nil values if there is only one result" do
|
|
406
|
+
response, docs = service.previous_and_next_documents_for_search(0, :q => 'id:2007020969')
|
|
407
|
+
expect(docs.last).to be_nil
|
|
408
|
+
expect(docs.first).to be_nil
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
it 'returns only the unique key by default' do
|
|
412
|
+
response, docs = service.previous_and_next_documents_for_search(0, :q => '')
|
|
413
|
+
expect(docs.last.to_h).to eq 'id' => @all_docs[1].id
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
it 'allows the query parameters to be customized using configuration' do
|
|
417
|
+
blacklight_config.document_pagination_params[:fl] = 'id,format'
|
|
418
|
+
|
|
419
|
+
response, docs = service.previous_and_next_documents_for_search(0, :q => '')
|
|
420
|
+
|
|
421
|
+
expect(docs.last.to_h).to eq @all_docs[1].to_h.slice('id', 'format')
|
|
422
|
+
end
|
|
423
|
+
end
|
|
424
|
+
|
|
425
|
+
describe '#opensearch_response' do
|
|
426
|
+
let(:user_params) { { q: 'Book' } }
|
|
427
|
+
let(:mock_response) {
|
|
428
|
+
instance_double(Blacklight::Solr::Response, documents: [
|
|
429
|
+
{ field: 'A' }, { field: 'B' }, { field: 'C' }
|
|
430
|
+
])
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
before do
|
|
434
|
+
blacklight_config.view.opensearch.title_field = :field
|
|
435
|
+
allow(repository).to receive(:search).and_return(mock_response)
|
|
436
|
+
end
|
|
437
|
+
|
|
438
|
+
it 'contains the original user query as the first element in the response' do
|
|
439
|
+
expect(service.opensearch_response.first).to eq 'Book'
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
it 'contains the search suggestions as the second element in the response' do
|
|
443
|
+
expect(service.opensearch_response.last).to match_array %w(A B C)
|
|
444
|
+
end
|
|
445
|
+
end
|
|
446
|
+
end
|