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,48 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Blacklight::SuggestHelperBehavior do
4
- before do
5
- allow(helper).to receive(:blacklight_config).and_return(blacklight_config)
6
- expect(Deprecation).to receive(:warn)
7
- end
8
-
9
- describe '#autocomplete_enabled?' do
10
- describe 'with autocomplete config' do
11
- let(:blacklight_config) do
12
- Blacklight::Configuration.new.configure do |config|
13
- config.autocomplete_enabled = true
14
- config.autocomplete_path = 'suggest'
15
- end
16
- end
17
-
18
- it 'is enabled' do
19
- expect(helper.autocomplete_enabled?).to be true
20
- end
21
- end
22
-
23
- describe 'without disabled config' do
24
- let(:blacklight_config) do
25
- Blacklight::Configuration.new.configure do |config|
26
- config.autocomplete_enabled = false
27
- config.autocomplete_path = 'suggest'
28
- end
29
- end
30
-
31
- it 'is disabled' do
32
- expect(helper.autocomplete_enabled?).to be false
33
- end
34
- end
35
-
36
- describe 'without path config' do
37
- let(:blacklight_config) do
38
- Blacklight::Configuration.new.configure do |config|
39
- config.autocomplete_enabled = true
40
- end
41
- end
42
-
43
- it 'is disabled' do
44
- expect(helper.autocomplete_enabled?).to be false
45
- end
46
- end
47
- end
48
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Blacklight::Engine do
4
- [:bookmarks_http_method, :email_regexp, :facet_missing_param, :sms_mappings].each do |dep_key|
5
- describe "config.#{dep_key}" do
6
- subject { described_class.config }
7
-
8
- let(:unlikely_value) { 'unlikely value' }
9
-
10
- it 'is deprecated' do
11
- allow(Deprecation).to receive(:warn)
12
- subject.send(dep_key)
13
- expect(Deprecation).to have_received(:warn)
14
- end
15
-
16
- it 'delegates to config.blacklight' do
17
- allow(subject.blacklight).to receive(dep_key).and_return(unlikely_value)
18
- expect(subject.send(dep_key)).to eql(unlikely_value)
19
- end
20
- end
21
-
22
- describe "config.#{dep_key}=" do
23
- subject { described_class.config }
24
-
25
- let(:unlikely_value) { 'unlikely value' }
26
-
27
- it 'is deprecated' do
28
- allow(Deprecation).to receive(:warn)
29
- allow(subject.blacklight).to receive(:"#{dep_key}=").with(unlikely_value)
30
- subject.send(:"#{dep_key}=", unlikely_value)
31
- expect(Deprecation).to have_received(:warn)
32
- end
33
-
34
- it 'delegates to config.blacklight' do
35
- allow(subject.blacklight).to receive(:"#{dep_key}=").with(unlikely_value)
36
- subject.send(:"#{dep_key}=", unlikely_value)
37
- expect(subject.blacklight).to have_received(:"#{dep_key}=").with(unlikely_value)
38
- end
39
- end
40
- end
41
- end
@@ -1,57 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "Blacklight::Document::Email" do
4
- let(:config) do
5
- Blacklight::Configuration.new
6
- end
7
-
8
- before(:all) do
9
- SolrDocument.use_extension(Blacklight::Document::Email)
10
- end
11
-
12
- it "onlies return values that are available in the field semantics" do
13
- doc = SolrDocument.new(id: "1234", title_tsim: "My Title")
14
- email_body = doc.to_email_text
15
- expect(email_body).to match(/Title: My Title/)
16
- expect(email_body).not_to match(/Author/)
17
- end
18
-
19
- it "handles multi-values fields correctly" do
20
- doc = SolrDocument.new(id: "1234", title_tsim: ["My Title", "My Alt. Title"])
21
- email_body = doc.to_email_text
22
- expect(email_body).to match(/Title: My Title My Alt. Title/)
23
- end
24
-
25
- it "returns nil if there are no valid field semantics to build the email body from" do
26
- doc = SolrDocument.new(id: "1234")
27
- expect(doc.to_email_text).to be_nil
28
- end
29
-
30
- context "we pass in configuration with email fields set" do
31
- it "uses the email fields for to_email_text" do
32
- config.add_email_field("foo", label: "Foo:")
33
- config.add_email_field("bar", label: "Bar:")
34
- doc = SolrDocument.new(id: "1234", foo: ["Fuzz Fuzz", "Fizz Fizz"], bar: ["Buzz Buzz", "Bizz Bizz"])
35
-
36
- expect(doc.to_email_text(config)).to eq("Foo: Fuzz Fuzz Fizz Fizz\nBar: Buzz Buzz Bizz Bizz")
37
- end
38
- end
39
-
40
- context "we pass in configuration with email fields no set" do
41
- it "falls back on default semantics setup" do
42
- doc = SolrDocument.new(id: "1234", title_tsim: ["My Title", "My Alt. Title"])
43
- email_body = doc.to_email_text(config)
44
- expect(email_body).to match(/Title: My Title/)
45
- end
46
- end
47
-
48
- context "document field is single valued" do
49
- it "handles the single value field correctly" do
50
- config.add_email_field("foo", label: "Foo:")
51
- config.add_email_field("bar", label: "Bar:")
52
- doc = SolrDocument.new(id: "1234", foo: "Fuzz Fuzz", bar: ["Buzz Buzz", "Bizz Bizz"])
53
-
54
- expect(doc.to_email_text(config)).to eq("Foo: Fuzz Fuzz\nBar: Buzz Buzz Bizz Bizz")
55
- end
56
- end
57
- end
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "Blacklight::Document::Email" do
4
- let(:config) do
5
- Blacklight::Configuration.new
6
- end
7
-
8
- before(:all) do
9
- SolrDocument.use_extension(Blacklight::Document::Sms)
10
- end
11
-
12
- it "onlies return values that are available in the field semantics" do
13
- doc = SolrDocument.new(id: "1234", title_tsim: "My Title", author_tsim: "Joe Schmoe")
14
- sms_text = doc.to_sms_text
15
- expect(sms_text).to match(/My Title by Joe Schmoe/)
16
- end
17
-
18
- it "handles multi-values fields correctly and only take the first" do
19
- doc = SolrDocument.new(id: "1234", title_tsim: ["My Title", "My Alt. Title"])
20
- sms_text = doc.to_sms_text
21
- expect(sms_text).to match(/My Title/)
22
- expect(sms_text).not_to match(/My Alt\. Title/)
23
- end
24
-
25
- it "returns nil if there are no valid field semantics to build the email body from" do
26
- doc = SolrDocument.new(id: "1234")
27
- expect(doc.to_sms_text).to be_nil
28
- end
29
-
30
- context "we pass in configuration with sms fields set" do
31
- it "uses the sms fields for to_sms_text" do
32
- config.add_sms_field("foo", label: "Foo:")
33
- config.add_sms_field("bar", label: " by")
34
- doc = SolrDocument.new(id: "1234", foo: ["Fuzz Fuzz", "Fizz Fizz"], bar: ["Buzz Buzz", "Bizz Bizz"])
35
-
36
- expect(doc.to_sms_text(config)).to eq("Foo: Fuzz Fuzz by Buzz Buzz")
37
- end
38
- end
39
-
40
- context "we pass in configuration with sms fields no set" do
41
- it "falls back on default semantics setup" do
42
- doc = SolrDocument.new(id: "1234", title_tsim: ["My Title", "My Alt. Title"])
43
- sms_text = doc.to_sms_text(config)
44
- expect(sms_text).to match(/My Title/)
45
- expect(sms_text).not_to match(/My Alt\. Title/)
46
- end
47
- end
48
-
49
- context "document field is single valued" do
50
- it "handles the single value field correctly" do
51
- config.add_sms_field("foo", label: "Foo:")
52
- config.add_sms_field("bar", label: " by")
53
- doc = SolrDocument.new(id: "1234", foo: "Fuzz Fuzz", bar: ["Buzz Buzz", "Bizz Bizz"])
54
-
55
- expect(doc.to_sms_text(config)).to eq("Foo: Fuzz Fuzz by Buzz Buzz")
56
- end
57
- end
58
- end
@@ -1,94 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
-
4
- RSpec.describe Blacklight::SearchBarPresenter do
5
- let(:controller) { CatalogController.new }
6
- let(:presenter) { described_class.new(controller, blacklight_config) }
7
- let(:blacklight_config) { Blacklight::Configuration.new }
8
-
9
- describe '#autocomplete_enabled?' do
10
- subject { presenter.autocomplete_enabled? }
11
-
12
- describe 'with autocomplete config' do
13
- let(:blacklight_config) do
14
- Blacklight::Configuration.new.configure do |config|
15
- config.autocomplete_enabled = true
16
- config.autocomplete_path = 'suggest'
17
- end
18
- end
19
-
20
- it { is_expected.to be true }
21
- end
22
-
23
- describe 'without disabled config' do
24
- let(:blacklight_config) do
25
- Blacklight::Configuration.new.configure do |config|
26
- config.autocomplete_enabled = false
27
- config.autocomplete_path = 'suggest'
28
- end
29
- end
30
-
31
- it { is_expected.to be false }
32
- end
33
-
34
- describe 'without path config' do
35
- let(:blacklight_config) do
36
- Blacklight::Configuration.new.configure do |config|
37
- config.autocomplete_enabled = true
38
- end
39
- end
40
-
41
- it { is_expected.to be false }
42
- end
43
- end
44
-
45
- describe "#autofocus?" do
46
- subject { presenter.autofocus? }
47
-
48
- context "on a catalog-like index page without query or facet parameters" do
49
- let(:blacklight_config) do
50
- Blacklight::Configuration.new.configure do |config|
51
- config.enable_search_bar_autofocus = true
52
- end
53
- end
54
-
55
- before do
56
- allow(controller).to receive(:action_name).and_return('index')
57
- allow(controller).to receive(:has_search_parameters?).and_return(false)
58
- end
59
-
60
- it { is_expected.to be true }
61
- end
62
-
63
- context "when disabled in config" do
64
- before do
65
- allow(controller).to receive(:action_name).and_return('index')
66
- allow(controller).to receive(:has_search_parameters?).and_return(false)
67
- end
68
-
69
- it { is_expected.to be false }
70
- end
71
-
72
- context "when not the catalog controller" do
73
- let(:controller) { ApplicationController.new }
74
-
75
- it { is_expected.to be false }
76
- end
77
-
78
- context "when on the catalog controller show page" do
79
- before do
80
- allow(controller).to receive(:action_name).and_return('show')
81
- end
82
-
83
- it { is_expected.to be false }
84
- end
85
-
86
- context "when search parameters are provided" do
87
- before do
88
- allow(controller).to receive(:has_search_parameters?).and_return(true)
89
- end
90
-
91
- it { is_expected.to be false }
92
- end
93
- end
94
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ViewComponentCapybaraTestHelpers
4
- # Work around for https://github.com/teamcapybara/capybara/issues/2466
5
- def render_inline_to_capybara_node(component)
6
- Capybara::Node::Simple.new(render_inline(component).to_s)
7
- end
8
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "catalog/constraints" do
4
- let :blacklight_config do
5
- Blacklight::Configuration.new do |config|
6
- config.view.xyz({})
7
- end
8
- end
9
-
10
- it "renders nothing if no constraints are set" do
11
- allow(view).to receive_messages(query_has_constraints?: false)
12
- allow(view).to receive(:blacklight_config).and_return(blacklight_config)
13
- render partial: "catalog/constraints"
14
- expect(rendered.strip).to be_empty
15
- end
16
-
17
- it "renders a start over link" do
18
- allow(view).to receive(:search_action_path).with({}).and_return('http://xyz')
19
- allow(view).to receive_messages(query_has_constraints?: true)
20
- allow(view).to receive(:blacklight_config).and_return(blacklight_config)
21
- render partial: "catalog/constraints"
22
- expect(rendered).to have_link("Start Over", href: 'http://xyz')
23
- end
24
-
25
- it "renders a start over link with the current view type" do
26
- allow(view).to receive(:search_action_path).with({ view: :xyz }).and_return('http://xyz?view=xyz')
27
- allow(view).to receive_messages(query_has_constraints?: true)
28
- params[:view] = 'xyz'
29
- allow(view).to receive(:blacklight_config).and_return(blacklight_config)
30
- render partial: "catalog/constraints"
31
- expect(rendered).to have_link("Start Over", href: 'http://xyz?view=xyz')
32
- end
33
- end
@@ -1,84 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "catalog/_facet_group" do
4
- let(:blacklight_config) { Blacklight::Configuration.new }
5
-
6
- before do
7
- allow(view).to receive_messages(blacklight_config: blacklight_config)
8
- allow(view).to receive(:search_action_path).and_return('/catalog')
9
- allow(view).to receive(:search_facet_path).and_return('/catalog')
10
- end
11
-
12
- context "without any facet fields" do
13
- before do
14
- allow(view).to receive_messages(groupname: nil, render_facet_partials: '')
15
- render
16
- end
17
-
18
- it "does not have a header if no facets are displayed" do
19
- expect(rendered).not_to have_selector('h4')
20
- end
21
- end
22
-
23
- context "with facet groups" do
24
- let :facet_field do
25
- Blacklight::Configuration::FacetField.new(field: 'facet_field_1', label: 'label', group: nil).normalize!
26
- end
27
-
28
- let(:mock_display_facet1) do
29
- double(name: 'facet_field_1', sort: nil, offset: nil, prefix: nil, items: [Blacklight::Solr::Response::Facets::FacetItem.new(value: 'Value', hits: 1234)])
30
- end
31
-
32
- let(:response) do
33
- instance_double(Blacklight::Solr::Response, aggregations: { "facet_field_1" => mock_display_facet1 })
34
- end
35
-
36
- before do
37
- blacklight_config.facet_fields['facet_field_1'] = facet_field
38
- allow(view).to receive_messages(groupname: nil, facet_field_names: [:facet_field_1], facet_limit_for: 10)
39
- @response = response
40
- end
41
-
42
- context "with the default facet group" do
43
- it "has a header" do
44
- allow(view).to receive_messages(render_facet_partials: '')
45
- render
46
- expect(rendered).to have_selector('.facets-heading')
47
- end
48
- end
49
-
50
- context "with a named facet group" do
51
- let :facet_field do
52
- Blacklight::Configuration::FacetField.new(field: 'facet_field_1', label: 'label', group: 'group_1').normalize!
53
- end
54
-
55
- before do
56
- blacklight_config.facet_fields['facet_field_1'] = facet_field
57
- allow(view).to receive_messages(groupname: 'group_1', facet_field_names: [:facet_field_1], facet_limit_for: 10)
58
- end
59
-
60
- it "has a header" do
61
- allow(view).to receive_messages(render_facet_partials: '')
62
- render
63
- expect(rendered).to have_selector('.facets-heading')
64
- expect(rendered).to have_selector('#facets-group_1')
65
- end
66
- end
67
-
68
- describe "facet display" do
69
- it "has a(n accessible) header" do
70
- render
71
- expect(rendered).to have_selector('.facet-field-heading')
72
- end
73
-
74
- it "lists values" do
75
- render
76
- # The .facet-content class is used by blacklight_range_limit js, and
77
- # should be applied to the .panel-collapse div that contains the collapsible
78
- # facet content. Please make sure it remains if possible.
79
- expect(rendered).to have_selector('.facet-content a.facet-select')
80
- expect(rendered).to have_selector('.facet-content .facet-count')
81
- end
82
- end
83
- end
84
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "catalog/_facets" do
4
- context "with facet groups" do
5
- before do
6
- stub_template('catalog/_facet_group.html.erb' => 'text')
7
- allow(view).to receive_messages(facet_group_names: [nil, nil])
8
- render
9
- end
10
-
11
- it "Calls facet_group for each name" do
12
- expect(rendered).to match(/^ text\n text\n$/)
13
- end
14
- end
15
- end
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # spec for default partial to display solr document fields in catalog INDEX view
4
-
5
- RSpec.describe "catalog/_index" do
6
- include BlacklightHelper
7
- include CatalogHelper
8
-
9
- before do
10
- allow(view).to receive(:action_name).and_return('index')
11
- @config = Blacklight::Configuration.new do |config|
12
- config.show.display_type_field = 'asdf'
13
- config.add_index_field 'one_field', label: 'One:'
14
- config.add_index_field 'empty_field', label: 'Three:'
15
- config.add_index_field 'four_field', label: 'Four:'
16
- end
17
-
18
- @fname_1 = "one_field"
19
- @fname_2 = "solr_field_not_in_config"
20
- @fname_3 = "empty_field"
21
- @fname_4 = "four_field"
22
-
23
- @document = SolrDocument.new(id: 1, @fname_1 => "val_1", @fname_2 => "val2", @fname_4 => "val_4")
24
-
25
- @flabel_1 = "One:"
26
- @flabel_3 = "Three:"
27
- @flabel_4 = "Four:"
28
-
29
- allow(view).to receive(:blacklight_config).and_return(@config)
30
- assigns[:document] = @document
31
- @rendered = view.render_document_partial @document, :index
32
- end
33
-
34
- it "only displays fields listed in the initializer" do
35
- expect(@rendered).not_to include("val_2")
36
- expect(@rendered).not_to include(@fname_2)
37
- end
38
-
39
- it "skips over fields listed in initializer that are not in solr response" do
40
- expect(@rendered).not_to include(@fname_3)
41
- end
42
-
43
- it "displays field labels from initializer and raw solr field names in the class" do
44
- # labels
45
- expect(@rendered).to include(@flabel_1)
46
- expect(@rendered).to include(@flabel_4)
47
- # classes
48
- expect(@rendered).to include("blacklight-#{@fname_1}")
49
- expect(@rendered).to include("blacklight-#{@fname_4}")
50
- end
51
-
52
- # this test probably belongs in a Cucumber feature
53
- # it "should display fields in the order listed in the initializer" do
54
- # pending
55
- # end
56
-
57
- it "has values for displayed fields" do
58
- expect(@rendered).to include("val_1")
59
- expect(@rendered).to include("val_4")
60
- expect(@rendered).not_to include("val_2")
61
- end
62
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "catalog/_index_header" do
4
- let :document do
5
- SolrDocument.new id: 'xyz', format: 'a'
6
- end
7
-
8
- let(:blacklight_config) { Blacklight::Configuration.new }
9
-
10
- before do
11
- assign :response, instance_double(Blacklight::Solr::Response, start: 0)
12
- allow(view).to receive(:render_grouped_response?).and_return false
13
- allow(view).to receive(:blacklight_config).and_return(blacklight_config)
14
- allow(view).to receive(:session_tracking_params).and_return({})
15
- end
16
-
17
- it "renders the document header" do
18
- allow(view).to receive(:render_index_doc_actions)
19
- render partial: "catalog/index_header", locals: { document: document, document_counter: 1 }
20
- expect(rendered).to have_selector('.document-counter', text: "2")
21
- end
22
-
23
- it "allows the title to take the whole space if no document tools are rendered" do
24
- allow(view).to receive(:render_index_doc_actions)
25
- render partial: "catalog/index_header", locals: { document: document, document_counter: 1 }
26
- expect(rendered).to have_selector '.index_title.col-md-12'
27
- end
28
-
29
- it "gives the document actions space if present" do
30
- allow(view).to receive(:render_index_doc_actions).and_return("DOCUMENT ACTIONS")
31
- render partial: "catalog/index_header", locals: { document: document, document_counter: 1 }
32
- expect(rendered).to have_selector '.index_title.col-sm-9'
33
- expect(rendered).to have_content "DOCUMENT ACTIONS"
34
- end
35
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "catalog/_previous_next_doc.html.erb" do
4
- before do
5
- allow(view).to receive(:search_session).and_return({})
6
- end
7
-
8
- it "without next or previous does not render content" do
9
- assign(:search_context, {})
10
- render
11
- expect(rendered).not_to have_selector ".pagination-search-widgets"
12
- end
13
-
14
- it "with next or previous does render content" do
15
- assign(:search_context, next: 'foo', prev: 'bar')
16
- allow(view).to receive(:link_to_previous_document).and_return('')
17
- allow(view).to receive(:item_page_entry_info).and_return('')
18
- allow(view).to receive(:link_to_next_document).and_return('')
19
- render
20
- expect(rendered).to have_selector ".pagination-search-widgets"
21
- end
22
- end
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # spec for default partial to display solr document fields in catalog show view
4
-
5
- RSpec.describe "catalog/_show" do
6
- include BlacklightHelper
7
- include CatalogHelper
8
-
9
- before do
10
- allow(controller).to receive(:action_name).and_return('show')
11
- @config = Blacklight::Configuration.new do |config|
12
- config.show.display_type_field = 'asdf'
13
- config.add_show_field 'one_field', label: 'One:'
14
- config.add_show_field 'empty_field', label: 'Three:'
15
- config.add_show_field 'four_field', label: 'Four:'
16
- end
17
-
18
- @fname_1 = "one_field"
19
- @fname_2 = "solr_field_not_in_config"
20
- @fname_3 = "empty_field"
21
- @fname_4 = "four_field"
22
-
23
- @document = SolrDocument.new(id: 1, @fname_1 => "val_1", @fname_2 => "val2", @fname_4 => "val_4")
24
-
25
- @flabel_1 = "One:"
26
- @flabel_3 = "Two:"
27
- @flabel_4 = "Four:"
28
-
29
- allow(view).to receive(:blacklight_config).and_return(@config)
30
- assigns[:document] = @document
31
- @rendered = view.render_document_partial @document, :show
32
- end
33
-
34
- it "only displays fields listed in the initializer" do
35
- expect(@rendered).not_to include("val_2")
36
- expect(@rendered).not_to include(@fname_2)
37
- end
38
-
39
- it "skips over fields listed in initializer that are not in solr response" do
40
- expect(@rendered).not_to include(@fname_3)
41
- end
42
-
43
- it "displays field labels from initializer and raw solr field names in the class" do
44
- # labels
45
- expect(@rendered).to include(@flabel_1)
46
- expect(@rendered).to include(@flabel_4)
47
- # classes
48
- expect(@rendered).to include("blacklight-#{@fname_1}")
49
- expect(@rendered).to include("blacklight-#{@fname_4}")
50
- end
51
-
52
- # this test probably belongs in a Cucumber feature
53
- # it "should display fields in the order listed in the initializer" do
54
- # pending
55
- # end
56
-
57
- it "has values for displayed fields" do
58
- expect(@rendered).to include("val_1")
59
- expect(@rendered).to include("val_4")
60
- expect(@rendered).not_to include("val_2")
61
- end
62
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "catalog/_thumbnail" do
4
- let :document_without_thumbnail_field do
5
- SolrDocument.new id: 'xyz', format: 'a'
6
- end
7
-
8
- let :document_with_thumbnail_field do
9
- SolrDocument.new id: 'xyz', format: 'a', thumbnail_url: 'http://localhost/logo.png'
10
- end
11
-
12
- let :blacklight_config do
13
- Blacklight::Configuration.new do |config|
14
- config.index.thumbnail_field = :thumbnail_url
15
- end
16
- end
17
-
18
- before do
19
- # Every call to view_context returns a different object. This ensures it stays stable.
20
- allow(controller).to receive(:view_context).and_return(view)
21
- allow(controller).to receive(:action_name).and_return('index')
22
- assign :response, instance_double(Blacklight::Solr::Response, start: 0)
23
- allow(view).to receive(:render_grouped_response?).and_return false
24
- allow(view).to receive(:blacklight_config).and_return(blacklight_config)
25
- allow(view).to receive(:session_tracking_params).and_return({})
26
- end
27
-
28
- it "renders the thumbnail if the document has one" do
29
- render partial: "catalog/thumbnail", locals: { document: document_with_thumbnail_field, document_counter: 1 }
30
- expect(rendered).to match /document-thumbnail/
31
- expect(rendered).to match %r{src="http://localhost/logo.png"}
32
- end
33
-
34
- it "does not render a thumbnail if the document does not have one" do
35
- render partial: "catalog/thumbnail", locals: { document: document_without_thumbnail_field, document_counter: 1 }
36
- expect(rendered).to eq ""
37
- end
38
- end