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.
Files changed (422) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.npmignore +23 -0
  4. data/.rubocop.yml +40 -16
  5. data/.rubocop_todo.yml +479 -375
  6. data/.solr_wrapper.yml +9 -2
  7. data/.travis.yml +27 -20
  8. data/Gemfile +3 -1
  9. data/README.md +22 -5
  10. data/Rakefile +3 -2
  11. data/VERSION +1 -1
  12. data/Vagrantfile +2 -0
  13. data/app/assets/images/blacklight/list.svg +1 -0
  14. data/app/assets/images/blacklight/search.svg +1 -0
  15. data/app/assets/javascripts/blacklight/blacklight.js +497 -57
  16. data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
  17. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +18 -15
  18. data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
  19. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
  20. data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
  21. data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
  22. data/app/assets/stylesheets/blacklight/_facets.scss +64 -93
  23. data/app/assets/stylesheets/blacklight/_header.scss +35 -48
  24. data/app/assets/stylesheets/blacklight/_icons.scss +35 -0
  25. data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
  26. data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
  27. data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
  28. data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
  29. data/app/assets/stylesheets/blacklight/_search_form.scss +7 -0
  30. data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
  31. data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
  32. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
  33. data/app/assets/stylesheets/blacklight/blacklight.scss +1 -1
  34. data/app/builders/blacklight/action_builder.rb +57 -0
  35. data/app/controllers/bookmarks_controller.rb +2 -2
  36. data/app/controllers/catalog_controller.rb +2 -2
  37. data/app/controllers/concerns/blacklight/base.rb +0 -33
  38. data/app/controllers/concerns/blacklight/bookmarks.rb +36 -33
  39. data/app/controllers/concerns/blacklight/catalog.rb +266 -210
  40. data/app/controllers/concerns/blacklight/controller.rb +111 -126
  41. data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
  42. data/app/controllers/concerns/blacklight/facet.rb +3 -0
  43. data/app/controllers/concerns/blacklight/search_context.rb +16 -14
  44. data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
  45. data/app/controllers/concerns/blacklight/search_history.rb +1 -6
  46. data/app/controllers/concerns/blacklight/token_based_user.rb +24 -9
  47. data/app/helpers/blacklight/blacklight_helper_behavior.rb +39 -119
  48. data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
  49. data/app/helpers/blacklight/component_helper_behavior.rb +21 -19
  50. data/app/helpers/blacklight/configuration_helper_behavior.rb +30 -57
  51. data/app/helpers/blacklight/facets_helper_behavior.rb +55 -51
  52. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
  53. data/app/helpers/blacklight/icon_helper_behavior.rb +18 -0
  54. data/app/helpers/blacklight/layout_helper_behavior.rb +3 -3
  55. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +8 -6
  56. data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
  57. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +19 -11
  58. data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
  59. data/app/helpers/blacklight/url_helper_behavior.rb +50 -41
  60. data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
  61. data/app/javascript/blacklight/bookmark_toggle.js +25 -0
  62. data/app/javascript/blacklight/checkbox_submit.js +134 -0
  63. data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
  64. data/app/{assets/javascripts → javascript}/blacklight/core.js +10 -8
  65. data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
  66. data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +62 -64
  67. data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -3
  68. data/app/models/blacklight/facet_paginator.rb +3 -3
  69. data/app/models/blacklight/icon.rb +56 -0
  70. data/app/models/blacklight/solr/facet_paginator.rb +3 -3
  71. data/app/models/blacklight/suggest_search.rb +4 -15
  72. data/app/models/bookmark.rb +5 -10
  73. data/app/models/concerns/blacklight/configurable.rb +13 -13
  74. data/app/models/concerns/blacklight/document/active_model_shim.rb +13 -11
  75. data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
  76. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
  77. data/app/models/concerns/blacklight/document/email.rb +1 -1
  78. data/app/models/concerns/blacklight/document/extensions.rb +5 -5
  79. data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
  80. data/app/models/concerns/blacklight/document/sms.rb +1 -1
  81. data/app/models/concerns/blacklight/document.rb +26 -40
  82. data/app/models/concerns/blacklight/solr/document.rb +8 -8
  83. data/app/models/concerns/blacklight/suggest/response.rb +5 -3
  84. data/app/models/concerns/blacklight/user.rb +7 -6
  85. data/app/models/record_mailer.rb +5 -6
  86. data/app/models/search.rb +5 -7
  87. data/app/presenters/blacklight/document_presenter.rb +25 -140
  88. data/app/presenters/blacklight/field_presenter.rb +7 -5
  89. data/app/presenters/blacklight/index_presenter.rb +41 -58
  90. data/app/presenters/blacklight/json_presenter.rb +10 -14
  91. data/app/presenters/blacklight/link_alternate_presenter.rb +3 -1
  92. data/app/presenters/blacklight/rendering/abstract_step.rb +7 -5
  93. data/app/presenters/blacklight/rendering/helper_method.rb +10 -8
  94. data/app/presenters/blacklight/rendering/join.rb +5 -3
  95. data/app/presenters/blacklight/rendering/link_to_facet.rb +23 -19
  96. data/app/presenters/blacklight/rendering/microdata.rb +6 -3
  97. data/app/presenters/blacklight/rendering/pipeline.rb +7 -5
  98. data/app/presenters/blacklight/rendering/terminator.rb +2 -0
  99. data/app/presenters/blacklight/search_bar_presenter.rb +39 -0
  100. data/app/presenters/blacklight/show_presenter.rb +26 -63
  101. data/app/presenters/blacklight/thumbnail_presenter.rb +74 -0
  102. data/app/services/blacklight/document_factory.rb +13 -0
  103. data/app/services/blacklight/field_retriever.rb +26 -24
  104. data/app/services/blacklight/search_service.rb +152 -0
  105. data/app/values/blacklight/types.rb +31 -0
  106. data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
  107. data/app/views/blacklight/nav/_search_history.html.erb +1 -1
  108. data/app/views/bookmarks/_tools.html.erb +2 -2
  109. data/app/views/bookmarks/index.html.erb +12 -13
  110. data/app/views/catalog/_bookmark_control.html.erb +26 -10
  111. data/app/views/catalog/_citation.html.erb +4 -4
  112. data/app/views/catalog/_constraints.html.erb +6 -7
  113. data/app/views/catalog/_constraints_element.html.erb +6 -6
  114. data/app/views/catalog/_did_you_mean.html.erb +1 -1
  115. data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +19 -18
  116. data/app/views/catalog/_document.html.erb +5 -3
  117. data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +2 -0
  118. data/app/views/catalog/_document_action.html.erb +2 -1
  119. data/app/views/catalog/_email_form.html.erb +8 -4
  120. data/app/views/catalog/_facet_index_navigation.html.erb +5 -4
  121. data/app/views/catalog/_facet_layout.html.erb +6 -10
  122. data/app/views/catalog/_facet_limit.html.erb +3 -2
  123. data/app/views/catalog/_facet_pagination.html.erb +8 -8
  124. data/app/views/catalog/_facet_pivot.html.erb +2 -2
  125. data/app/views/catalog/_facets.html.erb +9 -12
  126. data/app/views/catalog/_field.json.jbuilder +10 -0
  127. data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +1 -1
  128. data/app/views/catalog/_home_text.html.erb +32 -36
  129. data/app/views/catalog/_index.html.erb +10 -0
  130. data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +3 -3
  131. data/app/views/catalog/_per_page_widget.html.erb +6 -7
  132. data/app/views/catalog/_previous_next_doc.html.erb +6 -14
  133. data/app/views/catalog/_results_pagination.html.erb +2 -2
  134. data/app/views/catalog/_search_form.html.erb +12 -8
  135. data/app/views/catalog/_search_header.html.erb +0 -3
  136. data/app/views/catalog/_search_results.html.erb +6 -2
  137. data/app/views/catalog/_show.html.erb +8 -0
  138. data/app/views/catalog/_show_main_content.html.erb +4 -4
  139. data/app/views/catalog/_show_more_like_this.html.erb +1 -1
  140. data/app/views/catalog/_show_sidebar.html.erb +3 -3
  141. data/app/views/catalog/_show_tools.html.erb +10 -12
  142. data/app/views/catalog/_sms_form.html.erb +8 -4
  143. data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
  144. data/app/views/catalog/_sort_widget.html.erb +7 -7
  145. data/app/views/catalog/_thumbnail.html.erb +5 -0
  146. data/app/views/catalog/_view_type_group.html.erb +2 -2
  147. data/app/views/catalog/_zero_results.html.erb +1 -1
  148. data/app/views/catalog/citation.js.erb +4 -2
  149. data/app/views/catalog/email.html.erb +5 -3
  150. data/app/views/catalog/email_success.html.erb +12 -8
  151. data/app/views/catalog/facet.html.erb +10 -8
  152. data/app/views/catalog/facet.json.jbuilder +2 -0
  153. data/app/views/catalog/index.atom.builder +13 -16
  154. data/app/views/catalog/index.html.erb +9 -11
  155. data/app/views/catalog/index.json.jbuilder +84 -3
  156. data/app/views/catalog/index.rss.builder +7 -5
  157. data/app/views/catalog/opensearch.xml.builder +12 -10
  158. data/app/views/catalog/show.html.erb +11 -6
  159. data/app/views/catalog/show.json.jbuilder +21 -0
  160. data/app/views/catalog/sms.html.erb +3 -1
  161. data/app/views/catalog/sms_success.html.erb +12 -8
  162. data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
  163. data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
  164. data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
  165. data/app/views/kaminari/blacklight/_next_page.html.erb +5 -5
  166. data/app/views/kaminari/blacklight/_page.html.erb +5 -3
  167. data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
  168. data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
  169. data/app/views/layouts/blacklight/base.html.erb +35 -0
  170. data/app/views/layouts/blacklight.html.erb +14 -41
  171. data/app/views/layouts/catalog_result.html.erb +11 -0
  172. data/app/views/search_history/index.html.erb +16 -21
  173. data/app/views/shared/_header_navbar.html.erb +8 -13
  174. data/app/views/shared/_modal.html.erb +6 -0
  175. data/app/views/shared/_user_util_links.html.erb +22 -0
  176. data/blacklight.gemspec +10 -11
  177. data/config/i18n-tasks.yml +17 -0
  178. data/config/locales/blacklight.de.yml +71 -82
  179. data/config/locales/blacklight.en.yml +15 -27
  180. data/config/locales/blacklight.es.yml +14 -26
  181. data/config/locales/blacklight.fr.yml +16 -33
  182. data/config/locales/blacklight.hu.yml +212 -0
  183. data/config/locales/blacklight.it.yml +15 -26
  184. data/config/locales/blacklight.nl.yml +212 -0
  185. data/config/locales/blacklight.pt-BR.yml +24 -29
  186. data/config/locales/blacklight.sq.yml +4 -28
  187. data/config/locales/blacklight.zh.yml +3 -25
  188. data/config/routes.rb +2 -10
  189. data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
  190. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
  191. data/lib/blacklight/abstract_repository.rb +22 -10
  192. data/lib/blacklight/configuration/context.rb +12 -1
  193. data/lib/blacklight/configuration/facet_field.rb +16 -9
  194. data/lib/blacklight/configuration/field.rb +32 -3
  195. data/lib/blacklight/configuration/fields.rb +61 -58
  196. data/lib/blacklight/configuration/null_field.rb +2 -0
  197. data/lib/blacklight/configuration/search_field.rb +2 -2
  198. data/lib/blacklight/configuration/sort_field.rb +2 -2
  199. data/lib/blacklight/configuration/view_config.rb +4 -0
  200. data/lib/blacklight/configuration.rb +101 -88
  201. data/lib/blacklight/engine.rb +11 -7
  202. data/lib/blacklight/exceptions.rb +4 -7
  203. data/lib/blacklight/{utils.rb → nested_open_struct_with_hash_access.rb} +9 -81
  204. data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
  205. data/lib/blacklight/parameters.rb +1 -1
  206. data/lib/blacklight/routes/exportable.rb +1 -3
  207. data/lib/blacklight/routes/searchable.rb +3 -3
  208. data/lib/blacklight/runtime_registry.rb +2 -0
  209. data/lib/blacklight/search_builder.rb +28 -35
  210. data/lib/blacklight/search_state.rb +10 -8
  211. data/lib/blacklight/solr/repository.rb +40 -6
  212. data/lib/blacklight/solr/request.rb +1 -1
  213. data/lib/blacklight/solr/response/facets.rb +29 -31
  214. data/lib/blacklight/solr/response/group.rb +3 -3
  215. data/lib/blacklight/solr/response/group_response.rb +1 -1
  216. data/lib/blacklight/solr/response/more_like_this.rb +2 -2
  217. data/lib/blacklight/solr/response/response.rb +2 -2
  218. data/lib/blacklight/solr/response/spelling.rb +4 -3
  219. data/lib/blacklight/solr/response.rb +29 -30
  220. data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
  221. data/lib/blacklight/version.rb +1 -1
  222. data/lib/blacklight.rb +10 -8
  223. data/lib/generators/blacklight/assets_generator.rb +18 -12
  224. data/lib/generators/blacklight/controller_generator.rb +4 -5
  225. data/lib/generators/blacklight/document_generator.rb +1 -1
  226. data/lib/generators/blacklight/install_generator.rb +18 -28
  227. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  228. data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +12 -6
  229. data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
  230. data/lib/generators/blacklight/templates/alternate_controller.rb +4 -4
  231. data/lib/generators/blacklight/templates/blacklight.scss +0 -2
  232. data/lib/generators/blacklight/templates/catalog_controller.rb +59 -49
  233. data/lib/generators/blacklight/templates/config/blacklight.yml +1 -13
  234. data/lib/generators/blacklight/templates/solr/conf/schema.xml +388 -0
  235. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
  236. data/lib/generators/blacklight/test_support_generator.rb +10 -10
  237. data/lib/generators/blacklight/user_generator.rb +5 -6
  238. data/lib/railties/blacklight.rake +17 -21
  239. data/package-lock.json +2195 -0
  240. data/package.json +29 -0
  241. data/spec/controllers/alternate_controller_spec.rb +5 -4
  242. data/spec/controllers/application_controller_spec.rb +1 -5
  243. data/spec/controllers/blacklight/base_spec.rb +6 -3
  244. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
  245. data/spec/controllers/blacklight/facet_spec.rb +1 -2
  246. data/spec/controllers/blacklight/search_fields_spec.rb +25 -34
  247. data/spec/controllers/bookmarks_controller_spec.rb +46 -11
  248. data/spec/controllers/catalog_controller_spec.rb +334 -161
  249. data/spec/controllers/search_history_controller_spec.rb +6 -6
  250. data/spec/features/alternate_controller_spec.rb +4 -4
  251. data/spec/features/autocomplete_spec.rb +4 -2
  252. data/spec/features/bookmarks_spec.rb +10 -10
  253. data/spec/features/did_you_mean_spec.rb +7 -12
  254. data/spec/features/facets_spec.rb +29 -17
  255. data/spec/features/record_view_spec.rb +12 -18
  256. data/spec/features/search_context_spec.rb +6 -7
  257. data/spec/features/search_crawler_spec.rb +3 -5
  258. data/spec/features/search_filters_spec.rb +80 -80
  259. data/spec/features/search_formats_spec.rb +1 -1
  260. data/spec/features/search_history_spec.rb +6 -29
  261. data/spec/features/search_pagination_spec.rb +4 -2
  262. data/spec/features/search_results_spec.rb +14 -12
  263. data/spec/features/search_sort_spec.rb +2 -2
  264. data/spec/features/search_spec.rb +8 -9
  265. data/spec/features/sitelinks_search_box.rb +4 -4
  266. data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
  267. data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +97 -92
  268. data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +72 -67
  269. data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +2 -2
  270. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +10 -0
  271. data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -5
  272. data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +10 -6
  273. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +92 -0
  274. data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +29 -30
  275. data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +9 -2
  276. data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +56 -54
  277. data/spec/helpers/blacklight_helper_spec.rb +65 -150
  278. data/spec/helpers/catalog_helper_spec.rb +80 -96
  279. data/spec/i18n_spec.rb +18 -0
  280. data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +21 -13
  281. data/spec/lib/blacklight/configuration/facet_field_spec.rb +13 -0
  282. data/spec/lib/blacklight/configuration/field_spec.rb +15 -0
  283. data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
  284. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +148 -0
  285. data/spec/lib/blacklight/parameters_spec.rb +4 -2
  286. data/spec/lib/blacklight/search_state_spec.rb +53 -36
  287. data/spec/lib/blacklight_spec.rb +14 -15
  288. data/spec/lib/tasks/blacklight_task_spec.rb +4 -6
  289. data/spec/models/blacklight/configurable_spec.rb +24 -27
  290. data/spec/models/blacklight/configuration/context_spec.rb +9 -10
  291. data/spec/models/blacklight/configuration_spec.rb +248 -223
  292. data/spec/models/blacklight/document/active_model_shim_spec.rb +15 -6
  293. data/spec/models/blacklight/document/cache_key_spec.rb +9 -2
  294. data/spec/models/blacklight/document/dublin_core_spec.rb +17 -20
  295. data/spec/models/blacklight/document/email_spec.rb +10 -10
  296. data/spec/models/blacklight/document/sms_spec.rb +10 -10
  297. data/spec/models/blacklight/document_spec.rb +10 -22
  298. data/spec/models/blacklight/facet_paginator_spec.rb +40 -30
  299. data/spec/models/blacklight/icon_spec.rb +44 -0
  300. data/spec/models/blacklight/search_builder_spec.rb +41 -26
  301. data/spec/models/blacklight/solr/document_spec.rb +224 -216
  302. data/spec/models/blacklight/solr/facet_paginator_spec.rb +6 -4
  303. data/spec/models/blacklight/solr/repository_spec.rb +61 -46
  304. data/spec/models/blacklight/solr/request_spec.rb +17 -18
  305. data/spec/models/blacklight/solr/response/facets_spec.rb +58 -58
  306. data/spec/models/blacklight/solr/response/group_response_spec.rb +16 -22
  307. data/spec/models/blacklight/solr/response/group_spec.rb +18 -25
  308. data/spec/models/blacklight/solr/response_spec.rb +56 -55
  309. data/spec/models/blacklight/solr/search_builder_spec.rb +150 -164
  310. data/spec/models/blacklight/suggest/response_spec.rb +6 -4
  311. data/spec/models/blacklight/suggest_search_spec.rb +9 -16
  312. data/spec/models/blacklight/user_spec.rb +9 -11
  313. data/spec/models/bookmark_spec.rb +7 -6
  314. data/spec/models/record_mailer_spec.rb +23 -21
  315. data/spec/models/search_spec.rb +19 -18
  316. data/spec/models/solr_document_spec.rb +33 -5
  317. data/spec/presenters/blacklight/document_presenter_spec.rb +86 -0
  318. data/spec/presenters/blacklight/index_presenter_spec.rb +186 -0
  319. data/spec/presenters/blacklight/json_presenter_spec.rb +59 -0
  320. data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -0
  321. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +79 -0
  322. data/spec/presenters/blacklight/show_presenter_spec.rb +333 -0
  323. data/spec/presenters/pipeline_spec.rb +18 -11
  324. data/spec/presenters/thumbnail_presenter_spec.rb +174 -0
  325. data/spec/routing/catalog_routing_spec.rb +13 -15
  326. data/spec/services/blacklight/search_service_spec.rb +488 -0
  327. data/spec/spec_helper.rb +20 -19
  328. data/spec/support/features/session_helpers.rb +4 -4
  329. data/spec/support/features.rb +1 -1
  330. data/spec/test_app_templates/Gemfile.extra +2 -4
  331. data/spec/test_app_templates/lib/generators/test_app_generator.rb +12 -13
  332. data/spec/views/catalog/_constraints.html.erb_spec.rb +3 -6
  333. data/spec/views/catalog/_constraints_element.html.erb_spec.rb +17 -13
  334. data/spec/views/catalog/_document.html.erb_spec.rb +11 -11
  335. data/spec/views/catalog/_document_list.html.erb_spec.rb +2 -1
  336. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +5 -5
  337. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
  338. data/spec/views/catalog/_facets.html.erb_spec.rb +10 -12
  339. data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +14 -15
  340. data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +6 -9
  341. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +7 -30
  342. data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
  343. data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +13 -14
  344. data/spec/views/catalog/_show_sidebar.erb_spec.rb +6 -9
  345. data/spec/views/catalog/_show_tools.html.erb_spec.rb +5 -5
  346. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -2
  347. data/spec/views/catalog/_sort_widget.html.erb_spec.rb +3 -1
  348. data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +7 -9
  349. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +12 -10
  350. data/spec/views/catalog/email_success.html.erb_spec.rb +8 -0
  351. data/spec/views/catalog/facet.html.erb_spec.rb +4 -3
  352. data/spec/views/catalog/facet.json.jbuilder_spec.rb +3 -2
  353. data/spec/views/catalog/index.atom.builder_spec.rb +11 -6
  354. data/spec/views/catalog/index.html.erb_spec.rb +6 -8
  355. data/spec/views/catalog/index.json.jbuilder_spec.rb +119 -26
  356. data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
  357. data/spec/views/catalog/show.html.erb_spec.rb +8 -8
  358. data/spec/views/catalog/show.json.jbuilder_spec.rb +40 -0
  359. data/spec/views/catalog/sms_success.html.erb_spec.rb +8 -0
  360. data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -7
  361. data/tasks/blacklight.rake +10 -8
  362. data/template.demo.rb +3 -11
  363. metadata +188 -189
  364. data/app/assets/javascripts/blacklight/autofocus.js +0 -16
  365. data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
  366. data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -135
  367. data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
  368. data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
  369. data/app/controllers/concerns/blacklight/search_helper.rb +0 -155
  370. data/app/controllers/concerns/blacklight/suggest.rb +0 -25
  371. data/app/controllers/saved_searches_controller.rb +0 -4
  372. data/app/controllers/suggest_controller.rb +0 -4
  373. data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
  374. data/app/helpers/blacklight/render_partials_helper.rb +0 -205
  375. data/app/helpers/blacklight_configuration_helper.rb +0 -4
  376. data/app/helpers/blacklight_url_helper.rb +0 -4
  377. data/app/helpers/component_helper.rb +0 -4
  378. data/app/helpers/facets_helper.rb +0 -4
  379. data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
  380. data/app/helpers/layout_helper.rb +0 -4
  381. data/app/helpers/render_constraints_helper.rb +0 -4
  382. data/app/helpers/search_history_constraints_helper.rb +0 -4
  383. data/app/helpers/suggest_helper.rb +0 -4
  384. data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
  385. data/app/views/_user_util_links.html.erb +0 -26
  386. data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
  387. data/app/views/catalog/_index_default.html.erb +0 -12
  388. data/app/views/catalog/_show_default.html.erb +0 -10
  389. data/app/views/catalog/_thumbnail_default.html.erb +0 -5
  390. data/app/views/saved_searches/index.html.erb +0 -32
  391. data/app/views/shared/_ajax_modal.html.erb +0 -6
  392. data/lib/generators/blacklight/solr4_generator.rb +0 -31
  393. data/lib/generators/blacklight/templates/config/jetty.yml +0 -13
  394. data/solr/conf/schema.xml +0 -629
  395. data/solr/conf/solrconfig.xml +0 -411
  396. data/spec/controllers/blacklight/search_helper_spec.rb +0 -470
  397. data/spec/controllers/saved_searches_controller_spec.rb +0 -32
  398. data/spec/controllers/suggest_controller_spec.rb +0 -17
  399. data/spec/features/saved_searches_spec.rb +0 -47
  400. data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
  401. data/spec/lib/blacklight/utils_spec.rb +0 -167
  402. data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
  403. data/spec/presenters/document_presenter_spec.rb +0 -438
  404. data/spec/presenters/index_presenter_spec.rb +0 -173
  405. data/spec/presenters/show_presenter_spec.rb +0 -313
  406. data/spec/support/backport_test.rb +0 -14
  407. /data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
  408. /data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
  409. /data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
  410. /data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
  411. /data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
  412. /data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
  413. /data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
  414. /data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
  415. /data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
  416. /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
  417. /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
  418. /data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
  419. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
  420. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
  421. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
  422. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
@@ -1,13 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe Blacklight::Solr::SearchBuilderBehavior do
3
+ RSpec.describe Blacklight::Solr::SearchBuilderBehavior, api: true do
4
+ subject { search_builder.with(user_params) }
5
+
4
6
  let(:single_facet) { { format: 'Book' } }
5
- let(:multi_facets) { { format: 'Book', language_facet: 'Tibetan' } }
7
+ let(:multi_facets) { { format: 'Book', language_ssim: 'Tibetan' } }
6
8
  let(:mult_word_query) { 'tibetan history' }
7
9
  let(:subject_search_params) { { commit: "search", search_field: "subject", action: "index", controller: "catalog", rows: "10", q: "wome" } }
8
10
 
9
11
  let(:blacklight_config) { CatalogController.blacklight_config.deep_copy }
10
- let(:user_params) { Hash.new }
12
+ let(:user_params) { {} }
11
13
  let(:context) { CatalogController.new }
12
14
 
13
15
  before { allow(context).to receive(:blacklight_config).and_return(blacklight_config) }
@@ -19,25 +21,11 @@ describe Blacklight::Solr::SearchBuilderBehavior do
19
21
  end
20
22
  let(:search_builder) { search_builder_class.new(context) }
21
23
 
22
- subject { search_builder.with(user_params) }
23
-
24
24
  context "with default processor chain" do
25
- context "with two arguments" do
26
- subject do
27
- Deprecation.silence Blacklight::SearchBuilder do
28
- search_builder_class.new true, context
29
- end
30
- end
31
- it "uses the class-level default_processor_chain" do
32
- expect(subject.processor_chain).to eq search_builder_class.default_processor_chain
33
- end
34
- end
25
+ subject { search_builder }
35
26
 
36
- context "with one arguments" do
37
- subject { search_builder }
38
- it "uses the class-level default_processor_chain" do
39
- expect(subject.processor_chain).to eq search_builder_class.default_processor_chain
40
- end
27
+ it "uses the class-level default_processor_chain" do
28
+ expect(subject.processor_chain).to eq search_builder_class.default_processor_chain
41
29
  end
42
30
  end
43
31
 
@@ -45,40 +33,41 @@ describe Blacklight::Solr::SearchBuilderBehavior do
45
33
  subject { search_builder.with(user_params).processed_parameters }
46
34
 
47
35
  let(:user_params) do
48
- {:search_field => "test_field", :q => "test query", "facet.field" => "extra_facet"}
36
+ { :search_field => "test_field", :q => "test query", "facet.field" => "extra_facet" }
49
37
  end
50
38
 
51
39
  let(:blacklight_config) do
52
40
  Blacklight::Configuration.new.tap do |config|
53
41
  config.add_search_field("test_field",
54
- :display_label => "Test",
55
- :key=>"test_field",
56
- :solr_parameters => {
57
- :qf => "fieldOne^2.3 fieldTwo fieldThree^0.4",
58
- :pf => "",
59
- :spellcheck => 'false',
60
- :sort => "request_params_sort" }
61
- )
42
+ display_label: "Test",
43
+ key: "test_field",
44
+ solr_parameters: {
45
+ qf: "fieldOne^2.3 fieldTwo fieldThree^0.4",
46
+ pf: "",
47
+ spellcheck: 'false',
48
+ sort: "request_params_sort"
49
+ })
62
50
  end
63
51
  end
64
- it "should merge parameters from search_field definition" do
52
+
53
+ it "merges parameters from search_field definition" do
65
54
  expect(subject[:qf]).to eq "fieldOne^2.3 fieldTwo fieldThree^0.4"
66
55
  expect(subject[:spellcheck]).to eq 'false'
67
56
  end
68
- it "should merge empty string parameters from search_field definition" do
57
+ it "merges empty string parameters from search_field definition" do
69
58
  expect(subject[:pf]).to eq ""
70
59
  end
71
60
 
72
61
  describe "should respect proper precedence of settings, " do
73
- it "should not put :search_field in produced params" do
62
+ it "does not put :search_field in produced params" do
74
63
  expect(subject[:search_field]).to be_nil
75
64
  end
76
65
 
77
- it "should fall through to BL general defaults for qt not otherwise specified " do
66
+ it "falls through to BL general defaults for qt not otherwise specified" do
78
67
  expect(subject[:qt]).to eq blacklight_config[:default_solr_params][:qt]
79
68
  end
80
69
 
81
- it "should take q from request params" do
70
+ it "takes q from request params" do
82
71
  expect(subject[:q]).to eq "test query"
83
72
  end
84
73
  end
@@ -95,41 +84,41 @@ describe Blacklight::Solr::SearchBuilderBehavior do
95
84
  let(:method_chain) { [:add_foo_to_solr_params] }
96
85
 
97
86
  it "allows customization of search_params_logic" do
98
- allow(search_builder).to receive(:add_foo_to_solr_params) do |solr_params, user_params|
99
- solr_params[:wt] = "TESTING"
100
- end
87
+ allow(search_builder).to receive(:add_foo_to_solr_params) do |solr_params, _user_params|
88
+ solr_params[:wt] = "TESTING"
89
+ end
101
90
 
102
- expect(subject[:wt]).to eq "TESTING"
91
+ expect(subject[:wt]).to eq "TESTING"
103
92
  end
104
93
  end
105
94
 
106
- it "should generate a facet limit" do
107
- expect(subject[:"f.subject_topic_facet.facet.limit"]).to eq 21
95
+ it "generates a facet limit" do
96
+ expect(subject[:"f.subject_ssim.facet.limit"]).to eq 21
108
97
  end
109
98
 
110
99
  context 'with a negative facet limit' do
111
100
  before do
112
- blacklight_config.facet_fields['subject_topic_facet'].limit = -1
101
+ blacklight_config.facet_fields['subject_ssim'].limit = -1
113
102
  end
114
103
 
115
104
  it 'is negative' do
116
- expect(subject[:"f.subject_topic_facet.facet.limit"]).to eq -1
105
+ expect(subject[:"f.subject_ssim.facet.limit"]).to eq -1
117
106
  end
118
107
  end
119
108
 
120
109
  context 'with a facet limit set to 0' do
121
110
  before do
122
- blacklight_config.facet_fields['subject_topic_facet'].limit = 0
111
+ blacklight_config.facet_fields['subject_ssim'].limit = 0
123
112
  end
124
113
 
125
114
  it 'is negative' do
126
- expect(subject[:"f.subject_topic_facet.facet.limit"]).to eq 0
115
+ expect(subject[:"f.subject_ssim.facet.limit"]).to eq 0
127
116
  end
128
117
  end
129
118
 
130
- it "should handle no facet_limits in config" do
119
+ it "handles no facet_limits in config" do
131
120
  blacklight_config.facet_fields = {}
132
- expect(subject).not_to have_key(:"f.subject_topic_facet.facet.limit")
121
+ expect(subject).not_to have_key(:"f.subject_ssim.facet.limit")
133
122
  end
134
123
 
135
124
  describe "with max per page enforced" do
@@ -139,8 +128,9 @@ describe Blacklight::Solr::SearchBuilderBehavior do
139
128
  end
140
129
  end
141
130
 
142
- let(:user_params) { { per_page: 98765 } }
143
- it "should enforce max_per_page against all parameters" do
131
+ let(:user_params) { { per_page: 98_765 } }
132
+
133
+ it "enforces max_per_page against all parameters" do
144
134
  expect(blacklight_config.max_per_page).to eq 123
145
135
  expect(subject[:rows]).to eq 123
146
136
  end
@@ -155,56 +145,55 @@ describe Blacklight::Solr::SearchBuilderBehavior do
155
145
  end
156
146
  end
157
147
 
158
- it "should use the configured solr field name in queries" do
148
+ it "uses the configured solr field name in queries" do
159
149
  expect(subject).to include 'f.solr_field.facet.limit': 51,
160
150
  'facet.field': ['{!ex=other}solr_field']
161
151
  end
162
152
  end
163
153
 
164
154
  describe 'for an entirely empty search' do
165
-
166
- it 'should not have a q param' do
155
+ it 'does not have a q param' do
167
156
  expect(subject[:q]).to be_nil
168
157
  expect(subject["spellcheck.q"]).to be_nil
169
158
  end
170
- it 'should have default rows' do
159
+ it 'has default rows' do
171
160
  expect(subject[:rows]).to eq 10
172
161
  end
173
- it 'should have default facet fields' do
162
+ it 'has default facet fields' do
174
163
  # remove local params from the facet.field
175
- expect(subject[:"facet.field"].map { |x| x.gsub(/\{![^}]+\}/, '') }).to match_array ["format", "subject_topic_facet", "pub_date", "language_facet", "lc_1letter_facet", "subject_geo_facet", "subject_era_facet"]
164
+ expect(subject[:"facet.field"].map { |x| x.gsub(/\{![^}]+\}/, '') }).to match_array %w[format subject_ssim pub_date_ssim language_ssim lc_1letter_ssim subject_geo_ssim subject_era_ssim]
176
165
  end
177
166
 
178
- it "should not have a default qt" do
167
+ it "does not have a default qt" do
179
168
  expect(subject[:qt]).to be_nil
180
169
  end
181
- it "should have no fq" do
170
+ it "has no fq" do
182
171
  expect(subject[:phrase_filters]).to be_blank
183
172
  expect(subject[:fq]).to be_blank
184
173
  end
185
174
  end
186
175
 
187
-
188
176
  describe "for an empty string search" do
189
177
  let(:user_params) { { q: "" } }
190
- it "should return empty string q in solr parameters" do
178
+
179
+ it "returns empty string q in solr parameters" do
191
180
  expect(subject[:q]).to eq ""
192
181
  end
193
182
  end
194
183
 
195
184
  describe "for request params also passed in as argument" do
196
185
  let(:user_params) { { q: "some query", 'q' => 'another value' } }
197
- it "should only have one value for the key 'q' regardless if a symbol or string" do
186
+
187
+ it "onlies have one value for the key 'q' regardless if a symbol or string" do
198
188
  expect(subject[:q]).to eq 'some query'
199
189
  expect(subject['q']).to eq 'some query'
200
190
  end
201
191
  end
202
192
 
203
-
204
193
  describe "for one facet, no query" do
205
194
  let(:user_params) { { f: single_facet } }
206
- it "should have proper solr parameters" do
207
195
 
196
+ it "has proper solr parameters" do
208
197
  expect(subject[:q]).to be_blank
209
198
  expect(subject["spellcheck.q"]).to be_blank
210
199
 
@@ -216,40 +205,41 @@ describe Blacklight::Solr::SearchBuilderBehavior do
216
205
 
217
206
  describe "for an empty facet limit param" do
218
207
  let(:user_params) { { f: { "format" => [""] } } }
219
- it "should not add any fq to solr" do
208
+
209
+ it "does not add any fq to solr" do
220
210
  expect(subject[:fq]).to be_blank
221
211
  end
222
212
  end
223
213
 
224
214
  describe "with Multi Facets, No Query" do
225
215
  let(:user_params) { { f: multi_facets } }
226
- it 'should have fq set properly' do
216
+
217
+ it 'has fq set properly' do
227
218
  multi_facets.each_pair do |facet_field, value_list|
228
219
  value_list ||= []
229
220
  value_list = [value_list] unless value_list.respond_to? :each
230
221
  value_list.each do |value|
231
- expect(subject[:fq]).to include("{!term f=#{facet_field}}#{value}" )
222
+ expect(subject[:fq]).to include("{!term f=#{facet_field}}#{value}")
232
223
  end
233
224
  end
234
-
235
225
  end
236
226
  end
237
227
 
238
228
  describe "with Multi Facets, Multi Word Query" do
239
229
  let(:user_params) { { q: mult_word_query, f: multi_facets } }
240
- it 'should have fq and q set properly' do
230
+
231
+ it 'has fq and q set properly' do
241
232
  multi_facets.each_pair do |facet_field, value_list|
242
233
  value_list ||= []
243
234
  value_list = [value_list] unless value_list.respond_to? :each
244
235
  value_list.each do |value|
245
- expect(subject[:fq]).to include("{!term f=#{facet_field}}#{value}" )
236
+ expect(subject[:fq]).to include("{!term f=#{facet_field}}#{value}")
246
237
  end
247
238
  end
248
239
  expect(subject[:q]).to eq mult_word_query
249
240
  end
250
241
  end
251
242
 
252
-
253
243
  describe "solr parameters for a field search from config (subject)" do
254
244
  let(:user_params) { subject_search_params }
255
245
 
@@ -261,11 +251,11 @@ describe Blacklight::Solr::SearchBuilderBehavior do
261
251
  }
262
252
  end
263
253
 
264
- it "should look up qt from field definition" do
254
+ it "looks up qt from field definition" do
265
255
  expect(subject[:qt]).to eq "search"
266
256
  end
267
257
 
268
- it "should not include weird keys not in field definition" do
258
+ it "does not include weird keys not in field definition" do
269
259
  expect(subject[:phrase_filters]).to be_nil
270
260
  expect(subject[:fq]).to eq []
271
261
  expect(subject[:commit]).to be_nil
@@ -273,26 +263,26 @@ describe Blacklight::Solr::SearchBuilderBehavior do
273
263
  expect(subject[:controller]).to be_nil
274
264
  end
275
265
 
276
- it "should include proper 'q', possibly with LocalParams" do
266
+ it "includes proper 'q', possibly with LocalParams" do
277
267
  expect(subject[:q]).to match(/(\{[^}]+\})?wome/)
278
268
  end
279
- it "should include proper 'q' when LocalParams are used" do
280
- if subject[:q] =~ /\{[^}]+\}/
269
+ it "includes proper 'q' when LocalParams are used" do
270
+ if /\{[^}]+\}/.match?(subject[:q])
281
271
  expect(subject[:q]).to match(/\{[^}]+\}wome/)
282
272
  end
283
273
  end
284
- it "should include spellcheck.q, without LocalParams" do
274
+ it "includes spellcheck.q, without LocalParams" do
285
275
  expect(subject["spellcheck.q"]).to eq "wome"
286
276
  end
287
277
 
288
- it "should include spellcheck.dictionary from field def solr_parameters" do
278
+ it "includes spellcheck.dictionary from field def solr_parameters" do
289
279
  expect(subject[:"spellcheck.dictionary"]).to eq "subject"
290
280
  end
291
- it "should add on :solr_local_parameters using Solr LocalParams style" do
292
- #q == "{!pf=$subject_pf $qf=subject_qf} wome", make sure
293
- #the LocalParams are really there
281
+ it "adds on :solr_local_parameters using Solr LocalParams style" do
282
+ # q == "{!pf=$subject_pf $qf=subject_qf} wome", make sure
283
+ # the LocalParams are really there
294
284
  subject[:q] =~ /^\{!([^}]+)\}/
295
- key_value_pairs = $1.split(" ")
285
+ key_value_pairs = Regexp.last_match(1).split(" ")
296
286
  expect(key_value_pairs).to include("pf=$subject_pf")
297
287
  expect(key_value_pairs).to include("qf=$subject_qf")
298
288
  end
@@ -303,28 +293,42 @@ describe Blacklight::Solr::SearchBuilderBehavior do
303
293
  { qt: 'overridden' }
304
294
  end
305
295
 
306
- it "should return the correct overriden parameter" do
296
+ it "returns the correct overriden parameter" do
307
297
  expect(subject[:qt]).to eq "overridden"
308
298
  end
309
299
  end
310
300
 
311
-
312
301
  describe "sorting" do
313
- it "should send the default sort parameter to solr" do
314
- expect(subject[:sort]).to eq 'score desc, pub_date_sort desc, title_sort asc'
302
+ context 'when the user has not provided a value' do
303
+ it 'sends the default sort parameter to solr' do
304
+ expect(subject[:sort]).to eq 'score desc, pub_date_si desc, title_si asc'
305
+ end
315
306
  end
316
307
 
317
- it "should not send a sort parameter to solr if the sort value is blank" do
318
- blacklight_config.sort_fields = {}
319
- blacklight_config.add_sort_field('', :label => 'test')
308
+ context "when the configured sort field is blank" do
309
+ before do
310
+ blacklight_config.sort_fields = {}
311
+ blacklight_config.add_sort_field('', label: 'test')
312
+ end
320
313
 
321
- expect(subject).not_to have_key(:sort)
314
+ it "does not send a sort parameter to solr if the sort value is blank" do
315
+ expect(subject).not_to have_key(:sort)
316
+ end
322
317
  end
323
318
 
324
- context "when the user provides sort parmeters" do
325
- let(:user_params) { { sort: 'solr_test_field desc' } }
319
+ context "when the user provides a valid sort parmeter" do
320
+ let(:user_params) { { sort: 'title_si asc, pub_date_si desc' } }
321
+
326
322
  it "passes them through" do
327
- expect(subject[:sort]).to eq 'solr_test_field desc'
323
+ expect(subject[:sort]).to eq 'title_si asc, pub_date_si desc'
324
+ end
325
+ end
326
+
327
+ context "when the user provides an invalid sort parameter" do
328
+ let(:user_params) { { sort: 'bad' } }
329
+
330
+ it "removes them" do
331
+ expect(subject).not_to have_key(:sort)
328
332
  end
329
333
  end
330
334
  end
@@ -334,17 +338,17 @@ describe Blacklight::Solr::SearchBuilderBehavior do
334
338
  config = Blacklight::Configuration.new
335
339
  config.add_search_field(
336
340
  "custom_author_key",
337
- :display_label => "Author",
338
- :qt => "author_qt",
339
- :key => "custom_author_key",
340
- :solr_local_parameters => {
341
- :qf => "$author_qf",
342
- :pf => "you'll have \" to escape this",
343
- :pf2 => "$pf2_do_not_escape_or_quote"
341
+ display_label: "Author",
342
+ qt: "author_qt",
343
+ key: "custom_author_key",
344
+ solr_local_parameters: {
345
+ qf: "$author_qf",
346
+ pf: "you'll have \" to escape this",
347
+ pf2: "$pf2_do_not_escape_or_quote"
344
348
  },
345
- :solr_parameters => {
346
- :qf => "someField^1000",
347
- :ps => "2"
349
+ solr_parameters: {
350
+ qf: "someField^1000",
351
+ ps: "2"
348
352
  }
349
353
  )
350
354
  return config
@@ -352,13 +356,13 @@ describe Blacklight::Solr::SearchBuilderBehavior do
352
356
 
353
357
  let(:user_params) { { search_field: "custom_author_key", q: "query" } }
354
358
 
355
- it "should pass through ordinary params" do
359
+ it "passes through ordinary params" do
356
360
  expect(subject[:qt]).to eq "author_qt"
357
361
  expect(subject[:ps]).to eq "2"
358
362
  expect(subject[:qf]).to eq "someField^1000"
359
363
  end
360
364
 
361
- it "should include include local params with escaping" do
365
+ it "includes include local params with escaping" do
362
366
  expect(subject[:q]).to include('qf=$author_qf')
363
367
  expect(subject[:q]).to include('pf=\'you\\\'ll have \\" to escape this\'')
364
368
  expect(subject[:q]).to include('pf2=$pf2_do_not_escape_or_quote')
@@ -375,63 +379,62 @@ describe Blacklight::Solr::SearchBuilderBehavior do
375
379
  end
376
380
  end
377
381
 
378
-
379
382
  describe "#facet_value_to_fq_string" do
380
- it "should use the configured field name" do
383
+ it "uses the configured field name" do
381
384
  blacklight_config.add_facet_field :facet_key, field: "facet_name"
382
385
  expect(subject.send(:facet_value_to_fq_string, "facet_key", "my value")).to eq "{!term f=facet_name}my value"
383
386
  end
384
387
 
385
- it "should use the raw handler for strings" do
388
+ it "uses the raw handler for strings" do
386
389
  expect(subject.send(:facet_value_to_fq_string, "facet_name", "my value")).to eq "{!term f=facet_name}my value"
387
390
  end
388
391
 
389
- it "should pass booleans through" do
392
+ it "passes booleans through" do
390
393
  expect(subject.send(:facet_value_to_fq_string, "facet_name", true)).to eq '{!term f=facet_name}true'
391
394
  end
392
395
 
393
- it "should pass boolean-like strings through" do
396
+ it "passes boolean-like strings through" do
394
397
  expect(subject.send(:facet_value_to_fq_string, "facet_name", "true")).to eq '{!term f=facet_name}true'
395
398
  end
396
399
 
397
- it "should pass integers through" do
400
+ it "passes integers through" do
398
401
  expect(subject.send(:facet_value_to_fq_string, "facet_name", 1)).to eq '{!term f=facet_name}1'
399
402
  end
400
403
 
401
- it "should pass integer-like strings through" do
404
+ it "passes integer-like strings through" do
402
405
  expect(subject.send(:facet_value_to_fq_string, "facet_name", "1")).to eq '{!term f=facet_name}1'
403
406
  expect(subject.send(:facet_value_to_fq_string, "facet_name", -1)).to eq '{!term f=facet_name}-1'
404
407
  end
405
408
 
406
- it "should pass floats through" do
409
+ it "passes floats through" do
407
410
  expect(subject.send(:facet_value_to_fq_string, "facet_name", 1.11)).to eq '{!term f=facet_name}1.11'
408
411
  end
409
412
 
410
- it "should pass floats through" do
413
+ it "passes floats through" do
411
414
  expect(subject.send(:facet_value_to_fq_string, "facet_name", "1.11")).to eq '{!term f=facet_name}1.11'
412
415
  end
413
416
 
414
417
  context 'date handling' do
415
- before { allow(blacklight_config.facet_fields).to receive(:[]).with('facet_name').and_return(double(:date => true, :query => nil, :tag => nil, :field => 'facet_name')) }
418
+ before { allow(blacklight_config.facet_fields).to receive(:[]).with('facet_name').and_return(double(date: true, query: nil, tag: nil, field: 'facet_name')) }
416
419
 
417
- it "should pass date-type fields through" do
420
+ it "passes date-type fields through" do
418
421
  expect(subject.send(:facet_value_to_fq_string, "facet_name", "2012-01-01")).to eq '{!term f=facet_name}2012-01-01'
419
422
  expect(subject.send(:facet_value_to_fq_string, "facet_name", "2003-04-09T00:00:00Z")).to eq '{!term f=facet_name}2003-04-09T00:00:00Z'
420
423
  end
421
424
 
422
- it "should format Date objects correctly" do
423
- allow(blacklight_config.facet_fields).to receive(:[]).with('facet_name').and_return(double(:date => nil, :query => nil, :tag => nil, :field => 'facet_name'))
425
+ it "formats Date objects correctly" do
426
+ allow(blacklight_config.facet_fields).to receive(:[]).with('facet_name').and_return(double(date: nil, query: nil, tag: nil, field: 'facet_name'))
424
427
  d = DateTime.parse("2003-04-09T00:00:00")
425
428
  expect(subject.send(:facet_value_to_fq_string, "facet_name", d)).to eq '{!term f=facet_name}2003-04-09T00:00:00Z'
426
429
  end
427
430
  end
428
431
 
429
- it "should handle range requests" do
432
+ it "handles range requests" do
430
433
  expect(subject.send(:facet_value_to_fq_string, "facet_name", 1..5)).to eq "facet_name:[1 TO 5]"
431
434
  end
432
435
 
433
- it "should add tag local parameters" do
434
- allow(blacklight_config.facet_fields).to receive(:[]).with('facet_name').and_return(double(:query => nil, :tag => 'asdf', :date => nil, :field => 'facet_name'))
436
+ it "adds tag local parameters" do
437
+ allow(blacklight_config.facet_fields).to receive(:[]).with('facet_name').and_return(double(query: nil, tag: 'asdf', date: nil, field: 'facet_name'))
435
438
 
436
439
  expect(subject.send(:facet_value_to_fq_string, "facet_name", true)).to eq "{!term f=facet_name tag=asdf}true"
437
440
  expect(subject.send(:facet_value_to_fq_string, "facet_name", "my value")).to eq "{!term f=facet_name tag=asdf}my value"
@@ -440,7 +443,7 @@ describe Blacklight::Solr::SearchBuilderBehavior do
440
443
 
441
444
  describe "#add_facet_fq_to_solr" do
442
445
  it "converts a String fq into an Array" do
443
- solr_parameters = {:fq => 'a string' }
446
+ solr_parameters = { fq: 'a string' }
444
447
 
445
448
  subject.add_facet_fq_to_solr(solr_parameters)
446
449
 
@@ -450,10 +453,9 @@ describe Blacklight::Solr::SearchBuilderBehavior do
450
453
 
451
454
  describe "#add_solr_fields_to_query" do
452
455
  let(:blacklight_config) do
453
- config = Blacklight::Configuration.new do |config|
454
-
455
- config.add_index_field 'an_index_field', solr_params: { 'hl.alternativeField' => 'field_x'}
456
- config.add_show_field 'a_show_field', solr_params: { 'hl.alternativeField' => 'field_y'}
456
+ Blacklight::Configuration.new do |config|
457
+ config.add_index_field 'an_index_field', solr_params: { 'hl.alternativeField' => 'field_x' }
458
+ config.add_show_field 'a_show_field', solr_params: { 'hl.alternativeField' => 'field_y' }
457
459
  config.add_field_configuration_to_solr_request!
458
460
  end
459
461
  end
@@ -466,24 +468,21 @@ describe Blacklight::Solr::SearchBuilderBehavior do
466
468
  solr_parameters
467
469
  end
468
470
 
469
- it "should add any extra solr parameters from index and show fields" do
471
+ it "adds any extra solr parameters from index and show fields" do
470
472
  expect(solr_parameters[:'f.an_index_field.hl.alternativeField']).to eq "field_x"
471
473
  expect(solr_parameters[:'f.a_show_field.hl.alternativeField']).to eq "field_y"
472
474
  end
473
475
  end
474
476
 
475
477
  describe "#add_facetting_to_solr" do
476
-
477
478
  let(:blacklight_config) do
478
- config = Blacklight::Configuration.new
479
-
480
- config.add_facet_field 'test_field', :sort => 'count'
481
- config.add_facet_field 'some-query', :query => {'x' => {:fq => 'some:query' }}, :ex => 'xyz'
482
- config.add_facet_field 'some-pivot', :pivot => ['a','b'], :ex => 'xyz'
483
- config.add_facet_field 'some-field', solr_params: { 'facet.mincount' => 15 }
484
- config.add_facet_fields_to_solr_request!
485
-
486
- config
479
+ Blacklight::Configuration.new do |config|
480
+ config.add_facet_field 'test_field', sort: 'count'
481
+ config.add_facet_field 'some-query', query: { 'x' => { fq: 'some:query' } }, ex: 'xyz'
482
+ config.add_facet_field 'some-pivot', pivot: %w[a b], ex: 'xyz'
483
+ config.add_facet_field 'some-field', solr_params: { 'facet.mincount' => 15 }
484
+ config.add_facet_fields_to_solr_request!
485
+ end
487
486
  end
488
487
 
489
488
  let(:solr_parameters) do
@@ -494,19 +493,19 @@ describe Blacklight::Solr::SearchBuilderBehavior do
494
493
  solr_parameters
495
494
  end
496
495
 
497
- it "should add sort parameters" do
496
+ it "adds sort parameters" do
498
497
  expect(solr_parameters[:facet]).to be true
499
498
 
500
499
  expect(solr_parameters[:'facet.field']).to include('test_field')
501
500
  expect(solr_parameters[:'f.test_field.facet.sort']).to eq 'count'
502
501
  end
503
502
 
504
- it "should add facet exclusions" do
503
+ it "adds facet exclusions" do
505
504
  expect(solr_parameters[:'facet.query']).to include('{!ex=xyz}some:query')
506
505
  expect(solr_parameters[:'facet.pivot']).to include('{!ex=xyz}a,b')
507
506
  end
508
507
 
509
- it "should add any additional solr_params" do
508
+ it "adds any additional solr_params" do
510
509
  expect(solr_parameters[:'f.some-field.facet.mincount']).to eq 15
511
510
  end
512
511
 
@@ -517,7 +516,7 @@ describe Blacklight::Solr::SearchBuilderBehavior do
517
516
  solr_parameters
518
517
  end
519
518
 
520
- it "should respect the include_in_request parameter" do
519
+ it "respects the include_in_request parameter" do
521
520
  blacklight_config.add_facet_field 'yes_facet', include_in_request: true
522
521
  blacklight_config.add_facet_field 'no_facet', include_in_request: false
523
522
 
@@ -525,7 +524,7 @@ describe Blacklight::Solr::SearchBuilderBehavior do
525
524
  expect(solr_parameters[:'facet.field']).not_to include('no_facet')
526
525
  end
527
526
 
528
- it "should default to including facets if add_facet_fields_to_solr_request! was called" do
527
+ it "defaults to including facets if add_facet_fields_to_solr_request! was called" do
529
528
  blacklight_config.add_facet_field 'yes_facet'
530
529
  blacklight_config.add_facet_field 'no_facet', include_in_request: false
531
530
  blacklight_config.add_facet_fields_to_solr_request!
@@ -536,7 +535,6 @@ describe Blacklight::Solr::SearchBuilderBehavior do
536
535
  end
537
536
 
538
537
  describe ":add_facet_fields_to_solr_request!" do
539
-
540
538
  let(:blacklight_config) do
541
539
  config = Blacklight::Configuration.new
542
540
  config.add_facet_field 'yes_facet', include_in_request: true
@@ -552,23 +550,23 @@ describe Blacklight::Solr::SearchBuilderBehavior do
552
550
  solr_parameters
553
551
  end
554
552
 
555
- it "should add facets to the solr request" do
553
+ it "adds facets to the solr request" do
556
554
  blacklight_config.add_facet_fields_to_solr_request!
557
- expect(solr_parameters[:'facet.field']).to match_array ['yes_facet', 'maybe_facet', 'another_facet']
555
+ expect(solr_parameters[:'facet.field']).to match_array %w[yes_facet maybe_facet another_facet]
558
556
  end
559
557
 
560
- it "should not override field-specific configuration by default" do
558
+ it "does not override field-specific configuration by default" do
561
559
  blacklight_config.add_facet_fields_to_solr_request!
562
- expect(solr_parameters[:'facet.field']).to_not include 'no_facet'
560
+ expect(solr_parameters[:'facet.field']).not_to include 'no_facet'
563
561
  end
564
562
 
565
- it "should allow white-listing facets" do
563
+ it "allows white-listing facets" do
566
564
  blacklight_config.add_facet_fields_to_solr_request! 'maybe_facet'
567
565
  expect(solr_parameters[:'facet.field']).to include 'maybe_facet'
568
566
  expect(solr_parameters[:'facet.field']).not_to include 'another_facet'
569
567
  end
570
568
 
571
- it "should allow white-listed facets to override any field-specific include_in_request configuration" do
569
+ it "allows white-listed facets to override any field-specific include_in_request configuration" do
572
570
  blacklight_config.add_facet_fields_to_solr_request! 'no_facet'
573
571
  expect(solr_parameters[:'facet.field']).to include 'no_facet'
574
572
  end
@@ -608,6 +606,7 @@ describe Blacklight::Solr::SearchBuilderBehavior do
608
606
  end
609
607
  context 'when offset is manually set' do
610
608
  let(:user_params) { { page_key => 2 } }
609
+
611
610
  it 'uses offset manually set, and converts it to an integer' do
612
611
  expect(solr_parameters[:"f.#{facet_field}.facet.offset"]).to eq 20
613
612
  end
@@ -633,7 +632,7 @@ describe Blacklight::Solr::SearchBuilderBehavior do
633
632
  end
634
633
  end
635
634
 
636
- it "should use the configured solr field name in queries" do
635
+ it "uses the configured solr field name in queries" do
637
636
  expect(solr_parameters).to include 'f.solr_field.facet.limit': 51,
638
637
  'f.solr_field.facet.offset': 50,
639
638
  'f.solr_field.facet.sort': 'index',
@@ -646,26 +645,13 @@ describe Blacklight::Solr::SearchBuilderBehavior do
646
645
  expect(solr_parameters[:"f.#{facet_field}.facet.limit"]).to eq 21
647
646
  end
648
647
 
649
- context 'when facet_list_limit is defined in scope' do
650
- before do
651
- allow(Deprecation).to receive(:warn)
652
- allow(context).to receive_messages facet_list_limit: 1000
653
- end
654
- it 'uses scope method for limit' do
655
- expect(solr_parameters[:"f.#{facet_field}.facet.limit"]).to eq 1001
656
- end
657
-
658
- it 'uses controller method for limit when a ordinary limit is set' do
659
- expect(solr_parameters[:"f.#{facet_field}.facet.limit"]).to eq 1001
660
- end
661
- end
662
-
663
648
  it 'uses the default sort' do
664
649
  expect(solr_parameters[:"f.#{facet_field}.facet.sort"]).to be_blank
665
650
  end
666
651
 
667
652
  context 'when sort is provided' do
668
653
  let(:user_params) { { sort_key => 'index' } }
654
+
669
655
  it 'uses sort provided in the parameters' do
670
656
  expect(solr_parameters[:"f.#{facet_field}.facet.sort"]).to eq 'index'
671
657
  end
@@ -673,6 +659,7 @@ describe Blacklight::Solr::SearchBuilderBehavior do
673
659
 
674
660
  context 'when a prefix is provided' do
675
661
  let(:user_params) { { prefix_key => 'A' } }
662
+
676
663
  it 'includes the prefix in the query' do
677
664
  expect(solr_parameters[:"f.#{facet_field}.facet.prefix"]).to eq 'A'
678
665
  end
@@ -680,12 +667,11 @@ describe Blacklight::Solr::SearchBuilderBehavior do
680
667
  end
681
668
 
682
669
  describe "#with_tag_ex" do
683
- it "should add an !ex local parameter if the facet configuration requests it" do
670
+ it "adds an !ex local parameter if the facet configuration requests it" do
684
671
  expect(subject.with_ex_local_param("xyz", "some-value")).to eq "{!ex=xyz}some-value"
685
672
  end
686
673
 
687
- it "should not add an !ex local parameter if it isn't configured" do
688
- mock_field = double()
674
+ it "does not add an !ex local parameter if it isn't configured" do
689
675
  expect(subject.with_ex_local_param(nil, "some-value")).to eq "some-value"
690
676
  end
691
677
  end