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,21 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe SearchHistoryConstraintsHelper do
4
-
3
+ RSpec.describe Blacklight::SearchHistoryConstraintsHelperBehavior do
5
4
  before(:all) do
6
5
  @config = Blacklight::Configuration.new do |config|
7
- config.add_search_field 'default_search_field', :label => 'Default'
6
+ config.add_search_field 'default_search_field', label: 'Default'
8
7
 
9
- config.add_facet_field 'some_facet', :label => 'Some'
10
- config.add_facet_field 'other_facet', :label => 'Other'
8
+ config.add_facet_field 'some_facet', label: 'Some'
9
+ config.add_facet_field 'other_facet', label: 'Other'
11
10
  config.add_facet_field 'i18n_facet'
12
11
 
13
- I18n.backend.store_translations(:en, blacklight: {search: {fields: {facet: {i18n_facet: 'English facet label'}}}})
14
- I18n.backend.store_translations(:de, blacklight: {search: {fields: {facet: {i18n_facet: 'German facet label'}}}})
12
+ I18n.backend.store_translations(:en, blacklight: { search: { fields: { facet: { i18n_facet: 'English facet label' } } } })
13
+ I18n.backend.store_translations(:de, blacklight: { search: { fields: { facet: { i18n_facet: 'German facet label' } } } })
15
14
  end
16
15
  end
17
16
 
18
- before(:each) do
17
+ before do
19
18
  allow(helper).to receive(:blacklight_config).and_return(@config)
20
19
  end
21
20
 
@@ -23,32 +22,32 @@ describe SearchHistoryConstraintsHelper do
23
22
  describe "render_search_to_s_element" do
24
23
  it "renders basic element" do
25
24
  response = helper.render_search_to_s_element("key", "value")
26
- expect(response).to have_selector("span.constraint") do |span|
27
- expect(span).to have_selector("span.filterName", :content => "key:")
28
- expect(span).to have_selector("span.filterValue", :content => "value")
25
+ expect(response).to have_selector("span.constraint") do |span|
26
+ expect(span).to have_selector("span.filter-name", content: "key:")
27
+ expect(span).to have_selector("span.filter-value", content: "value")
29
28
  end
30
29
  expect(response).to be_html_safe
31
30
  end
32
31
  it "escapes them that need escaping" do
33
32
  response = helper.render_search_to_s_element("key>", "value>")
34
- expect(response).to have_selector("span.constraint") do |span|
35
- expect(span).to have_selector("span.filterName") do |s2|
33
+ expect(response).to have_selector("span.constraint") do |span|
34
+ expect(span).to have_selector("span.filter-name") do |s2|
36
35
  # Note: nokogiri's gettext will unescape the inner html
37
- # which seems to be what rspecs "contains" method calls on
36
+ # which seems to be what rspecs "contains" method calls on
38
37
  # text nodes - thus the to_s inserted below.
39
38
  expect(s2).to match(/key>:/)
40
39
  end
41
- expect(span).to have_selector("span.filterValue") do |s3|
40
+ expect(span).to have_selector("span.filter-value") do |s3|
42
41
  expect(s3).to match(/value>/)
43
42
  end
44
43
  end
45
44
  expect(response).to be_html_safe
46
45
  end
47
46
  it "does not escape with options set thus" do
48
- response = helper.render_search_to_s_element("key>", "value>", :escape_key => false, :escape_value => false)
47
+ response = helper.render_search_to_s_element("key>", "value>", escape_key: false, escape_value: false)
49
48
  expect(response).to have_selector("span.constraint") do |span|
50
- expect(span).to have_selector("span.filterName", :content => "key>:")
51
- expect(span).to have_selector("span.filterValue", :content => "value>")
49
+ expect(span).to have_selector("span.filter-name", content: "key>:")
50
+ expect(span).to have_selector("span.filter-value", content: "value>")
52
51
  end
53
52
  expect(response).to be_html_safe
54
53
  end
@@ -56,30 +55,31 @@ describe SearchHistoryConstraintsHelper do
56
55
 
57
56
  describe "render_search_to_s" do
58
57
  before do
59
- @params = {:q => "history", :f => {"some_facet" => ["value1", "value1"], "other_facet" => ["other1"]}}
58
+ @params = { q: "history", f: { "some_facet" => %w[value1 value1], "other_facet" => ["other1"] } }
60
59
  end
60
+
61
61
  it "calls lesser methods" do
62
62
  allow(helper).to receive(:blacklight_config).and_return(@config)
63
- allow(helper).to receive(:default_search_field).and_return(Blacklight::Configuration::SearchField.new(:key => 'default_search_field', :display_label => 'Default'))
63
+ allow(helper).to receive(:default_search_field).and_return(Blacklight::Configuration::SearchField.new(key: 'default_search_field', display_label: 'Default'))
64
64
  allow(helper).to receive(:label_for_search_field).with(nil).and_return('')
65
65
  # API hooks expect this to be so
66
66
  response = helper.render_search_to_s(@params)
67
67
 
68
- expect(response).to include( helper.render_search_to_s_q(@params))
69
- expect(response).to include( helper.render_search_to_s_filters(@params))
68
+ expect(response).to include(helper.render_search_to_s_q(@params))
69
+ expect(response).to include(helper.render_search_to_s_filters(@params))
70
70
  expect(response).to be_html_safe
71
71
  end
72
72
  end
73
-
73
+
74
74
  describe "render_search_to_s_filters" do
75
75
  it "renders a constraint for a selected facet in the config" do
76
- response = helper.render_search_to_s_filters(:f => {"some_facet" => ["value1", "value2"]})
77
- expect(response).to eq("<span class=\"constraint\"><span class=\"filterName\">Some:</span><span class=\"filterValues\"><span class=\"filterValue\">value1</span><span class=\"filterSeparator\"> and </span><span class=\"filterValue\">value2</span></span></span>")
76
+ response = helper.render_search_to_s_filters(f: { "some_facet" => %w[value1 value2] })
77
+ expect(response).to eq("<span class=\"constraint\"><span class=\"filter-name\">Some:</span><span class=\"filter-values\"><span class=\"filter-value\">value1</span><span class=\"filter-separator\"> and </span><span class=\"filter-value\">value2</span></span></span>")
78
78
  end
79
79
 
80
80
  it "renders a constraint for a selected facet not in the config" do
81
- response = helper.render_search_to_s_filters(:f => {"undefined_facet" => ["value1", "value2"]})
82
- expect(response).to eq("<span class=\"constraint\"><span class=\"filterName\">#{'undefined_facet'.humanize}:</span><span class=\"filterValues\"><span class=\"filterValue\">value1</span><span class=\"filterSeparator\"> and </span><span class=\"filterValue\">value2</span></span></span>")
81
+ response = helper.render_search_to_s_filters(f: { "undefined_facet" => %w[value1 value2] })
82
+ expect(response).to eq("<span class=\"constraint\"><span class=\"filter-name\">#{'undefined_facet'.titleize}:</span><span class=\"filter-values\"><span class=\"filter-value\">value1</span><span class=\"filter-separator\"> and </span><span class=\"filter-value\">value2</span></span></span>")
83
83
  end
84
84
 
85
85
  context 'with I18n translations for selected facet' do
@@ -92,14 +92,13 @@ describe SearchHistoryConstraintsHelper do
92
92
  end
93
93
 
94
94
  it 'renders the correct I18n label for a selected facet with I18n translations' do
95
- {en: 'English facet label', de: 'German facet label'}.each do |locale, label|
95
+ { en: 'English facet label', de: 'German facet label' }.each do |locale, label|
96
96
  I18n.locale = locale
97
- response = helper.render_search_to_s_filters(f: {'i18n_facet' => ['value1', 'value2']})
97
+ response = helper.render_search_to_s_filters(f: { 'i18n_facet' => %w[value1 value2] })
98
98
  expect(response).to include(label)
99
99
  end
100
100
  end
101
101
  end
102
102
  end
103
103
  end
104
-
105
104
  end
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe SuggestHelper do
3
+ RSpec.describe Blacklight::SuggestHelperBehavior do
4
4
  before do
5
5
  allow(helper).to receive(:blacklight_config).and_return(blacklight_config)
6
+ expect(Deprecation).to receive(:warn)
6
7
  end
8
+
7
9
  describe '#autocomplete_enabled?' do
8
10
  describe 'with autocomplete config' do
9
11
  let(:blacklight_config) do
@@ -12,10 +14,12 @@ describe SuggestHelper do
12
14
  config.autocomplete_path = 'suggest'
13
15
  end
14
16
  end
17
+
15
18
  it 'is enabled' do
16
19
  expect(helper.autocomplete_enabled?).to be true
17
20
  end
18
21
  end
22
+
19
23
  describe 'without disabled config' do
20
24
  let(:blacklight_config) do
21
25
  Blacklight::Configuration.new.configure do |config|
@@ -23,19 +27,22 @@ describe SuggestHelper do
23
27
  config.autocomplete_path = 'suggest'
24
28
  end
25
29
  end
30
+
26
31
  it 'is disabled' do
27
32
  expect(helper.autocomplete_enabled?).to be false
28
33
  end
29
34
  end
35
+
30
36
  describe 'without path config' do
31
37
  let(:blacklight_config) do
32
38
  Blacklight::Configuration.new.configure do |config|
33
39
  config.autocomplete_enabled = true
34
40
  end
35
41
  end
42
+
36
43
  it 'is disabled' do
37
44
  expect(helper.autocomplete_enabled?).to be false
38
45
  end
39
46
  end
40
47
  end
41
- end
48
+ end
@@ -1,10 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe BlacklightUrlHelper do
4
-
3
+ RSpec.describe Blacklight::UrlHelperBehavior do
5
4
  let(:blacklight_config) do
6
5
  Blacklight::Configuration.new.configure do |config|
7
- config.index.title_field = 'title_display'
6
+ config.index.title_field = 'title_tsim'
8
7
  config.index.display_type_field = 'format'
9
8
  end
10
9
  end
@@ -37,7 +36,7 @@ describe BlacklightUrlHelper do
37
36
 
38
37
  it "allows for custom show routes" do
39
38
  helper.blacklight_config.show.route = { controller: 'catalog' }
40
- expect(helper.url_for_document(doc)).to eq({controller: 'catalog', action: :show, id: doc})
39
+ expect(helper.url_for_document(doc)).to eq(controller: 'catalog', action: :show, id: doc)
41
40
  end
42
41
 
43
42
  context "within bookmarks" do
@@ -53,7 +52,7 @@ describe BlacklightUrlHelper do
53
52
 
54
53
  before do
55
54
  helper.blacklight_config.show.route = { controller: :current }
56
- allow(helper).to receive(:params).and_return(parameter_class.new controller: 'alternate')
55
+ allow(helper).to receive(:params).and_return(parameter_class.new(controller: 'alternate'))
57
56
  end
58
57
 
59
58
  it "supports the :current controller configuration" do
@@ -70,27 +69,26 @@ describe BlacklightUrlHelper do
70
69
  end
71
70
 
72
71
  describe "link_back_to_catalog" do
73
- let(:query_params) {{:q => "query", :f => "facets", :controller=>'catalog'}}
74
- let(:bookmarks_query_params) {{ :controller=>'bookmarks'}}
72
+ let(:query_params) { { q: "query", f: "facets", controller: 'catalog' } }
73
+ let(:bookmarks_query_params) { { controller: 'bookmarks' } }
75
74
 
76
75
  it "builds a link tag to catalog using session[:search] for query params" do
77
- allow(helper).to receive(:current_search_session).and_return double(:query_params => query_params)
76
+ allow(helper).to receive(:current_search_session).and_return double(query_params: query_params)
78
77
  tag = helper.link_back_to_catalog
79
78
  expect(tag).to match /q=query/
80
79
  expect(tag).to match /f=facets/
81
- expect(tag).to_not match /page=/
82
- expect(tag).to_not match /per_page=/
80
+ expect(tag).not_to match /page=/
81
+ expect(tag).not_to match /per_page=/
83
82
  end
84
83
 
85
84
  it "builds a link tag to bookmarks using session[:search] for query params" do
86
- allow(helper).to receive(:current_search_session).and_return double(:query_params => bookmarks_query_params)
85
+ allow(helper).to receive(:current_search_session).and_return double(query_params: bookmarks_query_params)
87
86
  tag = helper.link_back_to_catalog
88
87
  expect(tag).to match /Back to Bookmarks/
89
- expect(tag).to match /\/bookmarks/
88
+ expect(tag).to match %r{/bookmarks}
90
89
  end
91
90
 
92
91
  context "with a search context" do
93
-
94
92
  it "uses the current search session counter and per page information to construct the appropriate pagination context" do
95
93
  allow(helper).to receive_messages(current_search_session: double(query_params: query_params))
96
94
  allow(helper).to receive_messages(search_session: { 'per_page' => 15, 'counter' => 31 })
@@ -104,38 +102,35 @@ describe BlacklightUrlHelper do
104
102
  allow(helper).to receive_messages(search_session: { 'per_page' => 10, 'counter' => 31 })
105
103
  tag = helper.link_back_to_catalog
106
104
  expect(tag).to match /page=4/
107
- expect(tag).to_not match /per_page=/
105
+ expect(tag).not_to match /per_page=/
108
106
  end
109
107
  end
110
108
 
111
109
  context "without current search context" do
110
+ subject { helper.link_back_to_catalog }
111
+
112
112
  before do
113
- if Rails.version >= '5.0.0'
114
- controller.request.assign_parameters(Rails.application.routes, 'catalog', 'show', { id: '123' }, '/catalog/123', [:controller, :action, :id])
115
- else
116
- controller.request.assign_parameters(Rails.application.routes, 'catalog', 'show', id: '123')
117
- end
113
+ controller.request.assign_parameters(Rails.application.routes, 'catalog', 'show', { id: '123' }, '/catalog/123', [:controller, :action, :id])
118
114
  allow(helper).to receive_messages(current_search_session: nil)
119
115
  end
120
116
 
121
- subject { helper.link_back_to_catalog }
122
-
123
117
  it "links to the catalog" do
124
118
  expect(subject).to eq '<a href="/catalog">Back to Search</a>'
125
119
  end
126
120
  end
127
121
 
128
122
  context "when an alternate scope is passed in" do
129
- let(:my_engine) { double("Engine") }
130
123
  subject(:tag) { helper.link_back_to_catalog(route_set: my_engine) }
131
124
 
125
+ let(:my_engine) { double("Engine") }
126
+
132
127
  before do
133
- allow(helper).to receive(:current_search_session).and_return double(:query_params => query_params)
128
+ allow(helper).to receive(:current_search_session).and_return double(query_params: query_params)
134
129
  end
135
130
 
136
131
  it "calls url_for on the engine scope" do
137
132
  expect(my_engine).to receive(:url_for)
138
- .with(q:"query", f: "facets", controller: "catalog")
133
+ .with(q: "query", f: "facets", controller: "catalog")
139
134
  .and_return('link-url')
140
135
  expect(tag).to match /Back to Search/
141
136
  expect(tag).to match /link-url/
@@ -146,6 +141,7 @@ describe BlacklightUrlHelper do
146
141
  describe "link_to_previous_document" do
147
142
  context "when the argument is nil" do
148
143
  subject { helper.link_to_previous_document(nil) }
144
+
149
145
  it { is_expected.to eq '<span class="previous">&laquo; Previous</span>' }
150
146
  end
151
147
  end
@@ -156,7 +152,7 @@ describe BlacklightUrlHelper do
156
152
  allow(helper).to receive_messages(params: parameter_class.new)
157
153
  tag = helper.link_to_query(query)
158
154
  expect(tag).to match /q=#{query}/
159
- expect(tag).to match />#{query}<\/a>/
155
+ expect(tag).to match %r{>#{query}</a>}
160
156
  end
161
157
 
162
158
  it "builds a link tag to catalog using query string and other existing params" do
@@ -172,7 +168,7 @@ describe BlacklightUrlHelper do
172
168
  allow(helper).to receive_messages(params: parameter_class.new(page: "2", qt: "author_search"))
173
169
  tag = helper.link_to_query(query)
174
170
  expect(tag).to match /qt=author_search/
175
- expect(tag).to_not match /page/
171
+ expect(tag).not_to match /page/
176
172
  end
177
173
 
178
174
  it "is html_safe" do
@@ -185,47 +181,55 @@ describe BlacklightUrlHelper do
185
181
 
186
182
  describe "start_over_path" do
187
183
  it 'is the catalog path with the current view type' do
188
- allow(blacklight_config).to receive(:view) { { list: nil, abc: nil} }
189
- allow(helper).to receive_messages(:blacklight_config => blacklight_config)
190
- expect(helper.start_over_path(:view => 'abc')).to eq search_catalog_url(:view => 'abc')
184
+ allow(blacklight_config).to receive(:view).and_return(list: nil, abc: nil)
185
+ allow(helper).to receive_messages(blacklight_config: blacklight_config)
186
+ expect(helper.start_over_path(view: 'abc')).to eq search_catalog_url(view: 'abc')
191
187
  end
192
188
 
193
189
  it 'does not include the current view type if it is the default' do
194
- allow(blacklight_config).to receive(:view) { { list: nil, asdf: nil} }
195
- allow(helper).to receive_messages(:blacklight_config => blacklight_config)
196
- expect(helper.start_over_path(:view => 'list')).to eq search_catalog_url
190
+ allow(blacklight_config).to receive(:view).and_return(list: nil, asdf: nil)
191
+ allow(helper).to receive_messages(blacklight_config: blacklight_config)
192
+ expect(helper.start_over_path(view: 'list')).to eq search_catalog_url
197
193
  end
198
194
  end
199
195
 
200
196
  describe "link_to_document" do
201
- let(:title_display) { '654321' }
197
+ let(:title_tsim) { '654321' }
202
198
  let(:id) { '123456' }
203
- let(:data) { { 'id' => id, 'title_display' => [title_display] } }
199
+ let(:data) { { 'id' => id, 'title_tsim' => [title_tsim] } }
204
200
  let(:document) { SolrDocument.new(data) }
201
+
205
202
  before do
206
203
  allow(controller).to receive(:action_name).and_return('index')
204
+ allow(helper.main_app).to receive(:track_test_path).and_return('tracking url')
205
+ allow(helper.main_app).to receive(:respond_to?).with('track_test_path').and_return(true)
207
206
  end
208
207
 
209
208
  it "consists of the document title wrapped in a <a>" do
210
- expect(helper.link_to_document(document, :title_display)).to have_selector("a", :text => '654321', :count => 1)
209
+ expect(Deprecation).to receive(:warn)
210
+ expect(helper.link_to_document(document, :title_tsim)).to have_selector("a", text: '654321', count: 1)
211
211
  end
212
212
 
213
213
  it "accepts and returns a string label" do
214
- expect(helper.link_to_document(document, String.new('title_display'))).to have_selector("a", :text => 'title_display', :count => 1)
214
+ expect(helper.link_to_document(document, 'This is the title')).to have_selector("a", text: 'This is the title', count: 1)
215
215
  end
216
216
 
217
217
  it "accepts and returns a Proc" do
218
- expect(helper.link_to_document(document, Proc.new { |doc, opts| doc[:id] + ": " + doc.first(:title_display) })).to have_selector("a", :text => '123456: 654321', :count => 1)
218
+ expect(Deprecation).to receive(:warn).twice
219
+ expect(helper.link_to_document(document, proc { |doc, _opts| doc[:id] + ": " + doc.first(:title_tsim) })).to have_selector("a", text: '123456: 654321', count: 1)
219
220
  end
220
221
 
221
222
  context 'when label is missing' do
222
223
  let(:data) { { 'id' => id } }
224
+
223
225
  it "returns id" do
224
- expect(helper.link_to_document(document, :title_display)).to have_selector("a", :text => '123456', :count => 1)
226
+ expect(Deprecation).to receive(:warn)
227
+ expect(helper.link_to_document(document, :title_tsim)).to have_selector("a", text: '123456', count: 1)
225
228
  end
226
229
 
227
230
  it "is html safe" do
228
- expect(helper.link_to_document(document, :title_display)).to be_html_safe
231
+ expect(Deprecation).to receive(:warn)
232
+ expect(helper.link_to_document(document, :title_tsim)).to be_html_safe
229
233
  end
230
234
 
231
235
  it "passes on the title attribute to the link_to_with_data method" do
@@ -233,11 +237,12 @@ describe BlacklightUrlHelper do
233
237
  end
234
238
 
235
239
  it "doesn't add an erroneous title attribute if one isn't provided" do
236
- expect(helper.link_to_document(document, "Some crazy long label...")).to_not match(/title=/)
240
+ expect(helper.link_to_document(document, "Some crazy long label...")).not_to match(/title=/)
237
241
  end
238
242
 
239
243
  context "with an integer id" do
240
- let(:id) { 123456 }
244
+ let(:id) { 123_456 }
245
+
241
246
  it "works" do
242
247
  expect(helper.link_to_document(document)).to have_selector("a")
243
248
  end
@@ -245,31 +250,27 @@ describe BlacklightUrlHelper do
245
250
  end
246
251
 
247
252
  it "converts the counter parameter into a data- attribute" do
248
- allow(helper).to receive(:track_test_path).with(hash_including(id: have_attributes(id: '123456'), counter: 5)).and_return('tracking url')
249
-
250
- expect(helper.link_to_document(document, :title_display, counter: 5)).to include 'data-context-href="tracking url"'
253
+ expect(Deprecation).to receive(:warn)
254
+ expect(helper.link_to_document(document, :title_tsim, counter: 5)).to include 'data-context-href="tracking url"'
255
+ expect(helper.main_app).to have_received(:track_test_path).with(hash_including(id: have_attributes(id: '123456'), counter: 5))
251
256
  end
252
257
 
253
258
  it "includes the data- attributes from the options" do
254
- link = helper.link_to_document document, { data: { x: 1 } }
259
+ link = helper.link_to_document document, data: { x: 1 }
255
260
  expect(link).to have_selector '[data-x]'
256
261
  end
257
262
 
258
263
  it 'adds a controller-specific tracking attribute' do
259
- expect(helper).to receive(:track_test_path).and_return('/asdf')
260
- link = helper.link_to_document document, { data: { x: 1 } }
264
+ expect(helper.main_app).to receive(:track_test_path).and_return('/asdf')
265
+ link = helper.link_to_document document, data: { x: 1 }
261
266
 
262
267
  expect(link).to have_selector '[data-context-href="/asdf"]'
263
268
  end
264
-
265
- it 'adds a global tracking attribute' do
266
- link = helper.link_to_document document, { data: { x: 1 } }
267
- expect(link).to have_selector '[data-context-href="/catalog/123456/track"]'
268
- end
269
269
  end
270
270
 
271
271
  describe "link_to_previous_search" do
272
272
  let(:params) { {} }
273
+
273
274
  it "links to the given search parameters" do
274
275
  allow(helper).to receive(:render_search_to_s).with(params).and_return "link text"
275
276
  expect(helper.link_to_previous_search({})).to eq helper.link_to("link text", helper.search_action_path)
@@ -286,13 +287,14 @@ describe BlacklightUrlHelper do
286
287
 
287
288
  describe "#session_tracking_path" do
288
289
  let(:document) { SolrDocument.new(id: 1) }
290
+
289
291
  it "determines the correct route for the document class" do
290
- allow(helper).to receive(:track_test_path).with(id: have_attributes(id: 1)).and_return('x')
292
+ allow(helper.main_app).to receive(:track_test_path).with(id: have_attributes(id: 1)).and_return('x')
291
293
  expect(helper.session_tracking_path(document)).to eq 'x'
292
294
  end
293
295
 
294
296
  it "passes through tracking parameters" do
295
- allow(helper).to receive(:track_test_path).with(id: have_attributes(id: 1), x: 1).and_return('x')
297
+ allow(helper.main_app).to receive(:track_test_path).with(id: have_attributes(id: 1), x: 1).and_return('x')
296
298
  expect(helper.session_tracking_path(document, x: 1)).to eq 'x'
297
299
  end
298
300
  end