blacklight 6.24.0 → 7.0.0.rc1

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 (393) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.npmignore +23 -0
  4. data/.rubocop.yml +15 -3
  5. data/.rubocop_todo.yml +242 -379
  6. data/.solr_wrapper.yml +1 -1
  7. data/.travis.yml +20 -24
  8. data/Gemfile +1 -4
  9. data/README.md +21 -4
  10. data/Rakefile +1 -2
  11. data/VERSION +1 -1
  12. data/app/assets/images/blacklight/list.svg +1 -0
  13. data/app/assets/images/blacklight/search.svg +1 -0
  14. data/app/assets/javascripts/blacklight/blacklight.js +496 -56
  15. data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
  16. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +3 -1
  17. data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
  18. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
  19. data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
  20. data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
  21. data/app/assets/stylesheets/blacklight/_facets.scss +74 -92
  22. data/app/assets/stylesheets/blacklight/_header.scss +35 -48
  23. data/app/assets/stylesheets/blacklight/_icons.scss +29 -0
  24. data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
  25. data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
  26. data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
  27. data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
  28. data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
  29. data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
  30. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
  31. data/app/builders/blacklight/action_builder.rb +56 -0
  32. data/app/controllers/bookmarks_controller.rb +2 -2
  33. data/app/controllers/catalog_controller.rb +2 -2
  34. data/app/controllers/concerns/blacklight/base.rb +0 -33
  35. data/app/controllers/concerns/blacklight/bookmarks.rb +20 -37
  36. data/app/controllers/concerns/blacklight/catalog.rb +254 -213
  37. data/app/controllers/concerns/blacklight/controller.rb +117 -133
  38. data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
  39. data/app/controllers/concerns/blacklight/search_context.rb +10 -14
  40. data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
  41. data/app/controllers/concerns/blacklight/token_based_user.rb +6 -10
  42. data/app/helpers/blacklight/blacklight_helper_behavior.rb +32 -118
  43. data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
  44. data/app/helpers/blacklight/component_helper_behavior.rb +19 -19
  45. data/app/helpers/blacklight/configuration_helper_behavior.rb +25 -54
  46. data/app/helpers/blacklight/facets_helper_behavior.rb +40 -39
  47. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
  48. data/app/helpers/blacklight/icon_helper_behavior.rb +16 -0
  49. data/app/helpers/blacklight/layout_helper_behavior.rb +3 -10
  50. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +6 -6
  51. data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
  52. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +18 -11
  53. data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
  54. data/app/helpers/blacklight/url_helper_behavior.rb +21 -27
  55. data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
  56. data/app/javascript/blacklight/autofocus.js +20 -0
  57. data/app/javascript/blacklight/bookmark_toggle.js +25 -0
  58. data/app/javascript/blacklight/checkbox_submit.js +133 -0
  59. data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
  60. data/app/javascript/blacklight/core.js +39 -0
  61. data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
  62. data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +63 -63
  63. data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -2
  64. data/app/models/blacklight/facet_paginator.rb +3 -3
  65. data/app/models/blacklight/icon.rb +53 -0
  66. data/app/models/blacklight/solr/facet_paginator.rb +3 -3
  67. data/app/models/blacklight/suggest_search.rb +15 -4
  68. data/app/models/bookmark.rb +4 -9
  69. data/app/models/concerns/blacklight/configurable.rb +13 -13
  70. data/app/models/concerns/blacklight/document.rb +8 -42
  71. data/app/models/concerns/blacklight/document/active_model_shim.rb +8 -11
  72. data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
  73. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
  74. data/app/models/concerns/blacklight/document/email.rb +1 -1
  75. data/app/models/concerns/blacklight/document/extensions.rb +5 -5
  76. data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
  77. data/app/models/concerns/blacklight/document/sms.rb +1 -1
  78. data/app/models/concerns/blacklight/solr/document.rb +7 -8
  79. data/app/models/concerns/blacklight/suggest/response.rb +3 -5
  80. data/app/models/concerns/blacklight/user.rb +6 -6
  81. data/app/models/record_mailer.rb +5 -6
  82. data/app/models/search.rb +4 -7
  83. data/app/presenters/blacklight/field_presenter.rb +5 -5
  84. data/app/presenters/blacklight/index_presenter.rb +34 -71
  85. data/app/presenters/blacklight/json_presenter.rb +7 -4
  86. data/app/presenters/blacklight/link_alternate_presenter.rb +1 -1
  87. data/app/presenters/blacklight/rendering/abstract_step.rb +5 -5
  88. data/app/presenters/blacklight/rendering/helper_method.rb +8 -8
  89. data/app/presenters/blacklight/rendering/join.rb +3 -3
  90. data/app/presenters/blacklight/rendering/link_to_facet.rb +19 -19
  91. data/app/presenters/blacklight/rendering/microdata.rb +3 -3
  92. data/app/presenters/blacklight/rendering/pipeline.rb +5 -5
  93. data/app/presenters/blacklight/search_bar_presenter.rb +37 -0
  94. data/app/presenters/blacklight/show_presenter.rb +20 -69
  95. data/app/presenters/blacklight/thumbnail_presenter.rb +72 -0
  96. data/app/services/blacklight/document_factory.rb +11 -0
  97. data/app/services/blacklight/field_retriever.rb +24 -24
  98. data/app/services/blacklight/search_service.rb +154 -0
  99. data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
  100. data/app/views/blacklight/nav/_search_history.html.erb +1 -1
  101. data/app/views/bookmarks/_tools.html.erb +2 -2
  102. data/app/views/bookmarks/index.html.erb +2 -2
  103. data/app/views/catalog/_bookmark_control.html.erb +26 -10
  104. data/app/views/catalog/_citation.html.erb +18 -23
  105. data/app/views/catalog/_constraints.html.erb +5 -8
  106. data/app/views/catalog/_constraints_element.html.erb +6 -6
  107. data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +2 -2
  108. data/app/views/catalog/_document.html.erb +5 -3
  109. data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +0 -0
  110. data/app/views/catalog/_document_action.html.erb +2 -1
  111. data/app/views/catalog/_email_form.html.erb +8 -4
  112. data/app/views/catalog/_facet_index_navigation.html.erb +3 -3
  113. data/app/views/catalog/_facet_layout.html.erb +5 -7
  114. data/app/views/catalog/_facet_limit.html.erb +3 -2
  115. data/app/views/catalog/_facet_pagination.html.erb +10 -10
  116. data/app/views/catalog/_facet_pivot.html.erb +2 -2
  117. data/app/views/catalog/_facets.html.erb +8 -12
  118. data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +0 -0
  119. data/app/views/catalog/_home_text.html.erb +32 -36
  120. data/app/views/catalog/_index.html.erb +12 -0
  121. data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +2 -2
  122. data/app/views/catalog/_per_page_widget.html.erb +6 -7
  123. data/app/views/catalog/_previous_next_doc.html.erb +6 -14
  124. data/app/views/catalog/_search_form.html.erb +12 -8
  125. data/app/views/catalog/_search_header.html.erb +0 -3
  126. data/app/views/catalog/_search_results.html.erb +4 -0
  127. data/app/views/catalog/_show.html.erb +10 -0
  128. data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
  129. data/app/views/catalog/_show_main_content.html.erb +4 -4
  130. data/app/views/catalog/_show_sidebar.html.erb +3 -3
  131. data/app/views/catalog/_show_tools.html.erb +9 -11
  132. data/app/views/catalog/_sms_form.html.erb +8 -4
  133. data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
  134. data/app/views/catalog/_sort_widget.html.erb +7 -7
  135. data/app/views/catalog/_thumbnail.html.erb +5 -0
  136. data/app/views/catalog/_view_type_group.html.erb +2 -2
  137. data/app/views/catalog/citation.html.erb +1 -1
  138. data/app/views/catalog/citation.js.erb +9 -1
  139. data/app/views/catalog/email.html.erb +5 -5
  140. data/app/views/catalog/email_success.html.erb +11 -9
  141. data/app/views/catalog/facet.html.erb +5 -6
  142. data/app/views/catalog/index.atom.builder +10 -15
  143. data/app/views/catalog/index.html.erb +9 -11
  144. data/app/views/catalog/index.json.jbuilder +65 -3
  145. data/app/views/catalog/index.rss.builder +5 -5
  146. data/app/views/catalog/opensearch.xml.builder +10 -10
  147. data/app/views/catalog/show.html.erb +11 -6
  148. data/app/views/catalog/sms.html.erb +2 -3
  149. data/app/views/catalog/sms_success.html.erb +11 -10
  150. data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
  151. data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
  152. data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
  153. data/app/views/kaminari/blacklight/_next_page.html.erb +4 -4
  154. data/app/views/kaminari/blacklight/_page.html.erb +3 -3
  155. data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
  156. data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
  157. data/app/views/layouts/blacklight.html.erb +14 -41
  158. data/app/views/layouts/blacklight/base.html.erb +43 -0
  159. data/app/views/layouts/catalog_result.html.erb +11 -0
  160. data/app/views/search_history/index.html.erb +16 -21
  161. data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
  162. data/app/views/shared/_header_navbar.html.erb +8 -13
  163. data/app/views/shared/_modal.html.erb +6 -0
  164. data/app/views/shared/_user_util_links.html.erb +22 -0
  165. data/blacklight.gemspec +10 -11
  166. data/config/locales/blacklight.de.yml +0 -30
  167. data/config/locales/blacklight.en.yml +1 -27
  168. data/config/locales/blacklight.es.yml +0 -30
  169. data/config/locales/blacklight.fr.yml +0 -30
  170. data/config/locales/blacklight.hu.yml +210 -0
  171. data/config/locales/blacklight.it.yml +0 -30
  172. data/config/locales/blacklight.nl.yml +210 -0
  173. data/config/locales/blacklight.pt-BR.yml +6 -32
  174. data/config/locales/blacklight.sq.yml +1 -28
  175. data/config/locales/blacklight.zh.yml +0 -25
  176. data/config/routes.rb +3 -10
  177. data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
  178. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
  179. data/lib/blacklight.rb +4 -5
  180. data/lib/blacklight/abstract_repository.rb +9 -21
  181. data/lib/blacklight/configuration.rb +82 -89
  182. data/lib/blacklight/configuration/context.rb +1 -1
  183. data/lib/blacklight/configuration/facet_field.rb +16 -9
  184. data/lib/blacklight/configuration/field.rb +32 -3
  185. data/lib/blacklight/configuration/fields.rb +41 -48
  186. data/lib/blacklight/configuration/search_field.rb +2 -2
  187. data/lib/blacklight/configuration/sort_field.rb +2 -2
  188. data/lib/blacklight/configuration/view_config.rb +4 -0
  189. data/lib/blacklight/engine.rb +6 -10
  190. data/lib/blacklight/exceptions.rb +4 -7
  191. data/lib/blacklight/nested_open_struct_with_hash_access.rb +107 -0
  192. data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
  193. data/lib/blacklight/parameters.rb +1 -1
  194. data/lib/blacklight/routes/searchable.rb +1 -0
  195. data/lib/blacklight/search_builder.rb +26 -35
  196. data/lib/blacklight/search_state.rb +8 -8
  197. data/lib/blacklight/solr/repository.rb +3 -36
  198. data/lib/blacklight/solr/request.rb +1 -1
  199. data/lib/blacklight/solr/response.rb +29 -30
  200. data/lib/blacklight/solr/response/facets.rb +29 -31
  201. data/lib/blacklight/solr/response/group.rb +3 -3
  202. data/lib/blacklight/solr/response/group_response.rb +1 -1
  203. data/lib/blacklight/solr/response/more_like_this.rb +2 -2
  204. data/lib/blacklight/solr/response/response.rb +2 -2
  205. data/lib/blacklight/solr/response/spelling.rb +3 -3
  206. data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
  207. data/lib/blacklight/version.rb +1 -1
  208. data/lib/generators/blacklight/assets_generator.rb +8 -8
  209. data/lib/generators/blacklight/controller_generator.rb +4 -5
  210. data/lib/generators/blacklight/document_generator.rb +1 -1
  211. data/lib/generators/blacklight/install_generator.rb +18 -21
  212. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  213. data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +4 -6
  214. data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
  215. data/lib/generators/blacklight/templates/blacklight.scss +0 -2
  216. data/lib/generators/blacklight/templates/catalog_controller.rb +52 -51
  217. data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
  218. data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
  219. data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
  220. data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
  221. data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
  222. data/lib/generators/blacklight/templates/solr/conf/schema.xml +390 -0
  223. data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
  224. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
  225. data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
  226. data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
  227. data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
  228. data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
  229. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
  230. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
  231. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
  232. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
  233. data/lib/generators/blacklight/test_support_generator.rb +10 -10
  234. data/lib/generators/blacklight/user_generator.rb +3 -6
  235. data/lib/railties/blacklight.rake +19 -14
  236. data/package-lock.json +2057 -0
  237. data/package.json +28 -0
  238. data/spec/controllers/alternate_controller_spec.rb +1 -1
  239. data/spec/controllers/application_controller_spec.rb +1 -1
  240. data/spec/controllers/blacklight/base_spec.rb +1 -1
  241. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
  242. data/spec/controllers/blacklight/facet_spec.rb +1 -1
  243. data/spec/controllers/blacklight/search_fields_spec.rb +1 -13
  244. data/spec/controllers/bookmarks_controller_spec.rb +1 -36
  245. data/spec/controllers/catalog_controller_spec.rb +153 -53
  246. data/spec/controllers/search_history_controller_spec.rb +2 -2
  247. data/spec/features/alternate_controller_spec.rb +1 -1
  248. data/spec/features/autocomplete_spec.rb +2 -2
  249. data/spec/features/bookmarks_spec.rb +10 -10
  250. data/spec/features/did_you_mean_spec.rb +3 -9
  251. data/spec/features/facets_spec.rb +11 -11
  252. data/spec/features/record_view_spec.rb +1 -6
  253. data/spec/features/search_context_spec.rb +2 -2
  254. data/spec/features/search_filters_spec.rb +41 -41
  255. data/spec/features/search_formats_spec.rb +1 -1
  256. data/spec/features/search_history_spec.rb +1 -26
  257. data/spec/features/search_pagination_spec.rb +1 -1
  258. data/spec/features/search_results_spec.rb +3 -4
  259. data/spec/features/search_sort_spec.rb +2 -2
  260. data/spec/features/search_spec.rb +5 -10
  261. data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
  262. data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +70 -65
  263. data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +7 -8
  264. data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +1 -1
  265. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
  266. data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -15
  267. data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +2 -3
  268. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +80 -0
  269. data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +9 -9
  270. data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +4 -2
  271. data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +11 -15
  272. data/spec/helpers/blacklight_helper_spec.rb +36 -141
  273. data/spec/helpers/catalog_helper_spec.rb +37 -56
  274. data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +3 -3
  275. data/spec/lib/blacklight/configuration/facet_field_spec.rb +11 -0
  276. data/spec/lib/blacklight/configuration/field_spec.rb +12 -0
  277. data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
  278. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +153 -0
  279. data/spec/lib/blacklight/parameters_spec.rb +1 -1
  280. data/spec/lib/blacklight/search_state_spec.rb +2 -2
  281. data/spec/lib/blacklight_spec.rb +1 -1
  282. data/spec/lib/tasks/blacklight_task_spec.rb +1 -1
  283. data/spec/models/blacklight/configurable_spec.rb +15 -16
  284. data/spec/models/blacklight/configuration/context_spec.rb +1 -1
  285. data/spec/models/blacklight/configuration_spec.rb +146 -135
  286. data/spec/models/blacklight/document/active_model_shim_spec.rb +11 -1
  287. data/spec/models/blacklight/document/cache_key_spec.rb +1 -1
  288. data/spec/models/blacklight/document/dublin_core_spec.rb +5 -5
  289. data/spec/models/blacklight/document/email_spec.rb +3 -3
  290. data/spec/models/blacklight/document/sms_spec.rb +3 -3
  291. data/spec/models/blacklight/document_spec.rb +3 -16
  292. data/spec/models/blacklight/facet_paginator_spec.rb +1 -1
  293. data/spec/models/blacklight/icon_spec.rb +34 -0
  294. data/spec/models/blacklight/search_builder_spec.rb +33 -27
  295. data/spec/models/blacklight/solr/document_spec.rb +18 -7
  296. data/spec/models/blacklight/solr/facet_paginator_spec.rb +1 -1
  297. data/spec/models/blacklight/solr/repository_spec.rb +32 -27
  298. data/spec/models/blacklight/solr/request_spec.rb +1 -1
  299. data/spec/models/blacklight/solr/response/facets_spec.rb +1 -1
  300. data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -1
  301. data/spec/models/blacklight/solr/response/group_spec.rb +1 -1
  302. data/spec/models/blacklight/solr/response_spec.rb +9 -6
  303. data/spec/models/blacklight/solr/search_builder_spec.rb +35 -48
  304. data/spec/models/blacklight/suggest/response_spec.rb +4 -5
  305. data/spec/models/blacklight/suggest_search_spec.rb +14 -7
  306. data/spec/models/blacklight/user_spec.rb +1 -1
  307. data/spec/models/bookmark_spec.rb +1 -1
  308. data/spec/models/record_mailer_spec.rb +2 -2
  309. data/spec/models/search_spec.rb +1 -1
  310. data/spec/models/solr_document_spec.rb +3 -3
  311. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +72 -0
  312. data/spec/presenters/index_presenter_spec.rb +70 -143
  313. data/spec/presenters/pipeline_spec.rb +4 -4
  314. data/spec/presenters/show_presenter_spec.rb +83 -145
  315. data/spec/presenters/thumbnail_presenter_spec.rb +171 -0
  316. data/spec/routing/catalog_routing_spec.rb +1 -17
  317. data/spec/services/blacklight/search_service_spec.rb +446 -0
  318. data/spec/spec_helper.rb +22 -9
  319. data/spec/test_app_templates/Gemfile.extra +2 -5
  320. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  321. data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -3
  322. data/spec/views/catalog/_constraints_element.html.erb_spec.rb +8 -8
  323. data/spec/views/catalog/_document.html.erb_spec.rb +7 -7
  324. data/spec/views/catalog/_document_list.html.erb_spec.rb +1 -1
  325. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
  326. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
  327. data/spec/views/catalog/_facets.html.erb_spec.rb +2 -2
  328. data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +1 -1
  329. data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +4 -4
  330. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +4 -27
  331. data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
  332. data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +1 -1
  333. data/spec/views/catalog/_show_sidebar.erb_spec.rb +3 -3
  334. data/spec/views/catalog/_show_tools.html.erb_spec.rb +3 -3
  335. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -1
  336. data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +3 -3
  337. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +5 -1
  338. data/spec/views/catalog/email_success.html.erb_spec.rb +9 -0
  339. data/spec/views/catalog/facet.html.erb_spec.rb +1 -1
  340. data/spec/views/catalog/facet.json.jbuilder_spec.rb +1 -1
  341. data/spec/views/catalog/index.atom.builder_spec.rb +2 -2
  342. data/spec/views/catalog/index.html.erb_spec.rb +4 -7
  343. data/spec/views/catalog/index.json.jbuilder_spec.rb +66 -21
  344. data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
  345. data/spec/views/catalog/show.html.erb_spec.rb +2 -2
  346. data/spec/views/catalog/sms_success.html.erb_spec.rb +9 -0
  347. data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -4
  348. data/tasks/blacklight.rake +10 -8
  349. data/template.demo.rb +1 -11
  350. metadata +171 -189
  351. data/app/assets/javascripts/blacklight/autofocus.js +0 -16
  352. data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
  353. data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -139
  354. data/app/assets/javascripts/blacklight/core.js +0 -30
  355. data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
  356. data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
  357. data/app/controllers/concerns/blacklight/search_helper.rb +0 -161
  358. data/app/controllers/concerns/blacklight/suggest.rb +0 -25
  359. data/app/controllers/saved_searches_controller.rb +0 -4
  360. data/app/controllers/suggest_controller.rb +0 -4
  361. data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
  362. data/app/helpers/blacklight/render_partials_helper.rb +0 -205
  363. data/app/helpers/blacklight_configuration_helper.rb +0 -4
  364. data/app/helpers/blacklight_url_helper.rb +0 -4
  365. data/app/helpers/component_helper.rb +0 -4
  366. data/app/helpers/facets_helper.rb +0 -4
  367. data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
  368. data/app/helpers/layout_helper.rb +0 -4
  369. data/app/helpers/render_constraints_helper.rb +0 -4
  370. data/app/helpers/search_history_constraints_helper.rb +0 -4
  371. data/app/helpers/suggest_helper.rb +0 -4
  372. data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
  373. data/app/presenters/blacklight/document_presenter.rb +0 -153
  374. data/app/views/_user_util_links.html.erb +0 -26
  375. data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
  376. data/app/views/catalog/_index_default.html.erb +0 -12
  377. data/app/views/catalog/_show_default.html.erb +0 -10
  378. data/app/views/catalog/_thumbnail_default.html.erb +0 -5
  379. data/app/views/saved_searches/index.html.erb +0 -32
  380. data/app/views/shared/_ajax_modal.html.erb +0 -6
  381. data/lib/blacklight/utils.rb +0 -183
  382. data/lib/generators/blacklight/solr4_generator.rb +0 -31
  383. data/solr/conf/schema.xml +0 -627
  384. data/solr/conf/solrconfig.xml +0 -411
  385. data/spec/controllers/blacklight/search_helper_spec.rb +0 -489
  386. data/spec/controllers/saved_searches_controller_spec.rb +0 -32
  387. data/spec/controllers/suggest_controller_spec.rb +0 -17
  388. data/spec/features/saved_searches_spec.rb +0 -47
  389. data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
  390. data/spec/lib/blacklight/utils_spec.rb +0 -167
  391. data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
  392. data/spec/presenters/document_presenter_spec.rb +0 -438
  393. data/spec/support/backport_test.rb +0 -14
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe SearchHistoryConstraintsHelper do
3
+ RSpec.describe Blacklight::SearchHistoryConstraintsHelperBehavior do
4
4
 
5
5
  before(:all) do
6
6
  @config = Blacklight::Configuration.new do |config|
@@ -24,21 +24,21 @@ describe SearchHistoryConstraintsHelper do
24
24
  it "renders basic element" do
25
25
  response = helper.render_search_to_s_element("key", "value")
26
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")
27
+ expect(span).to have_selector("span.filter-name", content: "key:")
28
+ expect(span).to have_selector("span.filter-value", content: "value")
29
29
  end
30
30
  expect(response).to be_html_safe
31
31
  end
32
32
  it "escapes them that need escaping" do
33
33
  response = helper.render_search_to_s_element("key>", "value>")
34
34
  expect(response).to have_selector("span.constraint") do |span|
35
- expect(span).to have_selector("span.filterName") do |s2|
35
+ expect(span).to have_selector("span.filter-name") do |s2|
36
36
  # Note: nokogiri's gettext will unescape the inner html
37
37
  # which seems to be what rspecs "contains" method calls on
38
38
  # text nodes - thus the to_s inserted below.
39
39
  expect(s2).to match(/key>:/)
40
40
  end
41
- expect(span).to have_selector("span.filterValue") do |s3|
41
+ expect(span).to have_selector("span.filter-value") do |s3|
42
42
  expect(s3).to match(/value>/)
43
43
  end
44
44
  end
@@ -47,8 +47,8 @@ describe SearchHistoryConstraintsHelper do
47
47
  it "does not escape with options set thus" do
48
48
  response = helper.render_search_to_s_element("key>", "value>", :escape_key => false, :escape_value => false)
49
49
  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>")
50
+ expect(span).to have_selector("span.filter-name", content: "key>:")
51
+ expect(span).to have_selector("span.filter-value", content: "value>")
52
52
  end
53
53
  expect(response).to be_html_safe
54
54
  end
@@ -74,12 +74,12 @@ describe SearchHistoryConstraintsHelper do
74
74
  describe "render_search_to_s_filters" do
75
75
  it "renders a constraint for a selected facet in the config" do
76
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>")
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
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>")
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
@@ -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
@@ -38,4 +40,4 @@ describe SuggestHelper do
38
40
  end
39
41
  end
40
42
  end
41
- end
43
+ end
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe BlacklightUrlHelper do
3
+ RSpec.describe Blacklight::UrlHelperBehavior do
4
4
 
5
5
  let(:blacklight_config) do
6
6
  Blacklight::Configuration.new.configure do |config|
7
- config.index.title_field = 'title_display'
7
+ config.index.title_field = 'title_tsim'
8
8
  config.index.display_type_field = 'format'
9
9
  end
10
10
  end
@@ -110,11 +110,7 @@ describe BlacklightUrlHelper do
110
110
 
111
111
  context "without current search context" do
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
 
@@ -198,34 +194,34 @@ describe BlacklightUrlHelper do
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) }
205
201
  before do
206
202
  allow(controller).to receive(:action_name).and_return('index')
207
203
  end
208
204
 
209
205
  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)
206
+ expect(helper.link_to_document(document, :title_tsim)).to have_selector("a", :text => '654321', :count => 1)
211
207
  end
212
208
 
213
209
  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)
210
+ expect(helper.link_to_document(document, String.new('title_tsim'))).to have_selector("a", :text => 'title_tsim', :count => 1)
215
211
  end
216
212
 
217
213
  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)
214
+ expect(helper.link_to_document(document, Proc.new { |doc, opts| doc[:id] + ": " + doc.first(:title_tsim) })).to have_selector("a", :text => '123456: 654321', :count => 1)
219
215
  end
220
216
 
221
217
  context 'when label is missing' do
222
218
  let(:data) { { 'id' => id } }
223
219
  it "returns id" do
224
- expect(helper.link_to_document(document, :title_display)).to have_selector("a", :text => '123456', :count => 1)
220
+ expect(helper.link_to_document(document, :title_tsim)).to have_selector("a", :text => '123456', :count => 1)
225
221
  end
226
222
 
227
223
  it "is html safe" do
228
- expect(helper.link_to_document(document, :title_display)).to be_html_safe
224
+ expect(helper.link_to_document(document, :title_tsim)).to be_html_safe
229
225
  end
230
226
 
231
227
  it "passes on the title attribute to the link_to_with_data method" do
@@ -247,7 +243,7 @@ describe BlacklightUrlHelper do
247
243
  it "converts the counter parameter into a data- attribute" do
248
244
  allow(helper).to receive(:track_test_path).with(hash_including(id: have_attributes(id: '123456'), counter: 5)).and_return('tracking url')
249
245
 
250
- expect(helper.link_to_document(document, :title_display, counter: 5)).to include 'data-context-href="tracking url"'
246
+ expect(helper.link_to_document(document, :title_tsim, counter: 5)).to include 'data-context-href="tracking url"'
251
247
  end
252
248
 
253
249
  it "includes the data- attributes from the options" do
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- describe BlacklightHelper do
2
+ RSpec.describe BlacklightHelper do
3
3
  before(:each) do
4
4
  allow(helper).to receive(:current_or_guest_user).and_return(User.new)
5
5
  allow(helper).to receive(:search_action_path) do |*args|
@@ -7,13 +7,37 @@ describe BlacklightHelper do
7
7
  end
8
8
  end
9
9
 
10
- describe "#application_name", :test => true do
10
+ describe "#application_name" do
11
+ before do
12
+ allow(Rails).to receive(:cache).and_return(ActiveSupport::Cache::NullStore.new)
13
+ end
11
14
  it "defaults to 'Blacklight'" do
12
15
  expect(application_name).to eq "Blacklight"
13
16
  end
14
- it "uses the Rails application config application_name if available" do
15
- allow(Rails.application).to receive(:config).and_return(double(application_name: "asdf"))
16
- expect(application_name).to eq "asdf"
17
+
18
+ context "when the language is not english " do
19
+ around do |example|
20
+ I18n.locale = :de
21
+ example.run
22
+ I18n.locale = :en
23
+ end
24
+
25
+ context "and no translation exists for that language" do
26
+ it "defaults to 'Blacklight'" do
27
+ expect(application_name).to eq "Blacklight"
28
+ end
29
+ end
30
+
31
+ context "and a translation exists for that language" do
32
+ around do |example|
33
+ I18n.backend.store_translations(:de, 'blacklight' => { 'application_name' => 'Schwarzlicht' } )
34
+ example.run
35
+ I18n.backend.reload!
36
+ end
37
+ it "uses the provided value" do
38
+ expect(application_name).to eq "Schwarzlicht"
39
+ end
40
+ end
17
41
  end
18
42
  end
19
43
 
@@ -34,10 +58,11 @@ describe BlacklightHelper do
34
58
  describe "render_link_rel_alternates" do
35
59
  let(:document) { instance_double(SolrDocument) }
36
60
  let(:result) { double }
37
- let(:presenter) { Blacklight::DocumentPresenter.new(document, self) }
61
+ let(:view_context) { double(blacklight_config: blacklight_config, document_index_view_type: 'index') }
62
+ let(:presenter) { Blacklight::IndexPresenter.new(document, view_context) }
38
63
  let(:blacklight_config) do
39
64
  Blacklight::Configuration.new.configure do |config|
40
- config.index.title_field = 'title_display'
65
+ config.index.title_field = 'title_tsim'
41
66
  config.index.display_type_field = 'format'
42
67
  end
43
68
  end
@@ -61,11 +86,11 @@ describe BlacklightHelper do
61
86
  describe "with a config" do
62
87
  let(:config) do
63
88
  Blacklight::Configuration.new.configure do |config|
64
- config.index.title_field = 'title_display'
89
+ config.index.title_field = 'title_tsim'
65
90
  config.index.display_type_field = 'format'
66
91
  end
67
92
  end
68
- let(:document) { SolrDocument.new('title_display' => "A Fake Document", 'id'=>'8') }
93
+ let(:document) { SolrDocument.new('title_tsim' => "A Fake Document", 'id'=>'8') }
69
94
 
70
95
  before do
71
96
  config.add_show_tools_partial(:bookmark, partial: 'catalog/bookmark_control')
@@ -88,7 +113,7 @@ describe BlacklightHelper do
88
113
  it "renders partials" do
89
114
  allow(controller).to receive(:render_bookmarks_control?).and_return(true)
90
115
  response = helper.render_index_doc_actions(document)
91
- expect(response).to have_selector(".bookmark_toggle")
116
+ expect(response).to have_selector(".bookmark-toggle")
92
117
  end
93
118
 
94
119
  it "is nil if no partials are renderable" do
@@ -106,7 +131,7 @@ describe BlacklightHelper do
106
131
  describe "render_show_doc_actions" do
107
132
  it "renders partials" do
108
133
  response = helper.render_show_doc_actions(document)
109
- expect(response).to have_selector(".bookmark_toggle")
134
+ expect(response).to have_selector(".bookmark-toggle")
110
135
  end
111
136
  end
112
137
  end
@@ -151,50 +176,6 @@ describe BlacklightHelper do
151
176
  end
152
177
  end
153
178
 
154
- context "render methods" do
155
- let(:field) { "some_field" }
156
- let(:doc) { instance_double(SolrDocument) }
157
- let(:presenter) { instance_double(Blacklight::ShowPresenter) }
158
- before do
159
- allow(Deprecation).to receive(:warn) # TODO: purge Deprecations
160
- allow(helper).to receive(:presenter).with(doc).and_return(presenter)
161
- end
162
-
163
- describe "#render_index_field_value" do
164
- it "passes the document and field through to the presenter" do
165
- expect(presenter).to receive(:field_value).with(field, {})
166
- helper.render_index_field_value(doc, field)
167
- end
168
-
169
- it "allows the document and field to be passed as hash arguments" do
170
- expect(presenter).to receive(:field_value).with(field, {})
171
- helper.render_index_field_value(document: doc, field: field)
172
- end
173
-
174
- it "allows additional options to be passed to the presenter" do
175
- expect(presenter).to receive(:field_value).with(field, x: 1)
176
- helper.render_index_field_value(document: doc, field: field, x: 1)
177
- end
178
- end
179
-
180
- describe "#render_document_show_field_value" do
181
- it "passes the document and field through to the presenter" do
182
- expect(presenter).to receive(:field_value).with(field, {})
183
- helper.render_document_show_field_value(doc, field)
184
- end
185
-
186
- it "allows the document and field to be passed as hash arguments" do
187
- expect(presenter).to receive(:field_value).with(field, {})
188
- helper.render_document_show_field_value(document: doc, field: field)
189
- end
190
-
191
- it "allows additional options to be passed to the presenter" do
192
- expect(presenter).to receive(:field_value).with(field, x: 1)
193
- helper.render_document_show_field_value(document: doc, field: field, x: 1)
194
- end
195
- end
196
- end
197
-
198
179
  describe "#document_has_value?" do
199
180
  let(:doc) { double(SolrDocument) }
200
181
  it "ifs the document has the field value" do
@@ -254,79 +235,6 @@ describe BlacklightHelper do
254
235
  end
255
236
  end
256
237
 
257
- describe "#render_document_partials" do
258
- let(:doc) { double }
259
- before do
260
- allow(helper).to receive_messages(document_partial_path_templates: [])
261
- allow(helper).to receive_messages(document_index_view_type: 'index_header')
262
- end
263
-
264
- it "gets the document format from document_partial_name" do
265
- allow(helper).to receive(:document_partial_name).with(doc, :xyz)
266
- helper.render_document_partial(doc, :xyz)
267
- end
268
- end
269
-
270
- describe "#document_partial_name" do
271
- let(:blacklight_config) { Blacklight::Configuration.new }
272
- before do
273
- allow(helper).to receive_messages(blacklight_config: blacklight_config)
274
- end
275
-
276
- context "with a solr document with empty fields" do
277
- let(:document) { SolrDocument.new }
278
- it "is the default value" do
279
- expect(helper.document_partial_name(document)).to eq 'default'
280
- end
281
- end
282
-
283
- context "with a solr document with the display type field set" do
284
- let(:document) { SolrDocument.new 'my_field' => 'xyz'}
285
- before do
286
- blacklight_config.show.display_type_field = 'my_field'
287
- end
288
-
289
- it "uses the value in the configured display type field" do
290
- expect(helper.document_partial_name(document)).to eq 'xyz'
291
- end
292
- it "uses the value in the configured display type field if the action-specific field is empty" do
293
- expect(helper.document_partial_name(document, :some_action)).to eq 'xyz'
294
- end
295
- end
296
-
297
- context "with a solr doucment with an action-specific field set" do
298
- let(:document) { SolrDocument.new 'my_field' => 'xyz', 'other_field' => 'abc' }
299
- before do
300
- blacklight_config.show.media_display_type_field = 'my_field'
301
- blacklight_config.show.metadata_display_type_field = 'other_field'
302
- end
303
- it "uses the value in the action-specific fields" do
304
- expect(helper.document_partial_name(document, :media)).to eq 'xyz'
305
- expect(helper.document_partial_name(document, :metadata)).to eq 'abc'
306
- end
307
- end
308
- end
309
-
310
- describe "#type_field_to_partial_name" do
311
- let(:document) { double }
312
- context "with default value" do
313
- subject { helper.type_field_to_partial_name(document, 'default') }
314
- it { should eq 'default' }
315
- end
316
- context "with spaces" do
317
- subject { helper.type_field_to_partial_name(document, 'one two three') }
318
- it { should eq 'one_two_three' }
319
- end
320
- context "with hyphens" do
321
- subject { helper.type_field_to_partial_name(document, 'one-two-three') }
322
- it { should eq 'one_two_three' }
323
- end
324
- context "an array" do
325
- subject { helper.type_field_to_partial_name(document, ['one', 'two', 'three']) }
326
- it { should eq 'one_two_three' }
327
- end
328
- end
329
-
330
238
  describe "#opensearch_description_tag" do
331
239
  subject { helper.opensearch_description_tag 'title', 'href' }
332
240
  it "has a search rel" do
@@ -417,19 +325,6 @@ describe BlacklightHelper do
417
325
  allow(helper).to receive(:blacklight_config).and_return(blacklight_config)
418
326
  end
419
327
 
420
- describe "#presenter_class" do
421
- it "uses the value defined in the blacklight configuration" do
422
- expect(Deprecation).to receive(:warn).exactly(2).times
423
- blacklight_config.document_presenter_class = presenter_class
424
- expect(helper.presenter_class).to eq presenter_class
425
- end
426
-
427
- it "defaults to Blacklight::DocumentPresenter" do
428
- expect(Deprecation).to receive(:warn)
429
- expect(helper.presenter_class).to eq Blacklight::DocumentPresenter
430
- end
431
- end
432
-
433
328
  describe "#index_presenter_class" do
434
329
  it "uses the value defined in the blacklight configuration" do
435
330
  blacklight_config.index.document_presenter_class = presenter_class
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe CatalogHelper do
3
+ RSpec.describe CatalogHelper do
4
4
  include ERB::Util
5
5
  include CatalogHelper
6
6
 
@@ -174,6 +174,9 @@ describe CatalogHelper do
174
174
  end
175
175
 
176
176
  describe "should_autofocus_on_search_box?" do
177
+ before do
178
+ expect(Deprecation).to receive(:warn)
179
+ end
177
180
  it "is focused if we're on a catalog-like index page without query or facet parameters" do
178
181
  allow(helper).to receive_messages(controller: CatalogController.new, action_name: "index", has_search_parameters?: false)
179
182
  expect(helper.should_autofocus_on_search_box?).to be true
@@ -196,89 +199,67 @@ describe CatalogHelper do
196
199
  end
197
200
 
198
201
  describe "has_thumbnail?" do
199
- let(:document) { instance_double(SolrDocument) }
202
+ before do
203
+ expect(Deprecation).to receive(:warn)
204
+ end
205
+
206
+ let(:document) { SolrDocument.new(data) }
207
+ let(:data) { {} }
208
+
200
209
  it "has a thumbnail if a thumbnail_method is configured" do
201
- allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_method => :xyz) ))
210
+ allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_method => :xyz, document_presenter_class: Blacklight::IndexPresenter) ))
202
211
  expect(helper.has_thumbnail? document).to be true
203
212
  end
204
213
 
205
- it "has a thumbnail if a thumbnail_field is configured and it exists in the document" do
206
- allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_field => :xyz) ))
207
- allow(document).to receive_messages(has?: true)
208
- expect(helper.has_thumbnail? document).to be true
214
+ context "if a thumbnail_field is configured and it exists in the document" do
215
+ let(:data) { { xyz: 'abc' } }
216
+ it "has a thumbnail" do
217
+ allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_field => :xyz, document_presenter_class: Blacklight::IndexPresenter) ))
218
+ expect(helper.has_thumbnail? document).to be true
219
+ end
209
220
  end
210
-
221
+
211
222
  it "does not have a thumbnail if the thumbnail_field is missing from the document" do
212
- allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_field => :xyz) ))
223
+ allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_field => :xyz, document_presenter_class: Blacklight::IndexPresenter) ))
213
224
  allow(document).to receive_messages(has?: false)
214
225
  expect(helper.has_thumbnail? document).to be false
215
226
  end
216
227
 
217
228
  it "does not have a thumbnail if none of the fields are configured" do
218
- allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new() ))
229
+ allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(document_presenter_class: Blacklight::IndexPresenter) ))
219
230
  expect(helper.has_thumbnail? document).to be_falsey
220
231
  end
221
232
  end
222
233
 
223
234
  describe "render_thumbnail_tag" do
224
- let(:document) { instance_double(SolrDocument) }
225
- it "calls the provided thumbnail method" do
226
- allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_method => :xyz) ))
227
- expect(helper).to receive_messages(:xyz => "some-thumbnail")
228
-
229
- allow(helper).to receive(:link_to_document).with(document, "some-thumbnail", {})
230
- helper.render_thumbnail_tag document
235
+ let(:index_presenter) do
236
+ instance_double(Blacklight::IndexPresenter, thumbnail: thumbnail_presenter)
231
237
  end
238
+ let(:thumbnail_presenter){ instance_double(Blacklight::ThumbnailPresenter) }
232
239
 
233
- it "creates an image tag from the given field" do
234
- allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_field => :xyz) ))
235
-
236
- allow(document).to receive(:has?).with(:xyz).and_return(true)
237
- allow(document).to receive(:first).with(:xyz).and_return("http://example.com/some.jpg")
238
-
239
- expect(helper).to receive(:link_to_document).with(document, image_tag("http://example.com/some.jpg"), {})
240
- helper.render_thumbnail_tag document
241
- end
242
-
243
- it "does not link to the document if the url options are false" do
244
- allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_method => :xyz) ))
245
- allow(helper).to receive_messages(:xyz => "some-thumbnail")
240
+ before do
246
241
  expect(Deprecation).to receive(:warn)
247
- result = helper.render_thumbnail_tag document, {}, false
248
- expect(result).to eq "some-thumbnail"
242
+ allow(helper).to receive(:index_presenter).with(document).and_return(index_presenter)
249
243
  end
250
244
 
251
- it "does not link to the document if the url options have :suppress_link" do
252
- allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_method => :xyz) ))
253
- allow(helper).to receive_messages(:xyz => "some-thumbnail")
254
-
255
- result = helper.render_thumbnail_tag document, {}, suppress_link: true
256
- expect(result).to eq "some-thumbnail"
257
- end
258
-
259
-
260
- it "returns nil if no thumbnail is available" do
261
- allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new() ))
262
- expect(helper.render_thumbnail_tag document).to be_nil
263
- end
264
-
265
- it "returns nil if no thumbnail is returned from the thumbnail method" do
266
- allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_method => :xyz) ))
267
- allow(helper).to receive_messages(:xyz => nil)
245
+ let(:document) { instance_double(SolrDocument) }
268
246
 
269
- expect(helper.render_thumbnail_tag document).to be_nil
247
+ it "calls thumbnail presenter with default values" do
248
+ expect(thumbnail_presenter).to receive(:thumbnail_tag).with({}, {})
249
+ helper.render_thumbnail_tag document
270
250
  end
271
251
 
272
- it "returns nil if no thumbnail is in the document" do
273
- allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_field => :xyz) ))
274
-
275
- allow(document).to receive(:has?).with(:xyz).and_return(false)
276
-
277
- expect(helper.render_thumbnail_tag document).to be_nil
252
+ it "calls thumbnail presenter with provided values" do
253
+ expect(thumbnail_presenter).to receive(:thumbnail_tag).with({}, suppress_link: true)
254
+ result = helper.render_thumbnail_tag document, {}, suppress_link: true
278
255
  end
279
256
  end
280
257
 
281
258
  describe "thumbnail_url" do
259
+ before do
260
+ expect(Deprecation).to receive(:warn)
261
+ end
262
+
282
263
  it "pulls the configured thumbnail field out of the document" do
283
264
  allow(helper).to receive_messages(:blacklight_config => Blacklight::Configuration.new(:index => Blacklight::OpenStructWithHashAccess.new(:thumbnail_field => :xyz) ))
284
265
  document = instance_double(SolrDocument)