blacklight 7.33.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. checksums.yaml +4 -4
  2. data/.env +3 -2
  3. data/.github/workflows/ruby.yml +38 -107
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +243 -2
  6. data/.rubocop_todo.yml +216 -270
  7. data/Gemfile +7 -6
  8. data/README.md +12 -4
  9. data/Rakefile +18 -0
  10. data/VERSION +1 -1
  11. data/app/assets/config/blacklight/manifest.js +3 -0
  12. data/app/assets/javascripts/blacklight/blacklight.esm.js +376 -0
  13. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -0
  14. data/app/assets/javascripts/blacklight/blacklight.js +332 -485
  15. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -0
  16. data/app/assets/stylesheets/blacklight/_autocomplete.scss +25 -0
  17. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -1
  18. data/app/assets/stylesheets/blacklight/_bookmark.scss +16 -0
  19. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +8 -0
  20. data/app/assets/stylesheets/blacklight/_facets.scss +104 -49
  21. data/app/assets/stylesheets/blacklight/_header.scss +0 -15
  22. data/app/assets/stylesheets/blacklight/_icons.scss +0 -14
  23. data/app/assets/stylesheets/blacklight/_mixins.scss +20 -0
  24. data/app/assets/stylesheets/blacklight/_modal.scss +8 -2
  25. data/app/assets/stylesheets/blacklight/_search_form.scss +30 -3
  26. data/app/assets/stylesheets/blacklight/_search_history.scss +10 -1
  27. data/app/assets/stylesheets/blacklight/_search_results.scss +6 -2
  28. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +4 -1
  29. data/app/builders/blacklight/action_builder.rb +18 -9
  30. data/app/components/blacklight/advanced_search_form_component.html.erb +1 -1
  31. data/app/components/blacklight/advanced_search_form_component.rb +7 -9
  32. data/app/components/blacklight/constraints_component.rb +27 -37
  33. data/app/components/blacklight/document/action_component.html.erb +2 -9
  34. data/app/components/blacklight/document/action_component.rb +26 -8
  35. data/app/components/blacklight/document/actions_component.rb +2 -2
  36. data/app/components/blacklight/document/bookmark_component.html.erb +9 -0
  37. data/app/components/blacklight/document/bookmark_component.rb +4 -2
  38. data/app/components/blacklight/document/citation_component.rb +5 -3
  39. data/app/components/blacklight/document/group_component.rb +7 -3
  40. data/app/components/blacklight/document/show_tools_component.html.erb +12 -0
  41. data/app/components/blacklight/document/show_tools_component.rb +23 -0
  42. data/app/components/blacklight/document/sidebar_component.html.erb +2 -0
  43. data/app/components/blacklight/document/sidebar_component.rb +16 -0
  44. data/app/components/blacklight/document/thumbnail_component.html.erb +2 -7
  45. data/app/components/blacklight/document/thumbnail_component.rb +1 -9
  46. data/app/components/blacklight/document_component.html.erb +4 -0
  47. data/app/components/blacklight/document_component.rb +54 -42
  48. data/app/components/blacklight/document_metadata_component.html.erb +4 -2
  49. data/app/components/blacklight/document_metadata_component.rb +11 -6
  50. data/app/components/blacklight/document_title_component.rb +4 -1
  51. data/app/components/blacklight/facet_component.rb +1 -1
  52. data/app/components/blacklight/facet_field_checkboxes_component.html.erb +3 -3
  53. data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
  54. data/app/components/blacklight/facet_field_component.html.erb +5 -5
  55. data/app/components/blacklight/facet_field_component.rb +9 -2
  56. data/app/components/blacklight/facet_field_list_component.html.erb +3 -3
  57. data/app/components/blacklight/facet_field_list_component.rb +37 -5
  58. data/app/components/blacklight/facet_field_no_layout_component.rb +0 -2
  59. data/app/components/blacklight/facet_item_component.rb +1 -43
  60. data/app/components/blacklight/facet_item_pivot_component.rb +21 -23
  61. data/app/components/blacklight/header_component.html.erb +2 -0
  62. data/app/components/blacklight/header_component.rb +26 -0
  63. data/app/components/blacklight/hidden_search_state_component.rb +1 -2
  64. data/app/components/blacklight/icons/legacy_icon_component.rb +30 -0
  65. data/app/components/blacklight/icons/list_component.rb +16 -0
  66. data/app/components/blacklight/icons/search_component.rb +16 -0
  67. data/app/components/blacklight/metadata_field_component.html.erb +2 -2
  68. data/app/components/blacklight/metadata_field_component.rb +24 -8
  69. data/app/components/blacklight/metadata_field_layout_component.rb +7 -22
  70. data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +17 -0
  71. data/app/components/blacklight/response/facet_group_component.html.erb +5 -6
  72. data/app/components/blacklight/response/facet_group_component.rb +29 -8
  73. data/app/components/blacklight/response/sort_component.rb +2 -2
  74. data/app/components/blacklight/response/spellcheck_component.rb +18 -7
  75. data/app/components/blacklight/response/view_type_button_component.rb +3 -7
  76. data/app/components/blacklight/response/view_type_component.rb +4 -6
  77. data/app/components/blacklight/search/sidebar_component.html.erb +8 -0
  78. data/app/components/blacklight/search/sidebar_component.rb +17 -0
  79. data/app/components/blacklight/search_bar_component.html.erb +20 -15
  80. data/app/components/blacklight/search_bar_component.rb +2 -16
  81. data/app/components/blacklight/search_button_component.rb +3 -3
  82. data/app/components/blacklight/search_context/server_applied_params_component.html.erb +4 -0
  83. data/app/components/blacklight/search_context/server_applied_params_component.rb +13 -0
  84. data/app/components/blacklight/search_context/server_item_pagination_component.rb +71 -0
  85. data/app/components/blacklight/search_header_component.html.erb +2 -0
  86. data/app/components/blacklight/search_header_component.rb +6 -0
  87. data/app/components/blacklight/search_navbar_component.html.erb +5 -0
  88. data/app/components/blacklight/search_navbar_component.rb +34 -0
  89. data/app/components/blacklight/start_over_button_component.rb +5 -3
  90. data/app/components/blacklight/system/dropdown_component.rb +3 -3
  91. data/app/components/blacklight/system/flash_message_component.html.erb +3 -1
  92. data/app/components/blacklight/system/flash_message_component.rb +12 -3
  93. data/app/components/blacklight/system/modal_component.html.erb +1 -1
  94. data/app/components/blacklight/system/modal_component.rb +1 -3
  95. data/app/components/blacklight/top_navbar_component.html.erb +12 -0
  96. data/app/components/blacklight/top_navbar_component.rb +17 -0
  97. data/app/controllers/bookmarks_controller.rb +1 -0
  98. data/app/controllers/catalog_controller.rb +1 -0
  99. data/app/controllers/concerns/blacklight/bookmarks.rb +11 -6
  100. data/app/controllers/concerns/blacklight/catalog.rb +21 -72
  101. data/app/controllers/concerns/blacklight/controller.rb +6 -43
  102. data/app/controllers/concerns/blacklight/search_context.rb +71 -13
  103. data/app/controllers/concerns/blacklight/search_history.rb +2 -0
  104. data/app/controllers/concerns/blacklight/searchable.rb +12 -1
  105. data/app/controllers/concerns/blacklight/token_based_user.rb +1 -0
  106. data/app/controllers/search_history_controller.rb +1 -0
  107. data/app/helpers/blacklight/blacklight_helper_behavior.rb +1 -400
  108. data/app/helpers/blacklight/catalog_helper_behavior.rb +40 -182
  109. data/app/helpers/blacklight/component_helper_behavior.rb +1 -63
  110. data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -117
  111. data/app/helpers/blacklight/document_helper_behavior.rb +76 -0
  112. data/app/helpers/blacklight/facets_helper_behavior.rb +4 -321
  113. data/app/helpers/blacklight/icon_helper_behavior.rb +5 -4
  114. data/app/helpers/blacklight/layout_helper_behavior.rb +60 -0
  115. data/app/helpers/blacklight/render_partials_helper_behavior.rb +12 -30
  116. data/app/helpers/blacklight/url_helper_behavior.rb +21 -97
  117. data/app/helpers/blacklight_helper.rb +1 -0
  118. data/app/helpers/catalog_helper.rb +1 -0
  119. data/app/javascript/blacklight/bookmark_toggle.js +9 -22
  120. data/app/javascript/blacklight/button_focus.js +9 -7
  121. data/app/javascript/blacklight/checkbox_submit.js +68 -122
  122. data/app/javascript/blacklight/core.js +6 -5
  123. data/app/javascript/blacklight/index.js +14 -0
  124. data/app/javascript/blacklight/modal.js +100 -165
  125. data/app/javascript/blacklight/modalForm.js +60 -0
  126. data/app/javascript/blacklight/search_context.js +13 -29
  127. data/app/models/blacklight/facet_paginator.rb +3 -2
  128. data/app/models/blacklight/icon.rb +4 -2
  129. data/app/models/bookmark.rb +0 -2
  130. data/app/models/concerns/blacklight/configurable.rb +5 -4
  131. data/app/models/concerns/blacklight/document/active_model_shim.rb +1 -0
  132. data/app/models/concerns/blacklight/document/attributes.rb +50 -0
  133. data/app/models/concerns/blacklight/document/cache_key.rb +1 -0
  134. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -1
  135. data/app/models/concerns/blacklight/document/export.rb +2 -1
  136. data/app/models/concerns/blacklight/document/extensions.rb +1 -0
  137. data/app/models/concerns/blacklight/document/schema_org.rb +1 -0
  138. data/app/models/concerns/blacklight/document/semantic_fields.rb +1 -0
  139. data/app/models/concerns/blacklight/document.rb +23 -20
  140. data/app/models/concerns/blacklight/suggest/response.rb +1 -0
  141. data/app/models/concerns/blacklight/user.rb +17 -8
  142. data/app/models/record_mailer.rb +23 -18
  143. data/app/models/search.rb +0 -1
  144. data/app/models/solr_document.rb +1 -0
  145. data/app/presenters/blacklight/clause_presenter.rb +1 -1
  146. data/app/presenters/blacklight/document_presenter.rb +24 -30
  147. data/app/presenters/blacklight/facet_field_presenter.rb +39 -14
  148. data/app/presenters/blacklight/facet_grouped_item_presenter.rb +1 -5
  149. data/app/presenters/blacklight/facet_item_pivot_presenter.rb +60 -0
  150. data/app/presenters/blacklight/facet_item_presenter.rb +3 -9
  151. data/app/presenters/blacklight/field_presenter.rb +1 -0
  152. data/app/presenters/blacklight/index_presenter.rb +2 -40
  153. data/app/presenters/blacklight/json_presenter.rb +7 -5
  154. data/app/presenters/blacklight/rendering/abstract_step.rb +4 -0
  155. data/app/presenters/blacklight/rendering/join.rb +7 -1
  156. data/app/presenters/blacklight/rendering/link_to_facet.rb +3 -6
  157. data/app/presenters/blacklight/rendering/microdata.rb +1 -1
  158. data/app/presenters/blacklight/show_presenter.rb +1 -9
  159. data/app/presenters/blacklight/thumbnail_presenter.rb +1 -1
  160. data/app/services/blacklight/bookmarks_search_builder.rb +22 -0
  161. data/app/services/blacklight/field_retriever.rb +1 -8
  162. data/app/services/blacklight/search_service.rb +9 -7
  163. data/app/values/blacklight/types.rb +95 -11
  164. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +8 -1
  165. data/app/views/bookmarks/_tools.html.erb +7 -12
  166. data/app/views/catalog/_advanced_search_form.html.erb +0 -1
  167. data/app/views/catalog/_bookmark_control.html.erb +1 -1
  168. data/app/views/catalog/_constraints.html.erb +1 -14
  169. data/app/views/catalog/_document.atom.builder +12 -14
  170. data/app/views/catalog/_document.html.erb +3 -6
  171. data/app/views/catalog/_document.rss.builder +2 -4
  172. data/app/views/catalog/_document_list.html.erb +2 -1
  173. data/app/views/catalog/_facet_layout.html.erb +2 -2
  174. data/app/views/catalog/_facets.html.erb +5 -4
  175. data/app/views/catalog/_home_text.html.erb +2 -14
  176. data/app/views/catalog/_search_form.html.erb +3 -3
  177. data/app/views/catalog/_search_header.html.erb +1 -2
  178. data/app/views/catalog/_search_results.html.erb +2 -2
  179. data/app/views/catalog/_search_sidebar.html.erb +5 -1
  180. data/app/views/catalog/_show_main_content.html.erb +8 -19
  181. data/app/views/catalog/_show_sidebar.html.erb +2 -2
  182. data/app/views/catalog/_show_tools.html.erb +1 -19
  183. data/app/views/catalog/_view_type_group.html.erb +1 -1
  184. data/app/views/catalog/email_success.html.erb +5 -6
  185. data/app/views/catalog/facet.html.erb +7 -5
  186. data/app/views/catalog/index.atom.builder +12 -14
  187. data/app/views/catalog/index.html.erb +7 -1
  188. data/app/views/catalog/index.json.jbuilder +19 -19
  189. data/app/views/catalog/index.rss.builder +1 -1
  190. data/app/views/catalog/opensearch.xml.builder +1 -1
  191. data/app/views/catalog/show.html.erb +1 -6
  192. data/app/views/catalog/sms_success.html.erb +5 -6
  193. data/app/views/catalog/suggest.html.erb +3 -0
  194. data/app/views/layouts/blacklight/base.html.erb +19 -9
  195. data/app/views/record_mailer/email_record.text.erb +4 -3
  196. data/app/views/record_mailer/sms_record.text.erb +4 -4
  197. data/app/views/search_history/index.html.erb +6 -2
  198. data/app/views/shared/_header_navbar.html.erb +1 -22
  199. data/app/views/shared/_modal.html.erb +3 -3
  200. data/blacklight.gemspec +8 -10
  201. data/config/importmap.rb +3 -0
  202. data/config/locales/blacklight.ar.yml +209 -233
  203. data/config/locales/blacklight.ca.yml +0 -7
  204. data/config/locales/blacklight.de.yml +197 -216
  205. data/config/locales/blacklight.en.yml +2 -7
  206. data/config/locales/blacklight.es.yml +196 -216
  207. data/config/locales/blacklight.fr.yml +196 -220
  208. data/config/locales/blacklight.hu.yml +193 -213
  209. data/config/locales/blacklight.it.yml +197 -216
  210. data/config/locales/blacklight.nl.yml +193 -213
  211. data/config/locales/blacklight.pt-BR.yml +195 -216
  212. data/config/locales/blacklight.sq.yml +193 -213
  213. data/config/locales/blacklight.zh.yml +194 -214
  214. data/config/routes.rb +3 -2
  215. data/db/migrate/20140202020201_create_searches.rb +1 -0
  216. data/db/migrate/20140202020202_create_bookmarks.rb +1 -0
  217. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -0
  218. data/docker-compose.yml +1 -0
  219. data/lib/blacklight/abstract_repository.rb +1 -0
  220. data/lib/blacklight/configuration/context.rb +4 -4
  221. data/lib/blacklight/configuration/display_field.rb +7 -9
  222. data/lib/blacklight/configuration/facet_field.rb +17 -11
  223. data/lib/blacklight/configuration/field.rb +1 -0
  224. data/lib/blacklight/configuration/fields.rb +12 -15
  225. data/lib/blacklight/configuration/index_field.rb +1 -0
  226. data/lib/blacklight/configuration/null_display_field.rb +17 -0
  227. data/lib/blacklight/configuration/search_field.rb +1 -0
  228. data/lib/blacklight/configuration/session_tracking_config.rb +45 -0
  229. data/lib/blacklight/configuration/show_field.rb +1 -0
  230. data/lib/blacklight/configuration/sort_field.rb +1 -0
  231. data/lib/blacklight/configuration/tool_config.rb +1 -0
  232. data/lib/blacklight/configuration/view_config.rb +16 -10
  233. data/lib/blacklight/configuration.rb +322 -341
  234. data/lib/blacklight/engine.rb +13 -15
  235. data/lib/blacklight/exceptions.rb +2 -2
  236. data/lib/blacklight/nested_open_struct_with_hash_access.rb +6 -12
  237. data/lib/blacklight/open_struct_with_hash_access.rb +19 -17
  238. data/lib/blacklight/parameters.rb +7 -21
  239. data/lib/blacklight/routes/exportable.rb +1 -0
  240. data/lib/blacklight/routes/searchable.rb +3 -1
  241. data/lib/blacklight/routes.rb +1 -0
  242. data/lib/blacklight/search_builder.rb +10 -10
  243. data/lib/blacklight/search_state/filter_field.rb +8 -25
  244. data/lib/blacklight/search_state/pivot_filter_field.rb +144 -0
  245. data/lib/blacklight/search_state.rb +23 -79
  246. data/lib/blacklight/solr/document.rb +1 -0
  247. data/lib/blacklight/solr/facet_paginator.rb +1 -0
  248. data/lib/blacklight/solr/repository.rb +1 -0
  249. data/lib/blacklight/solr/request.rb +3 -0
  250. data/lib/blacklight/solr/response/facets.rb +21 -5
  251. data/lib/blacklight/solr/response/group.rb +1 -0
  252. data/lib/blacklight/solr/response/group_response.rb +1 -0
  253. data/lib/blacklight/solr/response/more_like_this.rb +1 -0
  254. data/lib/blacklight/solr/response/pagination_methods.rb +4 -3
  255. data/lib/blacklight/solr/response/params.rb +5 -4
  256. data/lib/blacklight/solr/response/response.rb +1 -0
  257. data/lib/blacklight/solr/response/spelling.rb +1 -0
  258. data/lib/blacklight/solr/response.rb +4 -3
  259. data/lib/blacklight/solr/search_builder_behavior.rb +16 -32
  260. data/lib/blacklight/solr.rb +1 -0
  261. data/lib/blacklight/version.rb +1 -0
  262. data/lib/blacklight.rb +8 -11
  263. data/lib/generators/blacklight/assets/importmap_generator.rb +56 -0
  264. data/lib/generators/blacklight/assets/propshaft_generator.rb +34 -0
  265. data/lib/generators/blacklight/assets/sprockets_generator.rb +68 -0
  266. data/lib/generators/blacklight/assets_generator.rb +14 -88
  267. data/lib/generators/blacklight/controller_generator.rb +3 -2
  268. data/lib/generators/blacklight/document_generator.rb +1 -0
  269. data/lib/generators/blacklight/install_generator.rb +7 -4
  270. data/lib/generators/blacklight/models_generator.rb +1 -0
  271. data/lib/generators/blacklight/search_builder_generator.rb +1 -0
  272. data/lib/generators/blacklight/solr_generator.rb +1 -1
  273. data/lib/generators/blacklight/templates/catalog_controller.rb +37 -7
  274. data/lib/generators/blacklight/templates/solr_document.rb +1 -7
  275. data/lib/generators/blacklight/test_support_generator.rb +4 -2
  276. data/lib/generators/blacklight/user_generator.rb +7 -9
  277. data/lib/railties/blacklight.rake +2 -3
  278. data/package.json +10 -10
  279. data/rollup.config.js +37 -0
  280. data/spec/components/blacklight/constraints_component_spec.rb +17 -13
  281. data/spec/components/blacklight/document_component_spec.rb +74 -33
  282. data/spec/components/blacklight/facet_component_spec.rb +2 -7
  283. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +1 -2
  284. data/spec/components/blacklight/facet_field_list_component_spec.rb +7 -6
  285. data/spec/components/blacklight/facet_item_pivot_component_spec.rb +9 -7
  286. data/spec/components/blacklight/header_component_spec.rb +20 -0
  287. data/spec/components/blacklight/response/view_type_component_spec.rb +83 -0
  288. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  289. data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +29 -0
  290. data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +51 -0
  291. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +1 -6
  292. data/spec/controllers/blacklight/{base_spec.rb → catalog_spec.rb} +2 -2
  293. data/spec/controllers/bookmarks_controller_spec.rb +2 -3
  294. data/spec/controllers/catalog_controller_spec.rb +24 -126
  295. data/spec/features/autocomplete_spec.rb +1 -1
  296. data/spec/features/axe_spec.rb +1 -1
  297. data/spec/features/bookmarks_spec.rb +1 -1
  298. data/spec/features/component_template_override_spec.rb +8 -0
  299. data/spec/features/facets_spec.rb +1 -1
  300. data/spec/features/modal_spec.rb +12 -0
  301. data/spec/features/search_context_spec.rb +4 -10
  302. data/spec/features/search_results_spec.rb +0 -33
  303. data/spec/features/sitelinks_search_box_spec.rb +13 -0
  304. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +2 -138
  305. data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +0 -387
  306. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
  307. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +5 -7
  308. data/spec/helpers/blacklight/url_helper_behavior_spec.rb +10 -132
  309. data/spec/helpers/blacklight_helper_spec.rb +3 -298
  310. data/spec/helpers/catalog_helper_spec.rb +60 -115
  311. data/spec/i18n_spec.rb +1 -0
  312. data/spec/integration/generators/blacklight/solr_generator_spec.rb +1 -1
  313. data/spec/lib/blacklight/configuration/facet_field_spec.rb +27 -16
  314. data/spec/lib/blacklight/configuration/field_spec.rb +1 -1
  315. data/spec/lib/blacklight/configuration/session_tracking_config_spec.rb +38 -0
  316. data/spec/lib/blacklight/configuration/view_config_spec.rb +1 -1
  317. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +4 -4
  318. data/spec/lib/blacklight/parameters_spec.rb +1 -4
  319. data/spec/lib/blacklight/search_state/filter_field_spec.rb +4 -4
  320. data/spec/lib/blacklight/search_state/pivot_filter_field_spec.rb +117 -0
  321. data/spec/lib/blacklight/search_state_spec.rb +80 -198
  322. data/spec/lib/tasks/blacklight_task_spec.rb +1 -0
  323. data/spec/models/blacklight/configuration_spec.rb +41 -53
  324. data/spec/models/blacklight/document/active_model_shim_spec.rb +2 -2
  325. data/spec/models/blacklight/icon_spec.rb +29 -15
  326. data/spec/models/blacklight/search_builder_spec.rb +12 -12
  327. data/spec/models/blacklight/solr/document_spec.rb +3 -3
  328. data/spec/models/blacklight/solr/request_spec.rb +2 -2
  329. data/spec/models/blacklight/solr/response/facets_spec.rb +27 -27
  330. data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -0
  331. data/spec/models/blacklight/solr/response/group_spec.rb +1 -0
  332. data/spec/models/blacklight/solr/response_spec.rb +9 -2
  333. data/spec/models/blacklight/solr/search_builder_spec.rb +32 -23
  334. data/spec/models/blacklight/user_spec.rb +22 -0
  335. data/spec/models/record_mailer_spec.rb +36 -23
  336. data/spec/models/solr_document_spec.rb +21 -3
  337. data/spec/presenters/blacklight/clause_presenter_spec.rb +1 -0
  338. data/spec/presenters/blacklight/document_presenter_spec.rb +3 -2
  339. data/spec/presenters/blacklight/facet_field_presenter_spec.rb +85 -12
  340. data/spec/presenters/blacklight/facet_grouped_item_presenter_spec.rb +1 -0
  341. data/spec/presenters/blacklight/facet_item_presenter_spec.rb +14 -13
  342. data/spec/presenters/blacklight/field_presenter_spec.rb +2 -16
  343. data/spec/presenters/blacklight/index_presenter_spec.rb +3 -4
  344. data/spec/presenters/blacklight/json_presenter_spec.rb +1 -0
  345. data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -2
  346. data/spec/presenters/blacklight/show_presenter_spec.rb +11 -25
  347. data/spec/presenters/pipeline_spec.rb +13 -2
  348. data/spec/presenters/thumbnail_presenter_spec.rb +1 -1
  349. data/spec/requests/load_suggestions_spec.rb +16 -0
  350. data/spec/routing/catalog_routing_spec.rb +6 -1
  351. data/spec/services/blacklight/search_service_spec.rb +31 -68
  352. data/spec/spec_helper.rb +4 -3
  353. data/spec/support/controller_level_helpers.rb +1 -2
  354. data/spec/support/features/search_helpers.rb +39 -0
  355. data/spec/support/features/session_helpers.rb +1 -0
  356. data/spec/support/features.rb +3 -0
  357. data/spec/support/view_component_test_helpers.rb +21 -0
  358. data/spec/test_app_templates/Gemfile.extra +4 -0
  359. data/spec/test_app_templates/lib/generators/test_app_generator.rb +17 -2
  360. data/spec/views/catalog/_document.html.erb_spec.rb +23 -33
  361. data/spec/views/catalog/_document_list.html.erb_spec.rb +7 -2
  362. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
  363. data/spec/views/catalog/_search_header.erb_spec.rb +1 -0
  364. data/spec/views/catalog/_show_sidebar.erb_spec.rb +1 -0
  365. data/spec/views/catalog/_show_tools.html.erb_spec.rb +7 -54
  366. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +17 -9
  367. data/spec/views/catalog/email_success.html.erb_spec.rb +2 -2
  368. data/spec/views/catalog/facet.html.erb_spec.rb +6 -3
  369. data/spec/views/catalog/index.atom.builder_spec.rb +18 -11
  370. data/spec/views/catalog/index.html.erb_spec.rb +5 -6
  371. data/spec/views/catalog/index.json.jbuilder_spec.rb +3 -3
  372. data/spec/views/catalog/show.html.erb_spec.rb +3 -25
  373. data/spec/views/catalog/sms_success.html.erb_spec.rb +2 -2
  374. data/tasks/blacklight.rake +7 -5
  375. metadata +95 -123
  376. data/.babelrc +0 -11
  377. data/app/assets/images/blacklight/list.svg +0 -1
  378. data/app/assets/images/blacklight/search.svg +0 -1
  379. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +0 -37
  380. data/app/components/blacklight/content_areas_shim.rb +0 -13
  381. data/app/components/blacklight/search_context_component.rb +0 -34
  382. data/app/controllers/concerns/blacklight/base.rb +0 -7
  383. data/app/controllers/concerns/blacklight/default_component_configuration.rb +0 -64
  384. data/app/controllers/concerns/blacklight/facet.rb +0 -69
  385. data/app/controllers/concerns/blacklight/search_fields.rb +0 -46
  386. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +0 -27
  387. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +0 -188
  388. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +0 -97
  389. data/app/helpers/blacklight/suggest_helper_behavior.rb +0 -13
  390. data/app/javascript/blacklight/autocomplete.js +0 -36
  391. data/app/javascript/blacklight/facet_load.js +0 -22
  392. data/app/models/concerns/blacklight/document/email.rb +0 -26
  393. data/app/models/concerns/blacklight/document/sms.rb +0 -24
  394. data/app/presenters/blacklight/search_bar_presenter.rb +0 -47
  395. data/app/views/catalog/_constraints_element.html.erb +0 -14
  396. data/app/views/catalog/_document_action.html.erb +0 -5
  397. data/app/views/catalog/_facet_group.html.erb +0 -5
  398. data/app/views/catalog/_facet_limit.html.erb +0 -3
  399. data/app/views/catalog/_index.html.erb +0 -1
  400. data/app/views/catalog/_index_header.html.erb +0 -22
  401. data/app/views/catalog/_previous_next_doc.html.erb +0 -2
  402. data/app/views/catalog/_show.html.erb +0 -6
  403. data/app/views/catalog/_show_header.html.erb +0 -2
  404. data/app/views/catalog/_thumbnail.html.erb +0 -1
  405. data/lib/blacklight/deprecations/engine_configuration.rb +0 -66
  406. data/lib/blacklight/deprecations/search_state_normalization.rb +0 -52
  407. data/spec/controllers/blacklight/facet_spec.rb +0 -33
  408. data/spec/controllers/blacklight/search_fields_spec.rb +0 -62
  409. data/spec/features/sitelinks_search_box.rb +0 -13
  410. data/spec/helpers/blacklight/hash_as_hidden_fields_behavior_spec.rb +0 -26
  411. data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +0 -92
  412. data/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb +0 -108
  413. data/spec/helpers/blacklight/suggest_helper_behavior_spec.rb +0 -48
  414. data/spec/lib/blacklight/engine_spec.rb +0 -41
  415. data/spec/models/blacklight/document/email_spec.rb +0 -57
  416. data/spec/models/blacklight/document/sms_spec.rb +0 -58
  417. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +0 -94
  418. data/spec/support/view_component_capybara_test_helpers.rb +0 -8
  419. data/spec/views/catalog/_constraints.html.erb_spec.rb +0 -33
  420. data/spec/views/catalog/_facet_group.html.erb_spec.rb +0 -84
  421. data/spec/views/catalog/_facets.html.erb_spec.rb +0 -15
  422. data/spec/views/catalog/_index.html.erb_spec.rb +0 -62
  423. data/spec/views/catalog/_index_header.html.erb_spec.rb +0 -35
  424. data/spec/views/catalog/_previous_next_doc.html.erb_spec.rb +0 -22
  425. data/spec/views/catalog/_show.html.erb_spec.rb +0 -62
  426. data/spec/views/catalog/_thumbnail.html.erb_spec.rb +0 -38
  427. /data/app/components/blacklight/{search_context_component.html.erb → search_context/server_item_pagination_component.html.erb} +0 -0
@@ -1,10 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RSpec.describe CatalogController, api: true do
4
- around { |test| Deprecation.silence(Blacklight::Catalog) { test.call } }
5
-
6
4
  let(:doc_id) { '2007020969' }
7
- let(:mock_response) { instance_double(Blacklight::Solr::Response) }
8
5
  let(:mock_document) { instance_double(SolrDocument, export_formats: {}) }
9
6
  let(:search_service) { instance_double(Blacklight::SearchService) }
10
7
 
@@ -63,17 +60,17 @@ RSpec.describe CatalogController, api: true do
63
60
  end
64
61
 
65
62
  it "shows 0 results when the user asks for an invalid value to a custom facet query", integration: true do
66
- get :index, params: { f: { example_query_facet_field: 'bogus' } } # bogus custom facet value
63
+ get :index, params: { f: { example_query_facet_field: ['bogus'] } } # bogus custom facet value
67
64
  expect(assigns(:response).docs).to be_empty
68
65
  end
69
66
 
70
67
  it "returns results (possibly 0) when the user asks for a valid value to a custom facet query", integration: true do
71
- get :index, params: { f: { example_query_facet_field: 'years_25' } } # valid custom facet value with some results
68
+ get :index, params: { f: { example_query_facet_field: ['years_25'] } } # valid custom facet value with some results
72
69
  expect(assigns(:response).docs).not_to be_empty
73
70
  end
74
71
 
75
72
  it "returns no results when the users asks for a value that doesn't match any" do
76
- get :index, params: { f: { example_query_facet_field: 'years_5' } } # valid custom facet value with NO results
73
+ get :index, params: { f: { example_query_facet_field: ['years_5'] } } # valid custom facet value with NO results
77
74
  expect(assigns(:response).docs).to be_empty
78
75
  end
79
76
 
@@ -161,20 +158,20 @@ RSpec.describe CatalogController, api: true do
161
158
 
162
159
  format = facets.find { |x| x['id'] == 'format' }
163
160
 
164
- expect(format['attributes']['items'].map { |x| x['attributes'] }).to match_array([{ "value" => "Book", "hits" => 30, "label" => "Book" }])
161
+ expect(format['attributes']['items'].pluck('attributes')).to contain_exactly({ "value" => "Book", "hits" => 30, "label" => "Book" })
165
162
  expect(format['links']['self']).to eq facet_catalog_url(format: :json, id: 'format')
166
163
  expect(format['attributes']['items'].first['links']['self']).to eq search_catalog_url(format: :json, f: { format: ['Book'] })
167
164
  end
168
165
 
169
166
  it "gets the search fields" do
170
167
  expect(search_fields).to have(4).fields
171
- expect(search_fields.map { |x| x['id'] }).to match_array %w[all_fields author subject title]
168
+ expect(search_fields.pluck('id')).to match_array %w[all_fields author subject title]
172
169
  expect(search_fields.first['links']['self']).to eq search_catalog_url(format: :json, search_field: 'all_fields')
173
170
  end
174
171
 
175
172
  describe "facets" do
176
173
  let(:query_facet) { facets.find { |x| x['id'] == 'example_query_facet_field' } }
177
- let(:query_facet_items) { query_facet['attributes']['items'].map { |x| x['attributes'] } }
174
+ let(:query_facet_items) { query_facet['attributes']['items'].pluck('attributes') }
178
175
 
179
176
  it "has items with labels and values" do
180
177
  expect(query_facet_items.first['label']).to eq 'within 25 Years'
@@ -339,7 +336,7 @@ RSpec.describe CatalogController, api: true do
339
336
  before do
340
337
  allow(mock_document).to receive_messages(export_formats: {})
341
338
  allow(controller).to receive(:search_service).and_return(search_service)
342
- expect(search_service).to receive(:fetch).and_return([mock_response, mock_document])
339
+ expect(search_service).to receive(:fetch).and_return(mock_document)
343
340
  allow(controller).to receive(:current_search_session).and_return(current_search)
344
341
  end
345
342
 
@@ -399,7 +396,7 @@ RSpec.describe CatalogController, api: true do
399
396
 
400
397
  it "renders show.html.erb" do
401
398
  allow(controller).to receive(:search_service).and_return(search_service)
402
- expect(search_service).to receive(:fetch).and_return([mock_response, mock_document])
399
+ expect(search_service).to receive(:fetch).and_return(mock_document)
403
400
 
404
401
  get :show, params: { id: doc_id }
405
402
  expect(response).to render_template(:show)
@@ -408,7 +405,7 @@ RSpec.describe CatalogController, api: true do
408
405
  describe '@document' do
409
406
  before do
410
407
  allow(controller).to receive(:search_service).and_return(search_service)
411
- expect(search_service).to receive(:fetch).and_return([mock_response, mock_document])
408
+ expect(search_service).to receive(:fetch).and_return(mock_document)
412
409
 
413
410
  get :show, params: { id: doc_id }
414
411
  end
@@ -434,7 +431,7 @@ RSpec.describe CatalogController, api: true do
434
431
  Mime::Type.register "application/mock", :mock
435
432
  SolrDocument.use_extension(FakeExtension)
436
433
  allow(controller).to receive(:search_service).and_return(search_service)
437
- expect(search_service).to receive(:fetch).and_return([nil, SolrDocument.new(id: 'my_fake_doc')])
434
+ expect(search_service).to receive(:fetch).and_return(SolrDocument.new(id: 'my_fake_doc'))
438
435
  end
439
436
 
440
437
  after do
@@ -470,34 +467,15 @@ RSpec.describe CatalogController, api: true do
470
467
  end
471
468
  end
472
469
 
473
- describe 'GET suggest' do
474
- it 'returns JSON' do
475
- get :suggest, params: { format: 'json' }
476
- expect(response.body).to eq [].to_json
477
- end
478
-
479
- it 'returns suggestions' do
480
- get :suggest, params: { format: 'json', q: 'new' }
481
- json = JSON.parse(response.body)
482
- expect(json.count).to eq 5
483
- expect(json.first['term']).to eq 'new jersey'
484
- end
485
- end
486
-
487
470
  describe "email/sms" do
488
- let(:mock_response) { instance_double(Blacklight::Solr::Response, documents: [SolrDocument.new(id: 'my_fake_doc'), SolrDocument.new(id: 'my_other_doc')]) }
471
+ let(:mock_document) { SolrDocument.new }
489
472
 
490
473
  before do
491
- mock_document.extend(Blacklight::Document::Sms)
492
- mock_document.extend(Blacklight::Document::Email)
493
- allow(mock_document).to receive(:to_semantic_values).and_return({})
494
474
  allow(mock_document).to receive(:to_model).and_return(SolrDocument.new(id: 'my_fake_doc'))
495
475
 
496
476
  allow(controller).to receive(:search_service).and_return(search_service)
497
- expect(search_service).to receive(:fetch).and_return([mock_response, [mock_document]])
477
+ expect(search_service).to receive(:fetch).and_return([mock_document])
498
478
  request.env["HTTP_REFERER"] = "/catalog/#{doc_id}"
499
- SolrDocument.use_extension(Blacklight::Document::Email)
500
- SolrDocument.use_extension(Blacklight::Document::Sms)
501
479
  end
502
480
 
503
481
  describe "email", api: false do
@@ -581,7 +559,7 @@ RSpec.describe CatalogController, api: true do
581
559
 
582
560
  it "redirects back to the record upon success" do
583
561
  post :sms, params: { id: doc_id, to: '5555555555', carrier: 'txt.att.net' }
584
- expect(request.flash[:error]).to eq nil
562
+ expect(request.flash[:error]).to be_nil
585
563
  expect(request).to redirect_to(solr_document_path(doc_id))
586
564
  end
587
565
 
@@ -607,31 +585,6 @@ RSpec.describe CatalogController, api: true do
607
585
  get :citation, params: { id: "bad-record-identifer" }
608
586
  end.to raise_error Blacklight::Exceptions::RecordNotFound
609
587
  end
610
-
611
- context "when there is an invalid search", api: false do
612
- let(:service) { instance_double(Blacklight::SearchService) }
613
- let(:fake_error) { Blacklight::Exceptions::InvalidRequest.new }
614
-
615
- before do
616
- allow(controller).to receive(:search_service).and_return(service)
617
- allow(service).to receive(:search_results) { |*_args| raise fake_error }
618
- allow(Rails.env).to receive_messages(test?: false)
619
- end
620
-
621
- it "redirects the user to the root url for a bad search" do
622
- expect(controller.logger).to receive(:error).with(fake_error)
623
- get :index, params: { q: '+' }
624
- expect(response.redirect_url).to eq root_url
625
- expect(request.flash[:notice]).to eq "Sorry, I don't understand your search."
626
- expect(response).not_to be_successful
627
- expect(response.status).to eq 302
628
- end
629
-
630
- it "returns status 500 if the catalog path is raising an exception" do
631
- allow(controller).to receive(:flash).and_return(notice: I18n.t('blacklight.search.errors.request_error'))
632
- expect { get :index, params: { q: '+' } }.to raise_error Blacklight::Exceptions::InvalidRequest
633
- end
634
- end
635
588
  end
636
589
 
637
590
  context "without a user authentication provider" do
@@ -779,7 +732,7 @@ RSpec.describe CatalogController, api: true do
779
732
  end
780
733
 
781
734
  describe "with a facet" do
782
- before { allow(controller).to receive_messages(params: { f: { "field" => ["value"] } }) }
735
+ before { allow(controller).to receive_messages(params: { f: { "format" => ["value"] } }) }
783
736
 
784
737
  it { is_expected.to be true }
785
738
  end
@@ -842,73 +795,18 @@ RSpec.describe CatalogController, api: true do
842
795
  end
843
796
  end
844
797
 
845
- describe "facet_limit_for" do
846
- let(:blacklight_config) { controller.blacklight_config }
847
-
848
- it "returns specified value for facet_field specified" do
849
- expect(controller.facet_limit_for("subject_ssim")).to eq blacklight_config.facet_fields["subject_ssim"].limit
798
+ describe "page_links" do
799
+ it "has prev/next docs and result set data for non-empty result sets", integration: true do
800
+ get :page_links, params: { f: { "format" => 'Book' }, counter: 2 }
801
+ expect(assigns(:page_link_data)).not_to be_empty
802
+ expect(assigns(:page_link_data).fetch(:prev, nil)).to end_with('counter=1')
803
+ expect(assigns(:page_link_data).fetch(:next, nil)).to end_with('counter=3')
804
+ expect(assigns(:page_link_data).fetch(:totalRaw, nil)).to be 30
850
805
  end
851
806
 
852
- it "facet_limit_hash should return hash with key being facet_field and value being configured limit" do
853
- # facet_limit_hash has been removed from solrhelper in refactor. should it go back?
854
- skip "facet_limit_hash has been removed from solrhelper in refactor. should it go back?"
855
- expect(controller.facet_limit_hash).to eq blacklight_config[:facet][:limits]
856
- end
857
-
858
- it "handles no facet_limits in config" do
859
- blacklight_config.facet_fields = {}
860
- expect(controller.facet_limit_for("subject_ssim")).to be_nil
861
- end
862
-
863
- describe "for 'true' configured values" do
864
- before do
865
- allow(controller).to receive(:blacklight_config).and_return(blacklight_config)
866
- end
867
-
868
- let(:blacklight_config) do
869
- Blacklight::Configuration.new do |config|
870
- config.add_facet_field "language_facet", limit: true
871
- end
872
- end
873
-
874
- it "returns nil if no @response available" do
875
- expect(controller.facet_limit_for("some_unknown_field")).to be_nil
876
- end
877
-
878
- it "gets from @response facet.limit if available" do
879
- response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: nil) })
880
- controller.instance_variable_set(:@response, response)
881
- blacklight_config.facet_fields['language_facet'].limit = 10
882
- expect(controller.facet_limit_for("language_facet")).to eq 10
883
- end
884
-
885
- it "gets the limit from the facet field in @response" do
886
- response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: 16) })
887
- controller.instance_variable_set(:@response, response)
888
- expect(controller.facet_limit_for("language_facet")).to eq 15
889
- end
890
-
891
- it "defaults to 10" do
892
- expect(controller.facet_limit_for("language_facet")).to eq 10
893
- end
894
- end
895
-
896
- context 'for facet fields with a key that is different from the field name' do
897
- before do
898
- allow(controller).to receive(:blacklight_config).and_return(blacklight_config)
899
- end
900
-
901
- let(:blacklight_config) do
902
- Blacklight::Configuration.new do |config|
903
- config.add_facet_field 'some_key', field: 'x', limit: true
904
- end
905
- end
906
-
907
- it 'gets the limit from the facet field in the @response' do
908
- response = instance_double(Blacklight::Solr::Response, aggregations: { 'x' => double(limit: 16) })
909
- controller.instance_variable_set(:@response, response)
910
- expect(controller.facet_limit_for('some_key')).to eq 15
911
- end
807
+ it "is empty for empty result sets", integration: true do
808
+ get :page_links, params: { f: { "format" => 'empty-result-set' }, counter: 1 }
809
+ expect(assigns(:page_link_data)).to be_empty
912
810
  end
913
811
  end
914
812
  end
@@ -3,6 +3,6 @@
3
3
  RSpec.describe 'Autocomplete suggestions' do
4
4
  it 'search form has suggest path' do
5
5
  visit root_path
6
- expect(page).to have_css 'input[data-autocomplete-path="/catalog/suggest"]'
6
+ expect(page).to have_css 'auto-complete[src="/catalog/suggest"]'
7
7
  end
8
8
  end
@@ -28,6 +28,6 @@ RSpec.describe 'Accessibility testing', api: false, js: true do
28
28
 
29
29
  def be_accessible(skipping: [])
30
30
  # typeahead does funny things with the search bar
31
- be_axe_clean.excluding('.tt-hint').skipping(skipping + [('color-contrast' if Bootstrap::VERSION < '5')].compact)
31
+ be_axe_clean.excluding('.tt-hint').skipping(skipping + [('color-contrast' if defined?(Bootstrap) && Bootstrap::VERSION < '5')].compact)
32
32
  end
33
33
  end
@@ -45,7 +45,7 @@ RSpec.describe "Bookmarks" do
45
45
  check 'Bookmark'
46
46
 
47
47
  visit solr_document_path('2007020969')
48
- expect(page).to have_css('input[type="checkbox"]:checked')
48
+ expect(page).to have_css('input[type="checkbox"][checked]')
49
49
  uncheck 'In Bookmarks'
50
50
  end
51
51
 
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe 'Generated test application template at default path' do
4
+ it 'unobtrusively overrides default top navbar component template' do
5
+ visit root_path
6
+ expect(page).to have_css 'nav[data-template-override="top_navbar_component"]'
7
+ end
8
+ end
@@ -69,7 +69,7 @@ RSpec.describe "Facets" do
69
69
  page.find('h3.facet-field-heading button', text: 'Pivot Field').click
70
70
 
71
71
  within '#facet-example_pivot_field' do
72
- expect(page).to have_css('.facet-leaf-node', text: "Book 30")
72
+ expect(page).to have_css('.facet-leaf-node', text: "Book 30", normalize_ws: true)
73
73
  expect(page).not_to have_css('.facet-select', text: 'Tibetan')
74
74
  page.find('.facet-toggle-handle').click
75
75
  click_link 'Tibetan'
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe 'Modal' do
4
+ it 'can open and dismiss the email modal', js: true do
5
+ visit solr_document_path('2007020969')
6
+ expect(page).to have_no_selector 'dialog#blacklight-modal'
7
+ click_link 'Email'
8
+ expect(page).to have_selector 'dialog#blacklight-modal'
9
+ click_button '×'
10
+ expect(page).to have_no_selector 'dialog#blacklight-modal'
11
+ end
12
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe "Search Results context", js: true do
4
- it "passes the current search id through" do
3
+ RSpec.describe "Search Results context" do
4
+ it "passes the current search id through", js: true do
5
5
  search_for ''
6
6
  click_on 'Pluvial nectar of blessings'
7
7
  search_id = Search.last.id.to_s
@@ -16,7 +16,7 @@ RSpec.describe "Search Results context", js: true do
16
16
  expect(prev['data-context-href']).to eq "/catalog/2004310986/track?counter=8&document_id=2004310986&search_id=#{search_id}"
17
17
  end
18
18
 
19
- it "redirects context urls to the original url" do
19
+ it "redirects context urls to the original url", js: true do
20
20
  search_for ''
21
21
  first('.index_title a').click
22
22
  expect(page).to have_content "« Previous | 1 of 30 | Next »"
@@ -43,7 +43,7 @@ RSpec.describe "Search Results context", js: true do
43
43
  end
44
44
 
45
45
  context "navigating between search results using context pagination" do
46
- it "updates the back to search link with the current search pagination context" do
46
+ it "updates the back to search link with the current search pagination context", js: true do
47
47
  search_for ''
48
48
  expect(page).to have_content "1 - 10"
49
49
  find_all('.index_title a').last.click
@@ -55,9 +55,3 @@ RSpec.describe "Search Results context", js: true do
55
55
  end
56
56
  end
57
57
  end
58
-
59
- def search_for q
60
- visit root_path
61
- fill_in "q", with: q
62
- click_button 'search'
63
- end
@@ -58,36 +58,3 @@ RSpec.describe "Search Results" do
58
58
  expect(page).to have_xpath("//a[contains(@href, 77826928)]")
59
59
  end
60
60
  end
61
-
62
- def search_for q
63
- visit root_path
64
- fill_in "q", with: q
65
- click_button 'search'
66
- end
67
-
68
- def position_in_result_page(page, id)
69
- i = -1
70
- page.all(".index_title a").each_with_index do |link, idx|
71
- i = (idx + 1) if link['href'] =~ Regexp.new(Regexp.escape(id) + "$")
72
- end
73
- i.to_i
74
- end
75
-
76
- def number_of_results_for_query(query)
77
- visit root_path
78
- fill_in "q", with: query
79
- click_button "search"
80
- get_number_of_results_from_page(page)
81
- end
82
-
83
- def number_of_results_from_page(page)
84
- tmp_value = Capybara.ignore_hidden_elements
85
- Capybara.ignore_hidden_elements = false
86
- val = begin
87
- page.find("meta[name=totalResults]")['content'].to_i
88
- rescue StandardError
89
- 0
90
- end
91
- Capybara.ignore_hidden_elements = tmp_value
92
- val
93
- end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe 'Sitelinks search box' do
4
+ it 'is home page' do
5
+ visit root_path
6
+ expect(page).to have_selector 'script[type="application/ld+json"]', visible: :hidden
7
+ end
8
+
9
+ it 'on search page' do
10
+ visit search_catalog_path q: 'book'
11
+ expect(page).not_to have_selector 'script[type="application/ld+json"]', visible: :hidden
12
+ end
13
+ end
@@ -8,14 +8,6 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
8
8
  allow(helper).to receive_messages(blacklight_config: blacklight_config)
9
9
  end
10
10
 
11
- describe "#index_fields" do
12
- it "passes through the configuration" do
13
- allow(Deprecation).to receive(:warn)
14
- allow(blacklight_config).to receive_messages(index_fields: config_value)
15
- expect(helper.index_fields).to eq config_value
16
- end
17
- end
18
-
19
11
  describe "#active_sort_fields" do
20
12
  it "restricts the configured sort fields to only those that should be displayed" do
21
13
  allow(blacklight_config).to receive_messages(sort_fields: { a: double(if: false, unless: false), b: double(if: true, unless: true) })
@@ -23,17 +15,9 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
23
15
  end
24
16
  end
25
17
 
26
- describe "#document_show_fields" do
27
- it "passes through the configuration" do
28
- allow(Deprecation).to receive(:warn)
29
- allow(blacklight_config).to receive_messages(show_fields: config_value)
30
- expect(helper.document_show_fields).to eq config_value
31
- end
32
- end
33
-
34
18
  describe "#default_document_index_view_type" do
35
19
  it "uses the first view with default set to true" do
36
- blacklight_config.view.a({})
20
+ blacklight_config.view.a
37
21
  blacklight_config.view.b(default: true)
38
22
  expect(helper.default_document_index_view_type).to eq :b
39
23
  end
@@ -71,62 +55,6 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
71
55
  end
72
56
  end
73
57
 
74
- describe "#has_alternative_views?" do
75
- subject { helper.has_alternative_views? }
76
-
77
- before do
78
- blacklight_config.view.clear
79
- end
80
-
81
- describe "with a single view defined" do
82
- it { is_expected.to be false }
83
- end
84
-
85
- describe "with multiple views defined" do
86
- before do
87
- blacklight_config.view.abc
88
- blacklight_config.view.xyz
89
- end
90
-
91
- it { is_expected.to be true }
92
- end
93
- end
94
-
95
- describe "#spell_check_max" do
96
- it "passes through the configuration" do
97
- allow(blacklight_config).to receive_messages(spell_max: config_value)
98
- expect(helper.spell_check_max).to eq config_value
99
- end
100
- end
101
-
102
- describe "#document_show_link_field" do
103
- let(:document) { SolrDocument.new id: 123, a: 1, b: 2, c: 3 }
104
-
105
- before do
106
- allow(Deprecation).to receive(:warn)
107
- end
108
-
109
- it "allows single values" do
110
- blacklight_config.index.title_field = :a
111
- f = helper.document_show_link_field document
112
- expect(f).to eq :a
113
- end
114
-
115
- it "retrieves the first field with data" do
116
- blacklight_config.index.title_field = [:zzz, :b]
117
- f = helper.document_show_link_field document
118
- expect(f).to eq :b
119
- end
120
- end
121
-
122
- describe "#view_label" do
123
- it "looks up the label to display for the view" do
124
- allow(blacklight_config).to receive(:view).and_return("my_view" => double(display_label: "some label"))
125
-
126
- helper.view_label "my_view"
127
- end
128
- end
129
-
130
58
  describe "#field_label" do
131
59
  it "looks up the label as an i18n string" do
132
60
  expect(helper).to receive(:t).with(:some_key, default: []).and_return "my label"
@@ -148,32 +76,6 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
148
76
  end
149
77
  end
150
78
 
151
- describe "#default_per_page" do
152
- before do
153
- expect(Deprecation).to receive(:warn)
154
- end
155
-
156
- context "when default_per_page is configured" do
157
- before do
158
- blacklight_config.default_per_page = 42
159
- end
160
-
161
- it "is the configured value" do
162
- expect(helper.default_per_page).to eq 42
163
- end
164
- end
165
-
166
- context "when default_per_page is not configured" do
167
- before do
168
- blacklight_config.per_page = [11, 22]
169
- end
170
-
171
- it "is the first per-page value if a default isn't set" do
172
- expect(helper.default_per_page).to eq 11
173
- end
174
- end
175
- end
176
-
177
79
  describe "#default_sort_field" do
178
80
  it "is the configured default field" do
179
81
  allow(helper).to receive_messages(blacklight_config: double(sort_fields: { a: double(default: nil), b: double(key: 'b', default: true) }))
@@ -203,11 +105,6 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
203
105
  describe "#should_render_field?" do
204
106
  let(:field_config) { double('field config', if: true, unless: false) }
205
107
 
206
- before do
207
- allow(Deprecation).to receive(:warn)
208
- allow(helper).to receive_messages(document_has_value?: true)
209
- end
210
-
211
108
  it "is true" do
212
109
  expect(helper.should_render_field?(field_config)).to be true
213
110
  end
@@ -223,39 +120,6 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
223
120
  end
224
121
  end
225
122
 
226
- describe "#search_field_options_for_select" do
227
- before do
228
- @config = Blacklight::Configuration.new do |config|
229
- config.default_solr_params = { qt: 'search' }
230
-
231
- config.add_search_field 'all_fields', label: 'All Fields'
232
- config.add_search_field 'title', qt: 'title_search'
233
- config.add_search_field 'author', qt: 'author_search'
234
- config.add_search_field 'subject', qt: 'subject_search'
235
- config.add_search_field 'no_display', qt: 'something', include_in_simple_select: false
236
- end
237
-
238
- allow(helper).to receive_messages(blacklight_config: @config)
239
- end
240
-
241
- it "returns proper options_for_select arguments" do
242
- select_arguments = helper.search_field_options_for_select
243
-
244
- select_arguments.each do |(label, key)|
245
- config_hash = @config.search_fields[key]
246
-
247
- expect(label).to eq config_hash.label
248
- expect(key).to eq config_hash.key
249
- end
250
- end
251
-
252
- it "does not include fields in select if :display_in_simple_search=>false" do
253
- select_arguments = helper.search_field_options_for_select
254
-
255
- expect(select_arguments).not_to include(["No Display", "no_display"])
256
- end
257
- end
258
-
259
123
  context 'labels' do
260
124
  let(:field_config) { { 'my-key' => double('field', display_label: 'My Field') } }
261
125
 
@@ -275,7 +139,7 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
275
139
  end
276
140
 
277
141
  it 'handles a missing field' do
278
- expect(helper.label_for_search_field(nil)).to eq nil
142
+ expect(helper.label_for_search_field(nil)).to be_nil
279
143
  end
280
144
  end
281
145