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,470 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # check the methods that do solr requests. Note that we are not testing if
4
- # solr gives "correct" responses, as that's out of scope (it's a part of
5
- # testing the solr code itself). We *are* testing if blacklight code sends
6
- # queries to solr such that it gets appropriate results. When a user does a search,
7
- # do we get data back from solr (i.e. did we properly configure blacklight code
8
- # to talk with solr and get results)? when we do a document request, does
9
- # blacklight code get a single document returned?)
10
- #
11
- describe Blacklight::SearchHelper do
12
-
13
- # SearchHelper is a controller layer mixin, which depends
14
- # on being mixed into a class which has #params (from Rails)
15
- # and #blacklight_config
16
- class SearchHelperTestClass
17
- include Blacklight::SearchHelper
18
-
19
- attr_accessor :blacklight_config
20
- attr_accessor :repository
21
-
22
- def initialize blacklight_config, conn
23
- self.blacklight_config = blacklight_config
24
- self.repository = Blacklight::Solr::Repository.new(blacklight_config)
25
- self.repository.connection = conn
26
- end
27
-
28
- def params
29
- {}
30
- end
31
- end
32
-
33
- subject { SearchHelperTestClass.new blacklight_config, blacklight_solr }
34
-
35
- let(:blacklight_config) { Blacklight::Configuration.new }
36
- let(:copy_of_catalog_config) { ::CatalogController.blacklight_config.deep_copy }
37
- let(:blacklight_solr) { RSolr.connect(Blacklight.connection_config.except(:adapter)) }
38
-
39
- before(:each) do
40
- @all_docs_query = ''
41
- @no_docs_query = 'zzzzzzzzzzzz'
42
- @single_word_query = 'include'
43
- @mult_word_query = 'tibetan history'
44
- # f[format][]=Book&f[language_facet][]=English
45
- @single_facet = {:format=>'Book'}
46
- @multi_facets = {:format=>'Book', :language_facet=>'Tibetan'}
47
- @bad_facet = {:format=>'666'}
48
- @subject_search_params = {:commit=>"search", :search_field=>"subject", :action=>"index", :"controller"=>"catalog", :"rows"=>"10", :"q"=>"wome"}
49
- end
50
-
51
- # SPECS FOR SEARCH RESULTS FOR QUERY
52
- describe 'Search Results', :integration => true do
53
-
54
- let(:blacklight_config) { copy_of_catalog_config }
55
- describe 'for a sample query returning results' do
56
-
57
- before do
58
- (@solr_response, @document_list) = subject.search_results(q: @all_docs_query)
59
- end
60
-
61
- it "uses the configured request handler" do
62
- allow(blacklight_config).to receive(:default_solr_params).and_return({:qt => 'custom_request_handler'})
63
- allow(blacklight_solr).to receive(:send_and_receive) do |path, params|
64
- expect(path).to eq 'select'
65
- expect(params[:params]['facet.field']).to eq ["format", "{!ex=pub_date_single}pub_date", "subject_topic_facet", "language_facet", "lc_1letter_facet", "subject_geo_facet", "subject_era_facet"]
66
- expect(params[:params]["facet.query"]).to eq ["pub_date:[#{5.years.ago.year} TO *]", "pub_date:[#{10.years.ago.year} TO *]", "pub_date:[#{25.years.ago.year} TO *]"]
67
- expect(params[:params]).to include('rows' => 10, 'qt'=>"custom_request_handler", 'q'=>"", "f.subject_topic_facet.facet.limit"=>21, 'sort'=>"score desc, pub_date_sort desc, title_sort asc")
68
- end.and_return({'response'=>{'docs'=>[]}})
69
- subject.search_results(q: @all_docs_query)
70
- end
71
-
72
- it 'has a @response.docs list of the same size as @document_list' do
73
- expect(@solr_response.docs).to have(@document_list.length).docs
74
- end
75
-
76
- it 'has @response.docs list representing same documents as SolrDocuments in @document_list' do
77
- @solr_response.docs.each_index do |index|
78
- mash = @solr_response.docs[index]
79
- solr_document = @document_list[index]
80
-
81
- expect(Set.new(mash.keys)).to eq Set.new(solr_document.keys)
82
-
83
- mash.keys.each do |key|
84
- expect(mash[key]).to eq solr_document[key]
85
- end
86
- end
87
- end
88
- end
89
-
90
- describe "for a query returning a grouped response" do
91
- let(:blacklight_config) { copy_of_catalog_config }
92
- before do
93
- blacklight_config.default_solr_params[:group] = true
94
- blacklight_config.default_solr_params[:'group.field'] = 'pub_date_sort'
95
- (@solr_response, @document_list) = subject.search_results(q: @all_docs_query)
96
- end
97
-
98
- it "has an empty document list" do
99
- expect(@document_list).to be_empty
100
- end
101
-
102
- it "returns a grouped response" do
103
- expect(@solr_response).to be_a_kind_of Blacklight::Solr::Response::GroupResponse
104
-
105
- end
106
- end
107
-
108
- describe "for a query returning multiple groups", integration: true do
109
- let(:blacklight_config) { copy_of_catalog_config }
110
-
111
- before do
112
- allow(subject).to receive_messages grouped_key_for_results: 'title_sort'
113
- blacklight_config.default_solr_params[:group] = true
114
- blacklight_config.default_solr_params[:'group.field'] = ['pub_date_sort', 'title_sort']
115
- (@solr_response, @document_list) = subject.search_results(q: @all_docs_query)
116
- end
117
-
118
- it "has an empty document list" do
119
- expect(@document_list).to be_empty
120
- end
121
-
122
- it "returns a grouped response" do
123
- expect(@solr_response).to be_a_kind_of Blacklight::Solr::Response::GroupResponse
124
- expect(@solr_response.group_field).to eq "title_sort"
125
- end
126
- end
127
-
128
-
129
- describe "for All Docs Query and One Facet" do
130
- it 'has results' do
131
- (solr_response, document_list) = subject.search_results(q: @all_docs_query, f: @single_facet)
132
- expect(solr_response.docs).to have(document_list.size).results
133
- expect(solr_response.docs).to have_at_least(1).result
134
- end
135
- # TODO: check that number of these results < number of results for all docs query
136
- # BUT can't: num docs isn't total, it's the num docs in the single SOLR response (e.g. 10)
137
- end
138
-
139
- describe "for Query Without Results and No Facet" do
140
- it 'has no results and not raise error' do
141
- (solr_response, document_list) = subject.search_results(q: @no_docs_query)
142
- expect(document_list).to have(0).results
143
- expect(solr_response.docs).to have(0).results
144
- end
145
- end
146
-
147
- describe "for Query Without Results and One Facet" do
148
- it 'has no results and not raise error' do
149
- (solr_response, document_list) = subject.search_results(q: @no_docs_query, f: @single_facet)
150
- expect(document_list).to have(0).results
151
- expect(solr_response.docs).to have(0).results
152
- end
153
- end
154
-
155
- describe "for All Docs Query and Bad Facet" do
156
- it 'has no results and not raise error' do
157
- (solr_response, document_list) = subject.search_results(q: @all_docs_query, f: @bad_facet)
158
- expect(document_list).to have(0).results
159
- expect(solr_response.docs).to have(0).results
160
- end
161
- end
162
- end # Search Results
163
-
164
-
165
- # SPECS FOR SEARCH RESULTS FOR FACETS
166
- describe 'Facets in Search Results for All Docs Query', :integration => true do
167
-
168
- let(:blacklight_config) { copy_of_catalog_config }
169
-
170
- before do
171
- (solr_response, document_list) = subject.search_results(q: @all_docs_query)
172
- @facets = solr_response.aggregations
173
- end
174
-
175
- it 'has more than one facet' do
176
- expect(@facets).to have_at_least(1).facet
177
- end
178
- it 'has all facets specified in initializer' do
179
- expect(@facets.keys).to include *blacklight_config.facet_fields.keys
180
- expect(@facets.none? { |k, v| v.nil? }).to eq true
181
- end
182
-
183
- it 'has at least one value for each facet' do
184
- @facets.each do |key, facet|
185
- expect(facet.items).to have_at_least(1).hit
186
- end
187
- end
188
- it 'has multiple values for at least one facet' do
189
- has_mult_values = false
190
- @facets.each do |key, facet|
191
- if facet.items.size > 1
192
- has_mult_values = true
193
- break
194
- end
195
- end
196
- expect(has_mult_values).to eq true
197
- end
198
- it 'has all value counts > 0' do
199
- @facets.each do |key, facet|
200
- facet.items.each do |facet_vals|
201
- expect(facet_vals.hits).to be > 0
202
- end
203
- end
204
- end
205
- end # facet specs
206
-
207
-
208
- # SPECS FOR SEARCH RESULTS FOR PAGING
209
- describe 'Paging', :integration => true do
210
- let(:blacklight_config) { copy_of_catalog_config }
211
-
212
- it 'starts with first results by default' do
213
- (solr_response, document_list) = subject.search_results(q: @all_docs_query)
214
- expect(solr_response.params[:start].to_i).to eq 0
215
- end
216
- it 'has number of results (per page) set in initializer, by default' do
217
- (solr_response, document_list) = subject.search_results(q: @all_docs_query)
218
- expect(solr_response.docs).to have(blacklight_config[:default_solr_params][:rows]).items
219
- expect(document_list).to have(blacklight_config[:default_solr_params][:rows]).items
220
- end
221
-
222
- it 'gets number of results per page requested' do
223
- num_results = 3 # non-default value
224
- (solr_response1, document_list1) = subject.search_results(q: @all_docs_query, per_page: num_results)
225
- expect(document_list1).to have(num_results).docs
226
- expect(solr_response1.docs).to have(num_results).docs
227
- end
228
-
229
- it 'gets number of rows requested' do
230
- num_results = 4 # non-default value
231
- (solr_response1, document_list1) = subject.search_results(q: @all_docs_query, rows: num_results)
232
- expect(document_list1).to have(num_results).docs
233
- expect(solr_response1.docs).to have(num_results).docs
234
- end
235
-
236
- it 'skips appropriate number of results when requested - default per page' do
237
- page = 3
238
- (solr_response2, document_list2) = subject.search_results(q: @all_docs_query, page: page)
239
- expect(solr_response2.params[:start].to_i).to eq blacklight_config[:default_solr_params][:rows] * (page-1)
240
- end
241
- it 'skips appropriate number of results when requested - non-default per page' do
242
- page = 3
243
- num_results = 3
244
- (solr_response2a, document_list2a) = subject.search_results(q: @all_docs_query, per_page: num_results, page: page)
245
- expect(solr_response2a.params[:start].to_i).to eq num_results * (page-1)
246
- end
247
-
248
- it 'has no results when prompted for page after last result' do
249
- big = 5000
250
- (solr_response3, document_list3) = subject.search_results(q: @all_docs_query, rows: big, page: big)
251
- expect(document_list3).to have(0).docs
252
- expect(solr_response3.docs).to have(0).docs
253
- end
254
-
255
- it 'shows first results when prompted for page before first result' do
256
- # FIXME: should it show first results, or should it throw an error for view to deal w?
257
- # Solr throws an error for a negative start value
258
- (solr_response4, document_list4) = subject.search_results(q: @all_docs_query, page: '-1')
259
- expect(solr_response4.params[:start].to_i).to eq 0
260
- end
261
- it 'has results available when asked for more than are in response' do
262
- big = 5000
263
- (solr_response5, document_list5) = subject.search_results(q: @all_docs_query, rows: big, page: 1)
264
- expect(solr_response5.docs).to have(document_list5.length).docs
265
- expect(solr_response5.docs).to have_at_least(1).doc
266
- end
267
-
268
- end # page specs
269
-
270
- # SPECS FOR SINGLE DOCUMENT REQUESTS
271
- describe 'Get Document By Id', :integration => true do
272
- before do
273
- @doc_id = '2007020969'
274
- @bad_id = "redrum"
275
- @response2, @document = subject.fetch(@doc_id)
276
- end
277
-
278
- it "raises Blacklight::RecordNotFound for an unknown id" do
279
- expect {
280
- subject.fetch(@bad_id)
281
- }.to raise_error(Blacklight::Exceptions::RecordNotFound)
282
- end
283
-
284
- it "uses a provided document request handler" do
285
- allow(blacklight_config).to receive_messages(:document_solr_request_handler => 'document')
286
- allow(blacklight_solr).to receive(:send_and_receive).with('select', kind_of(Hash)).and_return({'response'=>{'docs'=>[]}})
287
- expect { subject.fetch(@doc_id)}.to raise_error Blacklight::Exceptions::RecordNotFound
288
- end
289
-
290
- it "uses a provided document solr path" do
291
- allow(blacklight_config).to receive_messages(:document_solr_path => 'get')
292
- allow(blacklight_solr).to receive(:send_and_receive).with('get', kind_of(Hash)).and_return({'response'=>{'docs'=>[]}})
293
- expect { subject.fetch(@doc_id)}.to raise_error Blacklight::Exceptions::RecordNotFound
294
- end
295
-
296
- it "has a non-nil result for a known id" do
297
- expect(@document).not_to be_nil
298
- end
299
- it "has a single document in the response for a known id" do
300
- expect(@response2.docs.size).to eq 1
301
- end
302
- it 'has the expected value in the id field' do
303
- expect(@document.id).to eq @doc_id
304
- end
305
- it 'has non-nil values for required fields set in initializer' do
306
- expect(@document.fetch(blacklight_config.view_config(:show).display_type_field)).not_to be_nil
307
- end
308
- end
309
-
310
- # SPECS FOR SPELLING SUGGESTIONS VIA SEARCH
311
- describe "Searches should return spelling suggestions", :integration => true do
312
- it 'search results for just-poor-enough-query term should have (multiple) spelling suggestions' do
313
- (solr_response, document_list) = subject.search_results(q: 'boo')
314
- expect(solr_response.spelling.words).to include('bon')
315
- expect(solr_response.spelling.words).to include('bod') #for multiple suggestions
316
- end
317
-
318
- it 'search results for just-poor-enough-query term should have multiple spelling suggestions' do
319
- (solr_response, document_list) = subject.search_results(q: 'politica')
320
- expect(solr_response.spelling.words).to include('policy') # less freq
321
- expect(solr_response.spelling.words).to include('politics') # more freq
322
- expect(solr_response.spelling.words).to include('political') # more freq
323
- =begin
324
- # when we can have multiple suggestions
325
- expect(solr_response.spelling.words).to_not include('policy') # less freq
326
- solr_response.spelling.words).to include('politics') # more freq
327
- solr_response.spelling.words).to include('political') # more freq
328
- =end
329
- end
330
-
331
- it "title search results for just-poor-enough query term should have spelling suggestions" do
332
- (solr_response, document_list) = subject.search_results(q: 'yehudiyam', qt: 'search', :"spellcheck.dictionary" => "title")
333
- expect(solr_response.spelling.words).to include('yehudiyim')
334
- end
335
-
336
- it "author search results for just-poor-enough-query term should have spelling suggestions" do
337
- (solr_response, document_list) = subject.search_results(q: 'shirma', qt: 'search', :"spellcheck.dictionary" => "author")
338
- expect(solr_response.spelling.words).to include('sharma')
339
- end
340
-
341
- it "subject search results for just-poor-enough-query term should have spelling suggestions" do
342
- (solr_response, document_list) = subject.search_results(q: 'wome', qt: 'search', :"spellcheck.dictionary" => "subject")
343
- expect(solr_response.spelling.words).to include('women')
344
- end
345
-
346
- it 'search results for multiple terms query with just-poor-enough-terms should have spelling suggestions for each term' do
347
- skip
348
- # get_spelling_suggestion("histo politica").should_not be_nil
349
- end
350
-
351
- end
352
-
353
- describe "facet_limit_for" do
354
- let(:blacklight_config) { copy_of_catalog_config }
355
-
356
- it "returns specified value for facet_field specified" do
357
- expect(subject.facet_limit_for("subject_topic_facet")).to eq blacklight_config.facet_fields["subject_topic_facet"].limit
358
- end
359
-
360
- it "facet_limit_hash should return hash with key being facet_field and value being configured limit" do
361
- # facet_limit_hash has been removed from solrhelper in refactor. should it go back?
362
- skip "facet_limit_hash has been removed from solrhelper in refactor. should it go back?"
363
- expect(subject.facet_limit_hash).to eq blacklight_config[:facet][:limits]
364
- end
365
-
366
- it "handles no facet_limits in config" do
367
- blacklight_config.facet_fields = {}
368
- expect(subject.facet_limit_for("subject_topic_facet")).to be_nil
369
- end
370
-
371
- describe "for 'true' configured values" do
372
- let(:blacklight_config) do
373
- Blacklight::Configuration.new do |config|
374
- config.add_facet_field "language_facet", limit: true
375
- end
376
- end
377
- it "returns nil if no @response available" do
378
- expect(subject.facet_limit_for("some_unknown_field")).to be_nil
379
- end
380
- it "gets from @response facet.limit if available" do
381
- @response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: nil) })
382
- subject.instance_variable_set(:@response, @response)
383
- blacklight_config.facet_fields['language_facet'].limit = 10
384
- expect(subject.facet_limit_for("language_facet")).to eq 10
385
- end
386
- it "gets the limit from the facet field in @response" do
387
- @response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: 16) })
388
- subject.instance_variable_set(:@response, @response)
389
- expect(subject.facet_limit_for("language_facet")).to eq 15
390
- end
391
- it "defaults to 10" do
392
- expect(subject.facet_limit_for("language_facet")).to eq 10
393
- end
394
- end
395
-
396
- context 'for facet fields with a key that is different from the field name' do
397
- let(:blacklight_config) do
398
- Blacklight::Configuration.new do |config|
399
- config.add_facet_field 'some_key', field: 'x', limit: true
400
- end
401
- end
402
-
403
- it 'gets the limit from the facet field in the @response' do
404
- response = instance_double(Blacklight::Solr::Response, aggregations: { 'x' => double(limit: 16) })
405
- subject.instance_variable_set(:@response, response)
406
- expect(subject.facet_limit_for('some_key')).to eq 15
407
- end
408
- end
409
- end
410
-
411
- # TODO: more complex queries! phrases, offset into search results, non-latin, boosting(?)
412
- # search within query building (?)
413
- # search + facets (search done first; facet selected first, both selected)
414
-
415
- # TODO: maybe eventually check other types of solr requests
416
- # more like this
417
- # nearby on shelf
418
- it "raises a Blacklight exception if RSolr can't connect to the Solr instance" do
419
- allow(blacklight_solr).to receive(:send_and_receive).and_raise(Errno::ECONNREFUSED)
420
- expect { subject.repository.search }.to raise_exception(/Unable to connect to Solr instance/)
421
- end
422
-
423
- describe "grouped_key_for_results" do
424
- it "pulls the grouped key out of the config" do
425
- blacklight_config.index.group = 'xyz'
426
- expect(subject.grouped_key_for_results).to eq('xyz')
427
- end
428
- end
429
-
430
- describe "#get_previous_and_next_documents_for_search" do
431
- let(:pre_query) { SearchHelperTestClass.new blacklight_config, blacklight_solr }
432
- before do
433
- @full_response, @all_docs = pre_query.search_results(q: '', per_page: '100')
434
- end
435
-
436
- it "returns the previous and next documents for a search" do
437
- response, docs = subject.get_previous_and_next_documents_for_search(4, :q => '')
438
-
439
- expect(docs.first.id).to eq @all_docs[3].id
440
- expect(docs.last.id).to eq @all_docs[5].id
441
- end
442
-
443
- it "returns only the next document if the counter is 0" do
444
- response, docs = subject.get_previous_and_next_documents_for_search(0, :q => '')
445
-
446
- expect(docs.first).to be_nil
447
- expect(docs.last.id).to eq @all_docs[1].id
448
- end
449
-
450
- it "returns only the previous document if the counter is the total number of documents" do
451
- response, docs = subject.get_previous_and_next_documents_for_search(@full_response.total - 1, :q => '')
452
- expect(docs.first.id).to eq @all_docs.slice(-2).id
453
- expect(docs.last).to be_nil
454
- end
455
-
456
- it "returns an array of nil values if there is only one result" do
457
- response, docs = subject.get_previous_and_next_documents_for_search(0, :q => 'id:2007020969')
458
- expect(docs.last).to be_nil
459
- expect(docs.first).to be_nil
460
- end
461
-
462
- it 'allows the query parameters to be customized using configuration' do
463
- blacklight_config.document_pagination_params[:fl] = 'id,format'
464
-
465
- response, docs = subject.get_previous_and_next_documents_for_search(0, :q => '')
466
-
467
- expect(docs.last.to_h).to eq @all_docs[1].to_h.slice('id', 'format')
468
- end
469
- end
470
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe SavedSearchesController do
4
- routes { Blacklight::Engine.routes }
5
-
6
- before(:all) do
7
- @one = Search.create
8
- @two = Search.create
9
- @three = Search.create
10
- end
11
-
12
- before(:each) do
13
- @user = User.create! :email => 'test@example.com', :password => 'abcd12345', :password_confirmation => 'abcd12345'
14
- sign_in @user
15
- end
16
-
17
- describe "save" do
18
- it "lets you save a search" do
19
- request.env["HTTP_REFERER"] = "where_i_came_from"
20
- session[:history] = [@one.id]
21
- post :save, params: { id: @one.id }
22
- expect(response).to redirect_to "where_i_came_from"
23
- end
24
-
25
- it "does not let you save a search that isn't in your search history" do
26
- session[:history] = [@one.id]
27
- expect {
28
- post :save, params: { id: @two.id }
29
- }.to raise_error ActiveRecord::RecordNotFound
30
- end
31
- end
32
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe SuggestController do
4
- routes { Blacklight::Engine.routes }
5
- describe 'GET index' do
6
- it 'returns JSON' do
7
- get :index, params: { format: 'json' }
8
- expect(response.body).to eq [].to_json
9
- end
10
- it 'returns suggestions' do
11
- get :index, params: { format: 'json', q: 'new' }
12
- json = JSON.parse(response.body)
13
- expect(json.count).to eq 3
14
- expect(json.first['term']).to eq 'new jersey'
15
- end
16
- end
17
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe "Saved Searches" do
4
- before do
5
- sign_in 'user1'
6
- visit root_path
7
- end
8
-
9
- it "is empty" do
10
- click_link 'Saved Searches'
11
- expect(page).to have_content 'You have no saved searches'
12
- end
13
-
14
- describe "with a saved search 'book'" do
15
- before do
16
- fill_in "q", with: 'book'
17
- click_button 'search'
18
- click_link "History"
19
- click_button "save"
20
- click_link 'Saved Searches'
21
- end
22
- it "shows saved searches" do
23
- expect(page).to have_content 'Your saved searches'
24
- expect(page).to have_content 'book'
25
- end
26
- it "deletes saved searches" do
27
- click_button 'delete'
28
- expect(page).to have_content 'Successfully removed that saved search.'
29
- end
30
-
31
- describe "and a saved search 'dang'" do
32
- before do
33
- visit root_path
34
- fill_in "q", with: 'dang'
35
- click_button 'search'
36
- click_link "History"
37
- click_button "save"
38
- click_link 'Saved Searches'
39
- end
40
- it "clears the searhes" do
41
- click_link "Clear Saved Searches"
42
- expect(page).to have_content 'Cleared your saved searches.'
43
- expect(page).to have_content 'You have no saved searches'
44
- end
45
- end
46
- end
47
- end
@@ -1,101 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe Blacklight::DeprecatedUrlHelperBehavior do
4
- around do |test|
5
- Deprecation.silence(described_class) do
6
- test.call
7
- end
8
- end
9
-
10
- let(:parameter_class) { ActionController::Parameters }
11
- let(:search_state) { Blacklight::SearchState.new(params, blacklight_config) }
12
- let(:params) { parameter_class.new }
13
- let(:blacklight_config) { Blacklight::Configuration.new }
14
-
15
- before do
16
- allow(helper).to receive(:search_state).and_return(search_state)
17
- allow(helper).to receive(:params).and_return(params)
18
- allow(helper).to receive(:blacklight_config).and_return(blacklight_config)
19
- allow(controller).to receive(:search_state_class).and_return(Blacklight::SearchState)
20
- end
21
-
22
- describe '#params_for_search' do
23
- it 'passes through to the search state' do
24
- expect(helper.params_for_search).to eq search_state.params_for_search
25
- end
26
-
27
- it 'passes arguments through to the search state' do
28
- expect(helper.params_for_search(merge: 1)).to eq search_state.params_for_search(merge: 1)
29
- end
30
-
31
- it 'generates a search state for the source parameters' do
32
- expect(helper.params_for_search(parameter_class.new(source: 1), { merge: 1 })).to include merge: 1, source: 1
33
- end
34
- end
35
-
36
- describe '#sanitize_search_params' do
37
- it 'passes through to the parameter sanitizer' do
38
- expect(helper.sanitize_search_params(a: 1)).to eq Blacklight::Parameters.sanitize(a: 1)
39
- end
40
- end
41
-
42
- describe '#reset_search_params' do
43
- let(:source_parameters) { parameter_class.new page: 1, counter: 10 }
44
- it 'resets the current page and counter' do
45
- expect(helper.reset_search_params(source_parameters)).to be_blank
46
- end
47
- end
48
-
49
- describe '#add_facet_params' do
50
- before do
51
- blacklight_config.add_facet_field 'x'
52
- end
53
-
54
- let(:field) { blacklight_config.facet_fields['x'] }
55
- let(:item) { true }
56
-
57
- it 'passes through to the search state' do
58
- expect(helper.add_facet_params(field, item)).to eq search_state.add_facet_params(field, item)
59
- end
60
-
61
- context "with source_parameters" do
62
- let(:source_parameters) { parameter_class.new source: 1 }
63
- it 'generates a search state for the source parameters' do
64
- expect(helper.add_facet_params(field, item, source_parameters)).to include source: 1
65
- end
66
- end
67
- end
68
-
69
- describe '#add_facet_params_and_redirect' do
70
- before do
71
- blacklight_config.add_facet_field 'x'
72
- end
73
-
74
- let(:field) { blacklight_config.facet_fields['x'] }
75
- let(:item) { true }
76
-
77
- it 'passes through to the search state' do
78
- expect(helper.add_facet_params_and_redirect(field, item)).to eq search_state.add_facet_params_and_redirect(field, item)
79
- end
80
- end
81
-
82
- describe '#remove_facet_params' do
83
- before do
84
- blacklight_config.add_facet_field 'x'
85
- end
86
-
87
- let(:field) { blacklight_config.facet_fields['x'] }
88
- let(:item) { true }
89
-
90
- it 'passes through to the search state' do
91
- expect(helper.remove_facet_params(field, item)).to eq search_state.remove_facet_params(field, item)
92
- end
93
-
94
- context "with source_parameters" do
95
- let(:source_parameters) { parameter_class.new source: 1 }
96
- it 'generates a search state for the source parameters' do
97
- expect(helper.remove_facet_params(field, item, source_parameters)).to include source: 1
98
- end
99
- end
100
- end
101
- end