blacklight 6.14.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.npmignore +23 -0
  4. data/.rubocop.yml +40 -16
  5. data/.rubocop_todo.yml +479 -375
  6. data/.solr_wrapper.yml +9 -2
  7. data/.travis.yml +27 -20
  8. data/Gemfile +3 -1
  9. data/README.md +22 -5
  10. data/Rakefile +3 -2
  11. data/VERSION +1 -1
  12. data/Vagrantfile +2 -0
  13. data/app/assets/images/blacklight/list.svg +1 -0
  14. data/app/assets/images/blacklight/search.svg +1 -0
  15. data/app/assets/javascripts/blacklight/blacklight.js +497 -57
  16. data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
  17. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +18 -15
  18. data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
  19. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
  20. data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
  21. data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
  22. data/app/assets/stylesheets/blacklight/_facets.scss +64 -93
  23. data/app/assets/stylesheets/blacklight/_header.scss +35 -48
  24. data/app/assets/stylesheets/blacklight/_icons.scss +35 -0
  25. data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
  26. data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
  27. data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
  28. data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
  29. data/app/assets/stylesheets/blacklight/_search_form.scss +7 -0
  30. data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
  31. data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
  32. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
  33. data/app/assets/stylesheets/blacklight/blacklight.scss +1 -1
  34. data/app/builders/blacklight/action_builder.rb +57 -0
  35. data/app/controllers/bookmarks_controller.rb +2 -2
  36. data/app/controllers/catalog_controller.rb +2 -2
  37. data/app/controllers/concerns/blacklight/base.rb +0 -33
  38. data/app/controllers/concerns/blacklight/bookmarks.rb +36 -33
  39. data/app/controllers/concerns/blacklight/catalog.rb +266 -210
  40. data/app/controllers/concerns/blacklight/controller.rb +111 -126
  41. data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
  42. data/app/controllers/concerns/blacklight/facet.rb +3 -0
  43. data/app/controllers/concerns/blacklight/search_context.rb +16 -14
  44. data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
  45. data/app/controllers/concerns/blacklight/search_history.rb +1 -6
  46. data/app/controllers/concerns/blacklight/token_based_user.rb +24 -9
  47. data/app/helpers/blacklight/blacklight_helper_behavior.rb +39 -119
  48. data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
  49. data/app/helpers/blacklight/component_helper_behavior.rb +21 -19
  50. data/app/helpers/blacklight/configuration_helper_behavior.rb +30 -57
  51. data/app/helpers/blacklight/facets_helper_behavior.rb +55 -51
  52. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
  53. data/app/helpers/blacklight/icon_helper_behavior.rb +18 -0
  54. data/app/helpers/blacklight/layout_helper_behavior.rb +3 -3
  55. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +8 -6
  56. data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
  57. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +19 -11
  58. data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
  59. data/app/helpers/blacklight/url_helper_behavior.rb +50 -41
  60. data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
  61. data/app/javascript/blacklight/bookmark_toggle.js +25 -0
  62. data/app/javascript/blacklight/checkbox_submit.js +134 -0
  63. data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
  64. data/app/{assets/javascripts → javascript}/blacklight/core.js +10 -8
  65. data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
  66. data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +62 -64
  67. data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -3
  68. data/app/models/blacklight/facet_paginator.rb +3 -3
  69. data/app/models/blacklight/icon.rb +56 -0
  70. data/app/models/blacklight/solr/facet_paginator.rb +3 -3
  71. data/app/models/blacklight/suggest_search.rb +4 -15
  72. data/app/models/bookmark.rb +5 -10
  73. data/app/models/concerns/blacklight/configurable.rb +13 -13
  74. data/app/models/concerns/blacklight/document/active_model_shim.rb +13 -11
  75. data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
  76. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
  77. data/app/models/concerns/blacklight/document/email.rb +1 -1
  78. data/app/models/concerns/blacklight/document/extensions.rb +5 -5
  79. data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
  80. data/app/models/concerns/blacklight/document/sms.rb +1 -1
  81. data/app/models/concerns/blacklight/document.rb +26 -40
  82. data/app/models/concerns/blacklight/solr/document.rb +8 -8
  83. data/app/models/concerns/blacklight/suggest/response.rb +5 -3
  84. data/app/models/concerns/blacklight/user.rb +7 -6
  85. data/app/models/record_mailer.rb +5 -6
  86. data/app/models/search.rb +5 -7
  87. data/app/presenters/blacklight/document_presenter.rb +25 -140
  88. data/app/presenters/blacklight/field_presenter.rb +7 -5
  89. data/app/presenters/blacklight/index_presenter.rb +41 -58
  90. data/app/presenters/blacklight/json_presenter.rb +10 -14
  91. data/app/presenters/blacklight/link_alternate_presenter.rb +3 -1
  92. data/app/presenters/blacklight/rendering/abstract_step.rb +7 -5
  93. data/app/presenters/blacklight/rendering/helper_method.rb +10 -8
  94. data/app/presenters/blacklight/rendering/join.rb +5 -3
  95. data/app/presenters/blacklight/rendering/link_to_facet.rb +23 -19
  96. data/app/presenters/blacklight/rendering/microdata.rb +6 -3
  97. data/app/presenters/blacklight/rendering/pipeline.rb +7 -5
  98. data/app/presenters/blacklight/rendering/terminator.rb +2 -0
  99. data/app/presenters/blacklight/search_bar_presenter.rb +39 -0
  100. data/app/presenters/blacklight/show_presenter.rb +26 -63
  101. data/app/presenters/blacklight/thumbnail_presenter.rb +74 -0
  102. data/app/services/blacklight/document_factory.rb +13 -0
  103. data/app/services/blacklight/field_retriever.rb +26 -24
  104. data/app/services/blacklight/search_service.rb +152 -0
  105. data/app/values/blacklight/types.rb +31 -0
  106. data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
  107. data/app/views/blacklight/nav/_search_history.html.erb +1 -1
  108. data/app/views/bookmarks/_tools.html.erb +2 -2
  109. data/app/views/bookmarks/index.html.erb +12 -13
  110. data/app/views/catalog/_bookmark_control.html.erb +26 -10
  111. data/app/views/catalog/_citation.html.erb +4 -4
  112. data/app/views/catalog/_constraints.html.erb +6 -7
  113. data/app/views/catalog/_constraints_element.html.erb +6 -6
  114. data/app/views/catalog/_did_you_mean.html.erb +1 -1
  115. data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +19 -18
  116. data/app/views/catalog/_document.html.erb +5 -3
  117. data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +2 -0
  118. data/app/views/catalog/_document_action.html.erb +2 -1
  119. data/app/views/catalog/_email_form.html.erb +8 -4
  120. data/app/views/catalog/_facet_index_navigation.html.erb +5 -4
  121. data/app/views/catalog/_facet_layout.html.erb +6 -10
  122. data/app/views/catalog/_facet_limit.html.erb +3 -2
  123. data/app/views/catalog/_facet_pagination.html.erb +8 -8
  124. data/app/views/catalog/_facet_pivot.html.erb +2 -2
  125. data/app/views/catalog/_facets.html.erb +9 -12
  126. data/app/views/catalog/_field.json.jbuilder +10 -0
  127. data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +1 -1
  128. data/app/views/catalog/_home_text.html.erb +32 -36
  129. data/app/views/catalog/_index.html.erb +10 -0
  130. data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +3 -3
  131. data/app/views/catalog/_per_page_widget.html.erb +6 -7
  132. data/app/views/catalog/_previous_next_doc.html.erb +6 -14
  133. data/app/views/catalog/_results_pagination.html.erb +2 -2
  134. data/app/views/catalog/_search_form.html.erb +12 -8
  135. data/app/views/catalog/_search_header.html.erb +0 -3
  136. data/app/views/catalog/_search_results.html.erb +6 -2
  137. data/app/views/catalog/_show.html.erb +8 -0
  138. data/app/views/catalog/_show_main_content.html.erb +4 -4
  139. data/app/views/catalog/_show_more_like_this.html.erb +1 -1
  140. data/app/views/catalog/_show_sidebar.html.erb +3 -3
  141. data/app/views/catalog/_show_tools.html.erb +10 -12
  142. data/app/views/catalog/_sms_form.html.erb +8 -4
  143. data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
  144. data/app/views/catalog/_sort_widget.html.erb +7 -7
  145. data/app/views/catalog/_thumbnail.html.erb +5 -0
  146. data/app/views/catalog/_view_type_group.html.erb +2 -2
  147. data/app/views/catalog/_zero_results.html.erb +1 -1
  148. data/app/views/catalog/citation.js.erb +4 -2
  149. data/app/views/catalog/email.html.erb +5 -3
  150. data/app/views/catalog/email_success.html.erb +12 -8
  151. data/app/views/catalog/facet.html.erb +10 -8
  152. data/app/views/catalog/facet.json.jbuilder +2 -0
  153. data/app/views/catalog/index.atom.builder +13 -16
  154. data/app/views/catalog/index.html.erb +9 -11
  155. data/app/views/catalog/index.json.jbuilder +84 -3
  156. data/app/views/catalog/index.rss.builder +7 -5
  157. data/app/views/catalog/opensearch.xml.builder +12 -10
  158. data/app/views/catalog/show.html.erb +11 -6
  159. data/app/views/catalog/show.json.jbuilder +21 -0
  160. data/app/views/catalog/sms.html.erb +3 -1
  161. data/app/views/catalog/sms_success.html.erb +12 -8
  162. data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
  163. data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
  164. data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
  165. data/app/views/kaminari/blacklight/_next_page.html.erb +5 -5
  166. data/app/views/kaminari/blacklight/_page.html.erb +5 -3
  167. data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
  168. data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
  169. data/app/views/layouts/blacklight/base.html.erb +35 -0
  170. data/app/views/layouts/blacklight.html.erb +14 -41
  171. data/app/views/layouts/catalog_result.html.erb +11 -0
  172. data/app/views/search_history/index.html.erb +16 -21
  173. data/app/views/shared/_header_navbar.html.erb +8 -13
  174. data/app/views/shared/_modal.html.erb +6 -0
  175. data/app/views/shared/_user_util_links.html.erb +22 -0
  176. data/blacklight.gemspec +10 -11
  177. data/config/i18n-tasks.yml +17 -0
  178. data/config/locales/blacklight.de.yml +71 -82
  179. data/config/locales/blacklight.en.yml +15 -27
  180. data/config/locales/blacklight.es.yml +14 -26
  181. data/config/locales/blacklight.fr.yml +16 -33
  182. data/config/locales/blacklight.hu.yml +212 -0
  183. data/config/locales/blacklight.it.yml +15 -26
  184. data/config/locales/blacklight.nl.yml +212 -0
  185. data/config/locales/blacklight.pt-BR.yml +24 -29
  186. data/config/locales/blacklight.sq.yml +4 -28
  187. data/config/locales/blacklight.zh.yml +3 -25
  188. data/config/routes.rb +2 -10
  189. data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
  190. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
  191. data/lib/blacklight/abstract_repository.rb +22 -10
  192. data/lib/blacklight/configuration/context.rb +12 -1
  193. data/lib/blacklight/configuration/facet_field.rb +16 -9
  194. data/lib/blacklight/configuration/field.rb +32 -3
  195. data/lib/blacklight/configuration/fields.rb +61 -58
  196. data/lib/blacklight/configuration/null_field.rb +2 -0
  197. data/lib/blacklight/configuration/search_field.rb +2 -2
  198. data/lib/blacklight/configuration/sort_field.rb +2 -2
  199. data/lib/blacklight/configuration/view_config.rb +4 -0
  200. data/lib/blacklight/configuration.rb +101 -88
  201. data/lib/blacklight/engine.rb +11 -7
  202. data/lib/blacklight/exceptions.rb +4 -7
  203. data/lib/blacklight/{utils.rb → nested_open_struct_with_hash_access.rb} +9 -81
  204. data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
  205. data/lib/blacklight/parameters.rb +1 -1
  206. data/lib/blacklight/routes/exportable.rb +1 -3
  207. data/lib/blacklight/routes/searchable.rb +3 -3
  208. data/lib/blacklight/runtime_registry.rb +2 -0
  209. data/lib/blacklight/search_builder.rb +28 -35
  210. data/lib/blacklight/search_state.rb +10 -8
  211. data/lib/blacklight/solr/repository.rb +40 -6
  212. data/lib/blacklight/solr/request.rb +1 -1
  213. data/lib/blacklight/solr/response/facets.rb +29 -31
  214. data/lib/blacklight/solr/response/group.rb +3 -3
  215. data/lib/blacklight/solr/response/group_response.rb +1 -1
  216. data/lib/blacklight/solr/response/more_like_this.rb +2 -2
  217. data/lib/blacklight/solr/response/response.rb +2 -2
  218. data/lib/blacklight/solr/response/spelling.rb +4 -3
  219. data/lib/blacklight/solr/response.rb +29 -30
  220. data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
  221. data/lib/blacklight/version.rb +1 -1
  222. data/lib/blacklight.rb +10 -8
  223. data/lib/generators/blacklight/assets_generator.rb +18 -12
  224. data/lib/generators/blacklight/controller_generator.rb +4 -5
  225. data/lib/generators/blacklight/document_generator.rb +1 -1
  226. data/lib/generators/blacklight/install_generator.rb +18 -28
  227. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  228. data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +12 -6
  229. data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
  230. data/lib/generators/blacklight/templates/alternate_controller.rb +4 -4
  231. data/lib/generators/blacklight/templates/blacklight.scss +0 -2
  232. data/lib/generators/blacklight/templates/catalog_controller.rb +59 -49
  233. data/lib/generators/blacklight/templates/config/blacklight.yml +1 -13
  234. data/lib/generators/blacklight/templates/solr/conf/schema.xml +388 -0
  235. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
  236. data/lib/generators/blacklight/test_support_generator.rb +10 -10
  237. data/lib/generators/blacklight/user_generator.rb +5 -6
  238. data/lib/railties/blacklight.rake +17 -21
  239. data/package-lock.json +2195 -0
  240. data/package.json +29 -0
  241. data/spec/controllers/alternate_controller_spec.rb +5 -4
  242. data/spec/controllers/application_controller_spec.rb +1 -5
  243. data/spec/controllers/blacklight/base_spec.rb +6 -3
  244. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
  245. data/spec/controllers/blacklight/facet_spec.rb +1 -2
  246. data/spec/controllers/blacklight/search_fields_spec.rb +25 -34
  247. data/spec/controllers/bookmarks_controller_spec.rb +46 -11
  248. data/spec/controllers/catalog_controller_spec.rb +334 -161
  249. data/spec/controllers/search_history_controller_spec.rb +6 -6
  250. data/spec/features/alternate_controller_spec.rb +4 -4
  251. data/spec/features/autocomplete_spec.rb +4 -2
  252. data/spec/features/bookmarks_spec.rb +10 -10
  253. data/spec/features/did_you_mean_spec.rb +7 -12
  254. data/spec/features/facets_spec.rb +29 -17
  255. data/spec/features/record_view_spec.rb +12 -18
  256. data/spec/features/search_context_spec.rb +6 -7
  257. data/spec/features/search_crawler_spec.rb +3 -5
  258. data/spec/features/search_filters_spec.rb +80 -80
  259. data/spec/features/search_formats_spec.rb +1 -1
  260. data/spec/features/search_history_spec.rb +6 -29
  261. data/spec/features/search_pagination_spec.rb +4 -2
  262. data/spec/features/search_results_spec.rb +14 -12
  263. data/spec/features/search_sort_spec.rb +2 -2
  264. data/spec/features/search_spec.rb +8 -9
  265. data/spec/features/sitelinks_search_box.rb +4 -4
  266. data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
  267. data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +97 -92
  268. data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +72 -67
  269. data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +2 -2
  270. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +10 -0
  271. data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -5
  272. data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +10 -6
  273. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +92 -0
  274. data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +29 -30
  275. data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +9 -2
  276. data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +56 -54
  277. data/spec/helpers/blacklight_helper_spec.rb +65 -150
  278. data/spec/helpers/catalog_helper_spec.rb +80 -96
  279. data/spec/i18n_spec.rb +18 -0
  280. data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +21 -13
  281. data/spec/lib/blacklight/configuration/facet_field_spec.rb +13 -0
  282. data/spec/lib/blacklight/configuration/field_spec.rb +15 -0
  283. data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
  284. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +148 -0
  285. data/spec/lib/blacklight/parameters_spec.rb +4 -2
  286. data/spec/lib/blacklight/search_state_spec.rb +53 -36
  287. data/spec/lib/blacklight_spec.rb +14 -15
  288. data/spec/lib/tasks/blacklight_task_spec.rb +4 -6
  289. data/spec/models/blacklight/configurable_spec.rb +24 -27
  290. data/spec/models/blacklight/configuration/context_spec.rb +9 -10
  291. data/spec/models/blacklight/configuration_spec.rb +248 -223
  292. data/spec/models/blacklight/document/active_model_shim_spec.rb +15 -6
  293. data/spec/models/blacklight/document/cache_key_spec.rb +9 -2
  294. data/spec/models/blacklight/document/dublin_core_spec.rb +17 -20
  295. data/spec/models/blacklight/document/email_spec.rb +10 -10
  296. data/spec/models/blacklight/document/sms_spec.rb +10 -10
  297. data/spec/models/blacklight/document_spec.rb +10 -22
  298. data/spec/models/blacklight/facet_paginator_spec.rb +40 -30
  299. data/spec/models/blacklight/icon_spec.rb +44 -0
  300. data/spec/models/blacklight/search_builder_spec.rb +41 -26
  301. data/spec/models/blacklight/solr/document_spec.rb +224 -216
  302. data/spec/models/blacklight/solr/facet_paginator_spec.rb +6 -4
  303. data/spec/models/blacklight/solr/repository_spec.rb +61 -46
  304. data/spec/models/blacklight/solr/request_spec.rb +17 -18
  305. data/spec/models/blacklight/solr/response/facets_spec.rb +58 -58
  306. data/spec/models/blacklight/solr/response/group_response_spec.rb +16 -22
  307. data/spec/models/blacklight/solr/response/group_spec.rb +18 -25
  308. data/spec/models/blacklight/solr/response_spec.rb +56 -55
  309. data/spec/models/blacklight/solr/search_builder_spec.rb +150 -164
  310. data/spec/models/blacklight/suggest/response_spec.rb +6 -4
  311. data/spec/models/blacklight/suggest_search_spec.rb +9 -16
  312. data/spec/models/blacklight/user_spec.rb +9 -11
  313. data/spec/models/bookmark_spec.rb +7 -6
  314. data/spec/models/record_mailer_spec.rb +23 -21
  315. data/spec/models/search_spec.rb +19 -18
  316. data/spec/models/solr_document_spec.rb +33 -5
  317. data/spec/presenters/blacklight/document_presenter_spec.rb +86 -0
  318. data/spec/presenters/blacklight/index_presenter_spec.rb +186 -0
  319. data/spec/presenters/blacklight/json_presenter_spec.rb +59 -0
  320. data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -0
  321. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +79 -0
  322. data/spec/presenters/blacklight/show_presenter_spec.rb +333 -0
  323. data/spec/presenters/pipeline_spec.rb +18 -11
  324. data/spec/presenters/thumbnail_presenter_spec.rb +174 -0
  325. data/spec/routing/catalog_routing_spec.rb +13 -15
  326. data/spec/services/blacklight/search_service_spec.rb +488 -0
  327. data/spec/spec_helper.rb +20 -19
  328. data/spec/support/features/session_helpers.rb +4 -4
  329. data/spec/support/features.rb +1 -1
  330. data/spec/test_app_templates/Gemfile.extra +2 -4
  331. data/spec/test_app_templates/lib/generators/test_app_generator.rb +12 -13
  332. data/spec/views/catalog/_constraints.html.erb_spec.rb +3 -6
  333. data/spec/views/catalog/_constraints_element.html.erb_spec.rb +17 -13
  334. data/spec/views/catalog/_document.html.erb_spec.rb +11 -11
  335. data/spec/views/catalog/_document_list.html.erb_spec.rb +2 -1
  336. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +5 -5
  337. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
  338. data/spec/views/catalog/_facets.html.erb_spec.rb +10 -12
  339. data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +14 -15
  340. data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +6 -9
  341. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +7 -30
  342. data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
  343. data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +13 -14
  344. data/spec/views/catalog/_show_sidebar.erb_spec.rb +6 -9
  345. data/spec/views/catalog/_show_tools.html.erb_spec.rb +5 -5
  346. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -2
  347. data/spec/views/catalog/_sort_widget.html.erb_spec.rb +3 -1
  348. data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +7 -9
  349. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +12 -10
  350. data/spec/views/catalog/email_success.html.erb_spec.rb +8 -0
  351. data/spec/views/catalog/facet.html.erb_spec.rb +4 -3
  352. data/spec/views/catalog/facet.json.jbuilder_spec.rb +3 -2
  353. data/spec/views/catalog/index.atom.builder_spec.rb +11 -6
  354. data/spec/views/catalog/index.html.erb_spec.rb +6 -8
  355. data/spec/views/catalog/index.json.jbuilder_spec.rb +119 -26
  356. data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
  357. data/spec/views/catalog/show.html.erb_spec.rb +8 -8
  358. data/spec/views/catalog/show.json.jbuilder_spec.rb +40 -0
  359. data/spec/views/catalog/sms_success.html.erb_spec.rb +8 -0
  360. data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -7
  361. data/tasks/blacklight.rake +10 -8
  362. data/template.demo.rb +3 -11
  363. metadata +188 -189
  364. data/app/assets/javascripts/blacklight/autofocus.js +0 -16
  365. data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
  366. data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -135
  367. data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
  368. data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
  369. data/app/controllers/concerns/blacklight/search_helper.rb +0 -155
  370. data/app/controllers/concerns/blacklight/suggest.rb +0 -25
  371. data/app/controllers/saved_searches_controller.rb +0 -4
  372. data/app/controllers/suggest_controller.rb +0 -4
  373. data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
  374. data/app/helpers/blacklight/render_partials_helper.rb +0 -205
  375. data/app/helpers/blacklight_configuration_helper.rb +0 -4
  376. data/app/helpers/blacklight_url_helper.rb +0 -4
  377. data/app/helpers/component_helper.rb +0 -4
  378. data/app/helpers/facets_helper.rb +0 -4
  379. data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
  380. data/app/helpers/layout_helper.rb +0 -4
  381. data/app/helpers/render_constraints_helper.rb +0 -4
  382. data/app/helpers/search_history_constraints_helper.rb +0 -4
  383. data/app/helpers/suggest_helper.rb +0 -4
  384. data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
  385. data/app/views/_user_util_links.html.erb +0 -26
  386. data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
  387. data/app/views/catalog/_index_default.html.erb +0 -12
  388. data/app/views/catalog/_show_default.html.erb +0 -10
  389. data/app/views/catalog/_thumbnail_default.html.erb +0 -5
  390. data/app/views/saved_searches/index.html.erb +0 -32
  391. data/app/views/shared/_ajax_modal.html.erb +0 -6
  392. data/lib/generators/blacklight/solr4_generator.rb +0 -31
  393. data/lib/generators/blacklight/templates/config/jetty.yml +0 -13
  394. data/solr/conf/schema.xml +0 -629
  395. data/solr/conf/solrconfig.xml +0 -411
  396. data/spec/controllers/blacklight/search_helper_spec.rb +0 -470
  397. data/spec/controllers/saved_searches_controller_spec.rb +0 -32
  398. data/spec/controllers/suggest_controller_spec.rb +0 -17
  399. data/spec/features/saved_searches_spec.rb +0 -47
  400. data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
  401. data/spec/lib/blacklight/utils_spec.rb +0 -167
  402. data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
  403. data/spec/presenters/document_presenter_spec.rb +0 -438
  404. data/spec/presenters/index_presenter_spec.rb +0 -173
  405. data/spec/presenters/show_presenter_spec.rb +0 -313
  406. data/spec/support/backport_test.rb +0 -14
  407. /data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
  408. /data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
  409. /data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
  410. /data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
  411. /data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
  412. /data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
  413. /data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
  414. /data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
  415. /data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
  416. /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
  417. /data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
  418. /data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
  419. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
  420. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
  421. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
  422. /data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
@@ -1,18 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe FacetsHelper do
3
+ RSpec.describe Blacklight::FacetsHelperBehavior do
4
4
  let(:blacklight_config) { Blacklight::Configuration.new }
5
5
 
6
- before(:each) do
6
+ before do
7
7
  allow(helper).to receive(:blacklight_config).and_return blacklight_config
8
8
  end
9
9
 
10
10
  describe "has_facet_values?" do
11
- let(:empty) { double(:items => [], :name => 'empty') }
11
+ let(:empty) { double(items: [], name: 'empty') }
12
12
 
13
13
  it "is true if there are any facets to display" do
14
- a = double(:items => [1, 2], :name => 'a')
15
- b = double(:items => ['b', 'c'], :name => 'b')
14
+ a = double(items: [1, 2], name: 'a')
15
+ b = double(items: %w[b c], name: 'b')
16
16
  fields = [a, b, empty]
17
17
  expect(helper.has_facet_values?(fields)).to be true
18
18
  end
@@ -22,9 +22,10 @@ describe FacetsHelper do
22
22
  end
23
23
 
24
24
  describe "different config" do
25
- let(:blacklight_config) { Blacklight::Configuration.new { |config| config.add_facet_field 'basic_field', :if => false } }
25
+ let(:blacklight_config) { Blacklight::Configuration.new { |config| config.add_facet_field 'basic_field', if: false } }
26
+
26
27
  it "is false if no facets are displayable" do
27
- a = double(:items => [1, 2], :name => 'basic_field')
28
+ a = double(items: [1, 2], name: 'basic_field')
28
29
  expect(helper.has_facet_values?([a])).to be false
29
30
  end
30
31
  end
@@ -34,45 +35,45 @@ describe FacetsHelper do
34
35
  let(:blacklight_config) do
35
36
  Blacklight::Configuration.new do |config|
36
37
  config.add_facet_field 'basic_field'
37
- config.add_facet_field 'no_show', :show => false
38
- config.add_facet_field 'helper_show', :show => :my_custom_check
39
- config.add_facet_field 'helper_with_an_arg_show', :show => :my_custom_check_with_an_arg
40
- config.add_facet_field 'lambda_show', :show => lambda { |context, config, field| true }
41
- config.add_facet_field 'lambda_no_show', :show => lambda { |context, config, field| false }
38
+ config.add_facet_field 'no_show', show: false
39
+ config.add_facet_field 'helper_show', show: :my_custom_check
40
+ config.add_facet_field 'helper_with_an_arg_show', show: :my_custom_check_with_an_arg
41
+ config.add_facet_field 'lambda_show', show: ->(_context, _config, _field) { true }
42
+ config.add_facet_field 'lambda_no_show', show: ->(_context, _config, _field) { false }
42
43
  end
43
44
  end
44
45
 
45
46
  it "renders facets with items" do
46
- a = double(:items => [1, 2], :name => 'basic_field')
47
+ a = double(items: [1, 2], name: 'basic_field')
47
48
  expect(helper.should_render_facet?(a)).to be true
48
49
  end
49
50
 
50
51
  it "does not render facets without items" do
51
- empty = double(:items => [], :name => 'basic_field')
52
+ empty = double(items: [], name: 'basic_field')
52
53
  expect(helper.should_render_facet?(empty)).to be false
53
54
  end
54
55
 
55
56
  it "does not render facets where show is set to false" do
56
- a = double(:items => [1, 2], :name => 'no_show')
57
+ a = double(items: [1, 2], name: 'no_show')
57
58
  expect(helper.should_render_facet?(a)).to be false
58
59
  end
59
60
 
60
61
  it "calls a helper to determine if it should render a field" do
61
- allow(controller).to receive_messages(:my_custom_check => true)
62
- a = double(:items => [1, 2], :name => 'helper_show')
62
+ allow(controller).to receive_messages(my_custom_check: true)
63
+ a = double(items: [1, 2], name: 'helper_show')
63
64
  expect(helper.should_render_facet?(a)).to be true
64
65
  end
65
66
 
66
67
  it "calls a helper to determine if it should render a field" do
67
- a = double(:items => [1, 2], :name => 'helper_with_an_arg_show')
68
+ a = double(items: [1, 2], name: 'helper_with_an_arg_show')
68
69
  allow(controller).to receive(:my_custom_check_with_an_arg).with(blacklight_config.facet_fields['helper_with_an_arg_show'], a).and_return(true)
69
70
  expect(helper.should_render_facet?(a)).to be true
70
71
  end
71
72
 
72
73
  it "evaluates a Proc to determine if it should render a field" do
73
- a = double(:items => [1, 2], :name => 'lambda_show')
74
+ a = double(items: [1, 2], name: 'lambda_show')
74
75
  expect(helper.should_render_facet?(a)).to be true
75
- a = double(:items => [1, 2], :name => 'lambda_no_show')
76
+ a = double(items: [1, 2], name: 'lambda_no_show')
76
77
  expect(helper.should_render_facet?(a)).to be false
77
78
  end
78
79
  end
@@ -103,7 +104,7 @@ describe FacetsHelper do
103
104
  describe "facet_by_field_name" do
104
105
  it "retrieves the facet from the response given a string" do
105
106
  facet_config = double(query: nil, field: 'b', key: 'a')
106
- facet_field = double()
107
+ facet_field = double
107
108
  allow(helper).to receive(:facet_configuration_for_field).with('b').and_return(facet_config)
108
109
  @response = instance_double(Blacklight::Solr::Response, aggregations: { 'b' => facet_field })
109
110
 
@@ -112,11 +113,11 @@ describe FacetsHelper do
112
113
  end
113
114
 
114
115
  describe "render_facet_partials" do
115
- let(:a) { double(:items => [1, 2]) }
116
- let(:b) { double(:items => ['b', 'c']) }
116
+ let(:a) { double(items: [1, 2]) }
117
+ let(:b) { double(items: %w[b c]) }
117
118
 
118
119
  it "tries to render all provided facets" do
119
- empty = double(:items => [])
120
+ empty = double(items: [])
120
121
  fields = [a, b, empty]
121
122
  expect(helper).to receive(:render_facet_limit).with(a, {})
122
123
  expect(helper).to receive(:render_facet_limit).with(b, {})
@@ -136,64 +137,65 @@ describe FacetsHelper do
136
137
  let(:blacklight_config) do
137
138
  Blacklight::Configuration.new do |config|
138
139
  config.add_facet_field 'basic_field'
139
- config.add_facet_field 'pivot_facet_field', :pivot => ['a', 'b']
140
- config.add_facet_field 'my_pivot_facet_field_with_custom_partial', :partial => 'custom_facet_partial', :pivot => ['a', 'b']
141
- config.add_facet_field 'my_facet_field_with_custom_partial', :partial => 'custom_facet_partial'
140
+ config.add_facet_field 'pivot_facet_field', pivot: %w[a b]
141
+ config.add_facet_field 'my_pivot_facet_field_with_custom_partial', partial: 'custom_facet_partial', pivot: %w[a b]
142
+ config.add_facet_field 'my_facet_field_with_custom_partial', partial: 'custom_facet_partial'
142
143
  end
143
144
  end
144
- let(:mock_custom_facet) { double(:name => 'my_facet_field_with_custom_partial', :items => [1, 2, 3]) }
145
+ let(:mock_custom_facet) { double(name: 'my_facet_field_with_custom_partial', items: [1, 2, 3]) }
145
146
 
146
147
  it "sets basic local variables" do
147
- mock_facet = double(:name => 'basic_field', :items => [1, 2, 3])
148
- expect(helper).to receive(:render).with(hash_including(:partial => 'facet_limit',
149
- :locals => {
150
- :solr_field => 'basic_field',
151
- :field_name => 'basic_field',
152
- :facet_field => helper.blacklight_config.facet_fields['basic_field'],
153
- :display_facet => mock_facet }
154
- ))
148
+ mock_facet = double(name: 'basic_field', items: [1, 2, 3])
149
+ expect(helper).to receive(:render).with(hash_including(partial: 'facet_limit',
150
+ locals: {
151
+ field_name: 'basic_field',
152
+ facet_field: helper.blacklight_config.facet_fields['basic_field'],
153
+ display_facet: mock_facet
154
+ }))
155
155
  helper.render_facet_limit(mock_facet)
156
156
  end
157
157
 
158
158
  it "renders a facet _not_ declared in the configuration" do
159
- mock_facet = double(:name => 'asdf', :items => [1, 2, 3])
160
- expect(helper).to receive(:render).with(hash_including(:partial => 'facet_limit'))
159
+ mock_facet = double(name: 'asdf', items: [1, 2, 3])
160
+ expect(helper).to receive(:render).with(hash_including(partial: 'facet_limit'))
161
161
  helper.render_facet_limit(mock_facet)
162
162
  end
163
163
 
164
164
  it "gets the partial name from the configuration" do
165
- expect(helper).to receive(:render).with(hash_including(:partial => 'custom_facet_partial'))
165
+ expect(helper).to receive(:render).with(hash_including(partial: 'custom_facet_partial'))
166
166
  helper.render_facet_limit(mock_custom_facet)
167
167
  end
168
168
 
169
169
  it "uses a partial layout for rendering the facet frame" do
170
- expect(helper).to receive(:render).with(hash_including(:layout => 'facet_layout'))
170
+ expect(helper).to receive(:render).with(hash_including(layout: 'facet_layout'))
171
171
  helper.render_facet_limit(mock_custom_facet)
172
172
  end
173
173
 
174
174
  it "allows the caller to opt-out of facet layouts" do
175
- expect(helper).to receive(:render).with(hash_including(:layout => nil))
176
- helper.render_facet_limit(mock_custom_facet, :layout => nil)
175
+ expect(helper).to receive(:render).with(hash_including(layout: nil))
176
+ helper.render_facet_limit(mock_custom_facet, layout: nil)
177
177
  end
178
178
 
179
179
  it "renders the facet_pivot partial for pivot facets" do
180
- mock_facet = double(:name => 'pivot_facet_field', :items => [1, 2, 3])
181
- expect(helper).to receive(:render).with(hash_including(:partial => 'facet_pivot'))
180
+ mock_facet = double(name: 'pivot_facet_field', items: [1, 2, 3])
181
+ expect(helper).to receive(:render).with(hash_including(partial: 'facet_pivot'))
182
182
  helper.render_facet_limit(mock_facet)
183
183
  end
184
184
 
185
185
  it "lets you override the rendered partial for pivot facets" do
186
- mock_facet = double(:name => 'my_pivot_facet_field_with_custom_partial', :items => [1, 2, 3])
187
- expect(helper).to receive(:render).with(hash_including(:partial => 'custom_facet_partial'))
186
+ mock_facet = double(name: 'my_pivot_facet_field_with_custom_partial', items: [1, 2, 3])
187
+ expect(helper).to receive(:render).with(hash_including(partial: 'custom_facet_partial'))
188
188
  helper.render_facet_limit(mock_facet)
189
189
  end
190
190
  end
191
191
 
192
192
  describe "render_facet_limit_list" do
193
+ subject { helper.render_facet_limit_list(paginator, 'type_solr_field') }
194
+
193
195
  let(:f1) { Blacklight::Solr::Response::Facets::FacetItem.new(hits: '792', value: 'Book') }
194
196
  let(:f2) { Blacklight::Solr::Response::Facets::FacetItem.new(hits: '65', value: 'Musical Score') }
195
197
  let(:paginator) { Blacklight::Solr::FacetPaginator.new([f1, f2], limit: 10) }
196
- subject { helper.render_facet_limit_list(paginator, 'type_solr_field') }
198
+
197
199
  before do
198
200
  allow(helper).to receive(:search_action_path) do |*args|
199
201
  search_catalog_path *args
@@ -202,38 +204,38 @@ describe FacetsHelper do
202
204
 
203
205
  it "draws a list of elements" do
204
206
  expect(subject).to have_selector 'li', count: 2
205
- expect(subject).to have_selector 'li:first-child a.facet_select', text: 'Book'
206
- expect(subject).to have_selector 'li:nth-child(2) a.facet_select', text: 'Musical Score'
207
+ expect(subject).to have_selector 'li:first-child a.facet-select', text: 'Book'
208
+ expect(subject).to have_selector 'li:nth-child(2) a.facet-select', text: 'Musical Score'
207
209
  end
208
210
 
209
211
  context "when one of the facet items is rendered as nil" do
210
212
  # An app may override render_facet_item to filter out some undesired facet items by returning nil.
211
- before { allow(helper).to receive(:render_facet_item).and_return('<a class="facet_select">Book</a>'.html_safe, nil) }
213
+ before { allow(helper).to receive(:render_facet_item).and_return('<a class="facet-select">Book</a>'.html_safe, nil) }
212
214
 
213
215
  it "draws a list of elements" do
214
216
  expect(subject).to have_selector 'li', count: 1
215
- expect(subject).to have_selector 'li:first-child a.facet_select', text: 'Book'
217
+ expect(subject).to have_selector 'li:first-child a.facet-select', text: 'Book'
216
218
  end
217
219
  end
218
220
  end
219
221
 
220
222
  describe "facet_field_in_params?" do
221
223
  it "checks if the facet field is selected in the user params" do
222
- allow(helper).to receive_messages(:params => { :f => { "some-field" => ["x"]}})
223
- expect(helper.facet_field_in_params?("some-field")).to be_truthy
224
- expect(helper.facet_field_in_params?("other-field")).to_not be true
224
+ allow(helper).to receive_messages(params: { f: { "some-field" => ["x"] } })
225
+ expect(helper).to be_facet_field_in_params("some-field")
226
+ expect(helper.facet_field_in_params?("other-field")).not_to be true
225
227
  end
226
228
  end
227
229
 
228
230
  describe "facet_params" do
229
231
  it "extracts the facet parameters for a field" do
230
- allow(helper).to receive_messages(params: { f: { "some-field" => ["x"] }})
232
+ allow(helper).to receive_messages(params: { f: { "some-field" => ["x"] } })
231
233
  expect(helper.facet_params("some-field")).to match_array ["x"]
232
234
  end
233
235
 
234
236
  it "uses the blacklight key to extract the right fields" do
235
237
  blacklight_config.add_facet_field "some-key", field: "some-field"
236
- allow(helper).to receive_messages(params: { f: { "some-key" => ["x"] }})
238
+ allow(helper).to receive_messages(params: { f: { "some-key" => ["x"] } })
237
239
  expect(helper.facet_params("some-key")).to match_array ["x"]
238
240
  expect(helper.facet_params("some-field")).to match_array ["x"]
239
241
  end
@@ -265,10 +267,11 @@ describe FacetsHelper do
265
267
  end
266
268
 
267
269
  describe "render_facet_value" do
268
- let(:item) { double(:value => 'A', :hits => 10) }
270
+ let(:item) { double(value: 'A', hits: 10) }
269
271
  let(:search_state) { double(add_facet_params_and_redirect: { controller: 'catalog' }) }
272
+
270
273
  before do
271
- allow(helper).to receive(:facet_configuration_for_field).with('simple_field').and_return(double(:query => nil, :date => nil, :helper_method => nil, :single => false, :url_method => nil))
274
+ allow(helper).to receive(:facet_configuration_for_field).with('simple_field').and_return(double(query: nil, date: nil, helper_method: nil, single: false, url_method: nil))
272
275
  allow(helper).to receive(:facet_display_value).and_return('Z')
273
276
  allow(helper).to receive(:search_state).and_return(search_state)
274
277
  allow(helper).to receive(:search_action_path) do |*args|
@@ -277,7 +280,7 @@ describe FacetsHelper do
277
280
  end
278
281
 
279
282
  describe "simple case" do
280
- let(:expected_html) { '<span class="facet-label"><a class="facet_select" href="/catalog">Z</a></span><span class="facet-count">10</span>' }
283
+ let(:expected_html) { '<span class="facet-label"><a class="facet-select" href="/catalog">Z</a></span><span class="facet-count">10</span>' }
281
284
 
282
285
  it "uses facet_display_value" do
283
286
  result = helper.render_facet_value('simple_field', item)
@@ -286,9 +289,10 @@ describe FacetsHelper do
286
289
  end
287
290
 
288
291
  describe "when :url_method is set" do
289
- let(:expected_html) { '<span class="facet-label"><a class="facet_select" href="/blabla">Z</a></span><span class="facet-count">10</span>' }
292
+ let(:expected_html) { '<span class="facet-label"><a class="facet-select" href="/blabla">Z</a></span><span class="facet-count">10</span>' }
293
+
290
294
  it "uses that method" do
291
- allow(helper).to receive(:facet_configuration_for_field).with('simple_field').and_return(double(:query => nil, :date => nil, :helper_method => nil, :single => false, :url_method => :test_method))
295
+ allow(helper).to receive(:facet_configuration_for_field).with('simple_field').and_return(double(query: nil, date: nil, helper_method: nil, single: false, url_method: :test_method))
292
296
  allow(helper).to receive(:test_method).with('simple_field', item).and_return('/blabla')
293
297
  result = helper.render_facet_value('simple_field', item)
294
298
  expect(result).to be_equivalent_to(expected_html).respecting_element_order
@@ -297,8 +301,9 @@ describe FacetsHelper do
297
301
 
298
302
  describe "when :suppress_link is set" do
299
303
  let(:expected_html) { '<span class="facet-label">Z</span><span class="facet-count">10</span>' }
304
+
300
305
  it "suppresses the link" do
301
- result = helper.render_facet_value('simple_field', item, :suppress_link => true)
306
+ result = helper.render_facet_value('simple_field', item, suppress_link: true)
302
307
  expect(result).to be_equivalent_to(expected_html).respecting_element_order
303
308
  end
304
309
  end
@@ -306,18 +311,18 @@ describe FacetsHelper do
306
311
 
307
312
  describe "#facet_display_value" do
308
313
  it "justs be the facet value for an ordinary facet" do
309
- allow(helper).to receive(:facet_configuration_for_field).with('simple_field').and_return(double(:query => nil, :date => nil, :helper_method => nil, :url_method => nil))
314
+ allow(helper).to receive(:facet_configuration_for_field).with('simple_field').and_return(double(query: nil, date: nil, helper_method: nil, url_method: nil))
310
315
  expect(helper.facet_display_value('simple_field', 'asdf')).to eq 'asdf'
311
316
  end
312
317
 
313
318
  it "allows you to pass in a :helper_method argument to the configuration" do
314
- allow(helper).to receive(:facet_configuration_for_field).with('helper_field').and_return(double(:query => nil, :date => nil, :url_method => nil, :helper_method => :my_facet_value_renderer))
319
+ allow(helper).to receive(:facet_configuration_for_field).with('helper_field').and_return(double(query: nil, date: nil, url_method: nil, helper_method: :my_facet_value_renderer))
315
320
  allow(helper).to receive(:my_facet_value_renderer).with('qwerty').and_return('abc')
316
321
  expect(helper.facet_display_value('helper_field', 'qwerty')).to eq 'abc'
317
322
  end
318
323
 
319
324
  it "extracts the configuration label for a query facet" do
320
- allow(helper).to receive(:facet_configuration_for_field).with('query_facet').and_return(double(:query => { 'query_key' => { :label => 'XYZ'}}, :date => nil, :helper_method => nil, :url_method => nil))
325
+ allow(helper).to receive(:facet_configuration_for_field).with('query_facet').and_return(double(query: { 'query_key' => { label: 'XYZ' } }, date: nil, helper_method: nil, url_method: nil))
321
326
  expect(helper.facet_display_value('query_facet', 'query_key')).to eq 'XYZ'
322
327
  end
323
328
 
@@ -327,14 +332,14 @@ describe FacetsHelper do
327
332
  end
328
333
 
329
334
  it "localizes the label for date-type facets with the supplied localization options" do
330
- allow(helper).to receive(:facet_configuration_for_field).with('date_facet').and_return(double('date' => { :format => :short }, :query => nil, :helper_method => nil, :url_method => nil))
335
+ allow(helper).to receive(:facet_configuration_for_field).with('date_facet').and_return(double('date' => { format: :short }, :query => nil, :helper_method => nil, :url_method => nil))
331
336
  expect(helper.facet_display_value('date_facet', '2012-01-01')).to eq '01 Jan 00:00'
332
337
  end
333
338
  end
334
339
 
335
340
  describe "#facet_field_id" do
336
341
  it "is the parameterized version of the facet field" do
337
- expect(helper.facet_field_id double(key: 'some field')).to eq "facet-some-field"
342
+ expect(helper.facet_field_id(double(key: 'some field'))).to eq "facet-some-field"
338
343
  end
339
344
  end
340
345
  end
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe Blacklight::HashAsHiddenFieldsHelperBehavior do
3
+ RSpec.describe Blacklight::HashAsHiddenFieldsHelperBehavior do
4
4
  let(:params) do
5
5
  { q: "query",
6
6
  search_field: "search_field",
7
7
  per_page: 10,
8
8
  page: 5,
9
9
  extra_arbitrary_key: "arbitrary_value",
10
- f: { field1: %w(a b), field2: ["z"] } }
10
+ f: { field1: %w[a b], field2: ["z"] } }
11
11
  end
12
12
  let(:generated) { helper.render_hash_as_hidden_fields(params) }
13
13
 
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Blacklight::IconHelperBehavior do
4
+ describe '#blacklight_icon' do
5
+ it 'wraps the svg in a span with classes' do
6
+ expect(helper.blacklight_icon(:search))
7
+ .to have_css 'span.blacklight-icons svg'
8
+ end
9
+ end
10
+ end
@@ -1,31 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe LayoutHelper do
3
+ RSpec.describe Blacklight::LayoutHelperBehavior do
4
4
  describe '#show_content_classes' do
5
5
  it 'returns a string of classes' do
6
6
  expect(helper.show_content_classes).to be_an String
7
- expect(helper.show_content_classes).to eq 'col-md-9 col-sm-8 show-document'
7
+ expect(helper.show_content_classes).to eq 'col-md-9 show-document'
8
8
  end
9
9
  end
10
10
 
11
11
  describe '#show_sidebar_classes' do
12
12
  it 'returns a string of classes' do
13
13
  expect(helper.show_sidebar_classes).to be_an String
14
- expect(helper.show_sidebar_classes).to eq 'col-md-3 col-sm-4'
14
+ expect(helper.show_sidebar_classes).to eq 'page-sidebar col-md-3'
15
15
  end
16
16
  end
17
17
 
18
18
  describe '#main_content_classes' do
19
19
  it 'returns a string of classes' do
20
20
  expect(helper.main_content_classes).to be_an String
21
- expect(helper.main_content_classes).to eq 'col-md-9 col-sm-8'
21
+ expect(helper.main_content_classes).to eq 'col-md-9'
22
22
  end
23
23
  end
24
24
 
25
25
  describe '#sidebar_classes' do
26
26
  it 'returns a string of classes' do
27
27
  expect(helper.sidebar_classes).to be_an String
28
- expect(helper.sidebar_classes).to eq 'col-md-3 col-sm-4'
28
+ expect(helper.sidebar_classes).to eq 'page-sidebar col-md-3'
29
29
  end
30
30
  end
31
31
 
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe RenderConstraintsHelper do
4
-
3
+ RSpec.describe Blacklight::RenderConstraintsHelperBehavior do
5
4
  let(:config) do
6
5
  Blacklight::Configuration.new do |config|
7
6
  config.add_facet_field 'type'
@@ -17,9 +16,10 @@ describe RenderConstraintsHelper do
17
16
  end
18
17
 
19
18
  describe '#render_constraints_query' do
19
+ subject { helper.render_constraints_query(params) }
20
+
20
21
  let(:my_engine) { double("Engine") }
21
22
  let(:params) { ActionController::Parameters.new(q: 'foobar', f: { type: 'journal' }) }
22
- subject { helper.render_constraints_query(params) }
23
23
 
24
24
  it "has a link relative to the current url" do
25
25
  expect(subject).to have_selector "a[href='/?f%5Btype%5D=journal']"
@@ -35,6 +35,7 @@ describe RenderConstraintsHelper do
35
35
 
36
36
  context "with a route_set" do
37
37
  let(:params) { ActionController::Parameters.new(q: 'foobar', f: { type: 'journal' }, route_set: my_engine) }
38
+
38
39
  it "accepts an optional route set" do
39
40
  expect(my_engine).to receive(:url_for).and_return('/?f%5Btype%5D=journal')
40
41
  expect(subject).to have_selector "a[href='/?f%5Btype%5D=journal']"
@@ -43,18 +44,19 @@ describe RenderConstraintsHelper do
43
44
  end
44
45
 
45
46
  describe '#render_filter_element' do
47
+ subject { helper.render_filter_element('type', ['journal'], path) }
48
+
46
49
  before do
47
50
  allow(helper).to receive(:blacklight_config).and_return(config)
48
51
  expect(helper).to receive(:facet_field_label).with('type').and_return("Item Type")
49
52
  end
50
- subject { helper.render_filter_element('type', ['journal'], path) }
51
53
 
52
54
  let(:params) { ActionController::Parameters.new q: 'biz' }
53
55
  let(:path) { Blacklight::SearchState.new(params, config, controller) }
54
56
 
55
57
  it "has a link relative to the current url" do
56
58
  expect(subject).to have_link "Remove constraint Item Type: journal", href: "/catalog?q=biz"
57
- expect(subject).to have_selector ".filterName", text: 'Item Type'
59
+ expect(subject).to have_selector ".filter-name", text: 'Item Type'
58
60
  end
59
61
 
60
62
  context 'with string values' do
@@ -67,12 +69,14 @@ describe RenderConstraintsHelper do
67
69
  end
68
70
 
69
71
  describe "#render_constraints_filters" do
72
+ subject { helper.render_constraints_filters(params) }
73
+
70
74
  let(:params) { ActionController::Parameters.new f: { 'type' => [''] } }
75
+
71
76
  before do
72
77
  allow(helper).to receive(:blacklight_config).and_return(config)
73
78
  allow(controller).to receive(:search_state_class).and_return(Blacklight::SearchState)
74
79
  end
75
- subject { helper.render_constraints_filters(params) }
76
80
 
77
81
  it "renders nothing for empty facet limit param" do
78
82
  expect(subject).to be_blank
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Blacklight::RenderPartialsHelperBehavior do
4
+ describe "#type_field_to_partial_name" do
5
+ subject { helper.send(:type_field_to_partial_name, document, value) }
6
+
7
+ let(:document) { double }
8
+
9
+ context "with default value" do
10
+ let(:value) { 'default' }
11
+
12
+ it { is_expected.to eq 'default' }
13
+ end
14
+
15
+ context "with spaces" do
16
+ let(:value) { 'one two three' }
17
+
18
+ it { is_expected.to eq 'one_two_three' }
19
+ end
20
+
21
+ context "with hyphens" do
22
+ let(:value) { 'one-two-three' }
23
+
24
+ it { is_expected.to eq 'one_two_three' }
25
+ end
26
+
27
+ context "an array" do
28
+ let(:value) { %w[one two three] }
29
+
30
+ it { is_expected.to eq 'one_two_three' }
31
+ end
32
+ end
33
+
34
+ describe "#render_document_partials" do
35
+ let(:doc) { double }
36
+
37
+ before do
38
+ allow(helper).to receive_messages(document_partial_path_templates: [])
39
+ allow(helper).to receive_messages(document_index_view_type: 'index_header')
40
+ end
41
+
42
+ it "gets the document format from document_partial_name" do
43
+ allow(helper).to receive(:document_partial_name).with(doc, :xyz)
44
+ helper.render_document_partial(doc, :xyz)
45
+ end
46
+ end
47
+
48
+ describe "#document_partial_name" do
49
+ let(:blacklight_config) { Blacklight::Configuration.new }
50
+
51
+ before do
52
+ allow(helper).to receive_messages(blacklight_config: blacklight_config)
53
+ end
54
+
55
+ context "with a solr document with empty fields" do
56
+ let(:document) { SolrDocument.new }
57
+
58
+ it "is the default value" do
59
+ expect(helper.document_partial_name(document)).to eq 'default'
60
+ end
61
+ end
62
+
63
+ context "with a solr document with the display type field set" do
64
+ let(:document) { SolrDocument.new 'my_field' => 'xyz' }
65
+
66
+ before do
67
+ blacklight_config.show.display_type_field = 'my_field'
68
+ end
69
+
70
+ it "uses the value in the configured display type field" do
71
+ expect(helper.document_partial_name(document)).to eq 'xyz'
72
+ end
73
+ it "uses the value in the configured display type field if the action-specific field is empty" do
74
+ expect(helper.document_partial_name(document, :some_action)).to eq 'xyz'
75
+ end
76
+ end
77
+
78
+ context "with a solr doucment with an action-specific field set" do
79
+ let(:document) { SolrDocument.new 'my_field' => 'xyz', 'other_field' => 'abc' }
80
+
81
+ before do
82
+ blacklight_config.show.media_display_type_field = 'my_field'
83
+ blacklight_config.show.metadata_display_type_field = 'other_field'
84
+ end
85
+
86
+ it "uses the value in the action-specific fields" do
87
+ expect(helper.document_partial_name(document, :media)).to eq 'xyz'
88
+ expect(helper.document_partial_name(document, :metadata)).to eq 'abc'
89
+ end
90
+ end
91
+ end
92
+ end