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,17 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe Blacklight::Solr::Repository do
3
+ RSpec.describe Blacklight::Solr::Repository, api: true do
4
+ subject(:repository) do
5
+ described_class.new blacklight_config
6
+ end
4
7
 
5
8
  let :blacklight_config do
6
9
  CatalogController.blacklight_config.deep_copy
7
10
  end
8
11
 
9
- subject do
10
- Blacklight::Solr::Repository.new blacklight_config
11
- end
12
-
13
12
  let :mock_response do
14
- { response: { docs: [document]}}
13
+ { response: { docs: [document] } }
15
14
  end
16
15
 
17
16
  let :document do
@@ -19,40 +18,53 @@ describe Blacklight::Solr::Repository do
19
18
  end
20
19
 
21
20
  describe "#find" do
22
- it "should use the document-specific solr path" do
21
+ it "uses the document-specific solr path" do
23
22
  blacklight_config.document_solr_path = 'abc'
24
23
  blacklight_config.solr_path = 'xyz'
25
24
  allow(subject.connection).to receive(:send_and_receive).with('abc', anything).and_return(mock_response)
26
25
  expect(subject.find("123")).to be_a_kind_of Blacklight::Solr::Response
27
26
  end
28
27
 
29
- it "should use the default solr path" do
30
- blacklight_config.solr_path = 'xyz'
31
- allow(subject.connection).to receive(:send_and_receive).with('xyz', anything).and_return(mock_response)
32
- expect(subject.find("123")).to be_a_kind_of Blacklight::Solr::Response
33
- end
34
-
35
- it "should use a default :qt param" do
36
- allow(subject.connection).to receive(:send_and_receive).with('select', hash_including(params: { id: '123', qt: 'document'})).and_return(mock_response)
28
+ it "uses a default :qt param" do
29
+ allow(subject.connection).to receive(:send_and_receive).with('get', hash_including(params: hash_including(ids: '123'))).and_return(mock_response)
37
30
  expect(subject.find("123", {})).to be_a_kind_of Blacklight::Solr::Response
38
31
  end
39
32
 
40
- it "should use the provided :qt param" do
41
- blacklight_config.document_solr_request_handler = 'xyz'
42
- allow(subject.connection).to receive(:send_and_receive).with('select', hash_including(params: { id: '123', qt: 'abc'})).and_return(mock_response)
43
- expect(subject.find("123", {qt: 'abc'})).to be_a_kind_of Blacklight::Solr::Response
33
+ context "without a document solr path configured" do
34
+ before do
35
+ blacklight_config.document_solr_path = nil
36
+ end
37
+
38
+ it "uses the default solr path" do
39
+ blacklight_config.solr_path = 'xyz'
40
+ allow(subject.connection).to receive(:send_and_receive).with('xyz', anything).and_return(mock_response)
41
+ expect(subject.find("123")).to be_a_kind_of Blacklight::Solr::Response
42
+ end
44
43
  end
45
-
46
- it "should use the :qt parameter from the default_document_solr_params" do
47
- blacklight_config.default_document_solr_params[:qt] = 'abc'
48
- blacklight_config.document_solr_request_handler = 'xyz'
49
- allow(subject.connection).to receive(:send_and_receive).with('select', hash_including(params: { id: '123', qt: 'abc'})).and_return(mock_response)
50
- expect(subject.find("123")).to be_a_kind_of Blacklight::Solr::Response
44
+
45
+ context "with legacy request handler-based configuration" do
46
+ before do
47
+ blacklight_config.document_solr_path = 'select'
48
+ blacklight_config.document_unique_id_param = :id
49
+ end
50
+
51
+ it "uses the provided :qt param" do
52
+ blacklight_config.document_solr_request_handler = 'xyz'
53
+ allow(subject.connection).to receive(:send_and_receive).with('select', hash_including(params: { id: '123', qt: 'abc' })).and_return(mock_response)
54
+ expect(subject.find("123", qt: 'abc')).to be_a_kind_of Blacklight::Solr::Response
55
+ end
56
+
57
+ it "uses the :qt parameter from the default_document_solr_params" do
58
+ blacklight_config.default_document_solr_params[:qt] = 'abc'
59
+ blacklight_config.document_solr_request_handler = 'xyz'
60
+ allow(subject.connection).to receive(:send_and_receive).with('select', hash_including(params: { id: '123', qt: 'abc' })).and_return(mock_response)
61
+ expect(subject.find("123")).to be_a_kind_of Blacklight::Solr::Response
62
+ end
51
63
  end
52
64
 
53
- it "should preserve the class of the incoming params" do
65
+ it "preserves the class of the incoming params" do
54
66
  doc_params = ActiveSupport::HashWithIndifferentAccess.new
55
- allow(subject.connection).to receive(:send_and_receive).with('select', anything).and_return(mock_response)
67
+ allow(subject.connection).to receive(:send_and_receive).with('get', anything).and_return(mock_response)
56
68
  response = subject.find("123", doc_params)
57
69
  expect(response).to be_a_kind_of Blacklight::Solr::Response
58
70
  expect(response.params).to be_a_kind_of ActiveSupport::HashWithIndifferentAccess
@@ -60,34 +72,34 @@ describe Blacklight::Solr::Repository do
60
72
  end
61
73
 
62
74
  describe "#search" do
63
- it "should use the search-specific solr path" do
75
+ it "uses the search-specific solr path" do
64
76
  blacklight_config.solr_path = 'xyz'
65
77
  allow(subject.connection).to receive(:send_and_receive).with('xyz', anything).and_return(mock_response)
66
78
  expect(subject.search({})).to be_a_kind_of Blacklight::Solr::Response
67
79
  end
68
80
 
69
- it "should use the default solr path" do
81
+ it "uses the default solr path" do
70
82
  allow(subject.connection).to receive(:send_and_receive).with('select', anything).and_return(mock_response)
71
83
  expect(subject.search({})).to be_a_kind_of Blacklight::Solr::Response
72
84
  end
73
85
 
74
- it "should use a default :qt param" do
86
+ it "uses a default :qt param" do
75
87
  blacklight_config.qt = 'xyz'
76
- allow(subject.connection).to receive(:send_and_receive).with('select', hash_including(params: { qt: 'xyz'})).and_return(mock_response)
88
+ allow(subject.connection).to receive(:send_and_receive).with('select', hash_including(params: { qt: 'xyz' })).and_return(mock_response)
77
89
  expect(subject.search({})).to be_a_kind_of Blacklight::Solr::Response
78
90
  end
79
91
 
80
- it "should use the provided :qt param" do
92
+ it "uses the provided :qt param" do
81
93
  blacklight_config.qt = 'xyz'
82
- allow(subject.connection).to receive(:send_and_receive).with('select', hash_including(params: { qt: 'abc'})).and_return(mock_response)
83
- expect(subject.search({qt: 'abc'})).to be_a_kind_of Blacklight::Solr::Response
94
+ allow(subject.connection).to receive(:send_and_receive).with('select', hash_including(params: { qt: 'abc' })).and_return(mock_response)
95
+ expect(subject.search(qt: 'abc')).to be_a_kind_of Blacklight::Solr::Response
84
96
  end
85
-
86
- it "should preserve the class of the incoming params" do
97
+
98
+ it "preserves the class of the incoming params" do
87
99
  search_params = ActiveSupport::HashWithIndifferentAccess.new
88
100
  search_params[:q] = "query"
89
101
  allow(subject.connection).to receive(:send_and_receive).with('select', anything).and_return(mock_response)
90
-
102
+
91
103
  response = subject.search(search_params)
92
104
  expect(response).to be_a_kind_of Blacklight::Solr::Response
93
105
  expect(response.params).to be_a_kind_of ActiveSupport::HashWithIndifferentAccess
@@ -97,20 +109,19 @@ describe Blacklight::Solr::Repository do
97
109
  describe "#send_and_receive" do
98
110
  describe "http_method configuration" do
99
111
  describe "using default" do
100
-
101
112
  it "defaults to get" do
102
113
  expect(blacklight_config.http_method).to eq :get
103
114
  allow(subject.connection).to receive(:send_and_receive) do |path, params|
104
115
  expect(path).to eq 'select'
105
116
  expect(params[:method]).to eq :get
106
117
  expect(params[:params]).to include(:q)
107
- end.and_return({'response'=>{'docs'=>[]}})
108
- subject.search(:q => @all_docs_query)
118
+ end.and_return('response' => { 'docs' => [] })
119
+ subject.search(q: @all_docs_query)
109
120
  end
110
121
  end
111
122
 
112
123
  describe "setting to post" do
113
- let (:blacklight_config) {config = Blacklight::Configuration.new; config.http_method=:post; config}
124
+ let (:blacklight_config) { config = Blacklight::Configuration.new; config.http_method = :post; config }
114
125
 
115
126
  it "keep value set to post" do
116
127
  expect(blacklight_config.http_method).to eq :post
@@ -118,21 +129,25 @@ describe Blacklight::Solr::Repository do
118
129
  expect(path).to eq 'select'
119
130
  expect(params[:method]).to eq :post
120
131
  expect(params[:data]).to include(:q)
121
- end.and_return({'response'=>{'docs'=>[]}})
122
- subject.search(:q => @all_docs_query)
132
+ end.and_return('response' => { 'docs' => [] })
133
+ subject.search(q: @all_docs_query)
123
134
  end
124
135
  end
125
136
  end
126
137
  end
127
138
 
128
139
  describe "http_method configuration", integration: true do
129
- let (:blacklight_config) {config = Blacklight::Configuration.new; config.http_method=:post; config}
140
+ let (:blacklight_config) { config = Blacklight::Configuration.new; config.http_method = :post; config }
130
141
 
131
- it "should send a post request to solr and get a response back" do
132
- response = subject.search(:q => @all_docs_query)
142
+ it "sends a post request to solr and get a response back" do
143
+ response = subject.search(q: @all_docs_query)
133
144
  expect(response.docs.length).to be >= 1
134
145
  end
135
146
  end
136
147
 
148
+ describe '#ping' do
149
+ subject { repository.ping }
137
150
 
151
+ it { is_expected.to be true }
152
+ end
138
153
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe Blacklight::Solr::Request do
3
+ RSpec.describe Blacklight::Solr::Request, api: true do
4
4
  before do
5
5
  subject[:qt] = 'hey'
6
6
  subject[:fq] = ["what's up.", "dood"]
@@ -15,23 +15,22 @@ describe Blacklight::Solr::Request do
15
15
  subject['spellcheck'] = "a"
16
16
  subject['spellcheck.q'] = "fleece"
17
17
  subject['f.title_facet.facet.limit'] = "vest"
18
- subject['facet.field'] = []
19
- end
20
- it "should accept valid parameters" do
21
- expect(subject.to_hash).to eq({"defType" => "had",
22
- "f.title_facet.facet.limit" => "vest",
23
- "fq" => ["what's up.", "dood"],
24
- "group" => "I",
25
- "hl" => "I",
26
- "hl.fl" => "wish",
27
- "q" => "what's",
28
- "qt" => "hey",
29
- "rows" => "Man",
30
- "spellcheck" => "a",
31
- "spellcheck.q" => "fleece",
32
- "start" => "on",
33
- "wt" => "going"
34
- })
18
+ subject['facet.field'] = []
35
19
  end
36
20
 
21
+ it "accepts valid parameters" do
22
+ expect(subject.to_hash).to eq("defType" => "had",
23
+ "f.title_facet.facet.limit" => "vest",
24
+ "fq" => ["what's up.", "dood"],
25
+ "group" => "I",
26
+ "hl" => "I",
27
+ "hl.fl" => "wish",
28
+ "q" => "what's",
29
+ "qt" => "hey",
30
+ "rows" => "Man",
31
+ "spellcheck" => "a",
32
+ "spellcheck.q" => "fleece",
33
+ "start" => "on",
34
+ "wt" => "going")
35
+ end
37
36
  end
@@ -1,85 +1,85 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe Blacklight::Solr::Response::Facets do
3
+ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
4
4
  describe Blacklight::Solr::Response::Facets::FacetField do
5
-
6
5
  describe "A field with default options" do
7
6
  subject { Blacklight::Solr::Response::Facets::FacetField.new "my_field", [] }
8
7
 
9
- its(:name) { should eq "my_field" }
10
- its(:limit) { should eq 100 }
11
- its(:sort) { should eq 'count' }
12
- its(:offset) { should eq 0 }
8
+ its(:name) { is_expected.to eq "my_field" }
9
+ its(:limit) { is_expected.to eq 100 }
10
+ its(:sort) { is_expected.to eq 'count' }
11
+ its(:offset) { is_expected.to eq 0 }
13
12
  end
14
13
 
15
14
  describe "A field with additional options" do
16
15
  subject { Blacklight::Solr::Response::Facets::FacetField.new "my_field", [], limit: 15, sort: 'alpha', offset: 23 }
17
16
 
18
- its(:name) { should eq "my_field" }
19
- its(:limit) { should eq 15 }
20
- its(:sort) { should eq 'alpha' }
21
- its(:offset) { should eq 23 }
17
+ its(:name) { is_expected.to eq "my_field" }
18
+ its(:limit) { is_expected.to eq 15 }
19
+ its(:sort) { is_expected.to eq 'alpha' }
20
+ its(:offset) { is_expected.to eq 23 }
22
21
  end
23
22
  end
24
23
 
25
24
  describe "#aggregations" do
25
+ subject { Blacklight::Solr::Response.new({ responseHeader: response_header, facet_counts: { facet_fields: [facet_field] } }, request_params) }
26
+
26
27
  let(:facet_field) { ['my_field', []] }
27
- let(:response_header) { { params: request_params }}
28
- let(:request_params) { Hash.new }
29
- subject { Blacklight::Solr::Response.new({responseHeader: response_header, facet_counts: { facet_fields: [facet_field] }}, request_params) }
28
+ let(:response_header) { { params: request_params } }
29
+ let(:request_params) { {} }
30
30
 
31
31
  describe "#limit" do
32
- it "should extract a field-specific limit value" do
32
+ it "extracts a field-specific limit value" do
33
33
  request_params['f.my_field.facet.limit'] = "10"
34
34
  request_params['facet.limit'] = "15"
35
35
  expect(subject.aggregations['my_field'].limit).to eq 10
36
36
  end
37
37
 
38
- it "should extract a global limit value" do
38
+ it "extracts a global limit value" do
39
39
  request_params['facet.limit'] = "15"
40
40
  expect(subject.aggregations['my_field'].limit).to eq 15
41
41
  end
42
42
 
43
- it "should be the solr default limit if no value is found" do
43
+ it "is the solr default limit if no value is found" do
44
44
  expect(subject.aggregations['my_field'].limit).to eq 100
45
45
  end
46
46
  end
47
47
 
48
48
  describe "#offset" do
49
- it "should extract a field-specific offset value" do
49
+ it "extracts a field-specific offset value" do
50
50
  request_params['f.my_field.facet.offset'] = "10"
51
51
  request_params['facet.offset'] = "15"
52
52
  expect(subject.aggregations['my_field'].offset).to eq 10
53
53
  end
54
54
 
55
- it "should extract a global offset value" do
55
+ it "extracts a global offset value" do
56
56
  request_params['facet.offset'] = "15"
57
57
  expect(subject.aggregations['my_field'].offset).to eq 15
58
58
  end
59
59
 
60
- it "should be nil if no value is found" do
60
+ it "is nil if no value is found" do
61
61
  expect(subject.aggregations['my_field'].offset).to eq 0
62
62
  end
63
63
  end
64
64
 
65
65
  describe "#sort" do
66
- it "should extract a field-specific sort value" do
66
+ it "extracts a field-specific sort value" do
67
67
  request_params['f.my_field.facet.sort'] = "alpha"
68
68
  request_params['facet.sort'] = "index"
69
69
  expect(subject.aggregations['my_field'].sort).to eq 'alpha'
70
70
  end
71
71
 
72
- it "should extract a global sort value" do
72
+ it "extracts a global sort value" do
73
73
  request_params['facet.sort'] = "alpha"
74
74
  expect(subject.aggregations['my_field'].sort).to eq 'alpha'
75
75
  end
76
76
 
77
- it "should default to count if no value is found and the default limit is used" do
77
+ it "defaults to count if no value is found and the default limit is used" do
78
78
  expect(subject.aggregations['my_field'].sort).to eq 'count'
79
79
  expect(subject.aggregations['my_field'].count?).to eq true
80
80
  end
81
-
82
- it "should default to index if no value is found and the limit is unlimited" do
81
+
82
+ it "defaults to index if no value is found and the limit is unlimited" do
83
83
  request_params['facet.limit'] = -1
84
84
  expect(subject.aggregations['my_field'].sort).to eq 'index'
85
85
  expect(subject.aggregations['my_field'].index?).to eq true
@@ -105,6 +105,8 @@ describe Blacklight::Solr::Response::Facets do
105
105
  end
106
106
 
107
107
  context "facet.missing" do
108
+ subject { Blacklight::Solr::Response.new(response, {}) }
109
+
108
110
  let(:response) do
109
111
  {
110
112
  facet_counts: {
@@ -114,10 +116,8 @@ describe Blacklight::Solr::Response::Facets do
114
116
  }
115
117
  }
116
118
  end
117
-
118
- subject { Blacklight::Solr::Response.new(response, {}) }
119
119
 
120
- it "should mark the facet.missing field with a human-readable label and fq" do
120
+ it "marks the facet.missing field with a human-readable label and fq" do
121
121
  missing = subject.aggregations["some_field"].items.find { |i| i.value.nil? }
122
122
 
123
123
  expect(missing.label).to eq "[Missing]"
@@ -126,21 +126,23 @@ describe Blacklight::Solr::Response::Facets do
126
126
  end
127
127
 
128
128
  describe "query facets" do
129
- let(:facet_config) {
129
+ subject { Blacklight::Solr::Response.new(response, {}, blacklight_config: blacklight_config) }
130
+
131
+ let(:facet_config) do
130
132
  double(
131
133
  key: 'my_query_facet_field',
132
- :query => {
133
- 'a_simple_query' => { :fq => 'field:search', :label => 'A Human Readable label'},
134
- 'another_query' => { :fq => 'field:different_search', :label => 'Label'},
135
- 'without_results' => { :fq => 'field:without_results', :label => 'No results for this facet'}
136
- }
134
+ query: {
135
+ 'a_simple_query' => { fq: 'field:search', label: 'A Human Readable label' },
136
+ 'another_query' => { fq: 'field:different_search', label: 'Label' },
137
+ 'without_results' => { fq: 'field:without_results', label: 'No results for this facet' }
138
+ }
137
139
  )
138
- }
140
+ end
139
141
 
140
- let(:blacklight_config) { double(facet_fields: { 'my_query_facet_field' => facet_config } )}
142
+ let(:blacklight_config) { double(facet_fields: { 'my_query_facet_field' => facet_config }) }
141
143
 
142
144
  let(:response) do
143
- {
145
+ {
144
146
  facet_counts: {
145
147
  facet_queries: {
146
148
  'field:search' => 10,
@@ -152,16 +154,14 @@ describe Blacklight::Solr::Response::Facets do
152
154
  }
153
155
  end
154
156
 
155
- subject { Blacklight::Solr::Response.new(response, {}, blacklight_config: blacklight_config) }
156
-
157
- it"should convert the query facets into a double RSolr FacetField" do
157
+ it"converts the query facets into a double RSolr FacetField" do
158
158
  field = subject.aggregations['my_query_facet_field']
159
159
 
160
160
  expect(field).to be_a_kind_of Blacklight::Solr::Response::Facets::FacetField
161
161
 
162
- expect(field.name).to eq'my_query_facet_field'
162
+ expect(field.name).to eq 'my_query_facet_field'
163
163
  expect(field.items.size).to eq 2
164
- expect(field.items.map { |x| x.value }).to_not include 'field:not_appearing_in_the_config'
164
+ expect(field.items.map(&:value)).not_to include 'field:not_appearing_in_the_config'
165
165
 
166
166
  facet_item = field.items.find { |x| x.value == 'a_simple_query' }
167
167
 
@@ -172,31 +172,32 @@ describe Blacklight::Solr::Response::Facets do
172
172
  end
173
173
 
174
174
  describe "pivot facets" do
175
- let(:facet_config) {
176
- double(key: 'my_pivot_facet_field', query: nil, pivot: ['field_a', 'field_b'])
177
- }
178
-
179
- let(:blacklight_config) { double(facet_fields: { 'my_pivot_facet_field' => facet_config } )}
175
+ subject { Blacklight::Solr::Response.new(response, {}, blacklight_config: blacklight_config) }
176
+
177
+ let(:facet_config) do
178
+ double(key: 'my_pivot_facet_field', query: nil, pivot: %w[field_a field_b])
179
+ end
180
+
181
+ let(:blacklight_config) { double(facet_fields: { 'my_pivot_facet_field' => facet_config }) }
180
182
 
181
183
  let(:response) do
182
- {
184
+ {
183
185
  facet_counts: {
184
- facet_pivot: {
186
+ facet_pivot: {
185
187
  'field_a,field_b' => [
186
188
  {
187
- field: 'field_a',
188
- value: 'a',
189
- count: 10,
190
- pivot: [{field: 'field_b', value: 'b', count: 2}]
191
- }]
189
+ field: 'field_a',
190
+ value: 'a',
191
+ count: 10,
192
+ pivot: [{ field: 'field_b', value: 'b', count: 2 }]
193
+ }
194
+ ]
192
195
  }
193
196
  }
194
197
  }
195
198
  end
196
199
 
197
- subject { Blacklight::Solr::Response.new(response, {}, blacklight_config: blacklight_config) }
198
-
199
- it "should convert the pivot facet into a double RSolr FacetField" do
200
+ it "converts the pivot facet into a double RSolr FacetField" do
200
201
  field = subject.aggregations['my_pivot_facet_field']
201
202
 
202
203
  expect(field).to be_a_kind_of Blacklight::Solr::Response::Facets::FacetField
@@ -208,8 +209,7 @@ describe Blacklight::Solr::Response::Facets do
208
209
  expect(field.items.first).to respond_to(:items)
209
210
 
210
211
  expect(field.items.first.items.size).to eq 1
211
- expect(field.items.first.items.first.fq).to eq({ 'field_a' => 'a' })
212
+ expect(field.items.first.items.first.fq).to eq('field_a' => 'a')
212
213
  end
213
214
  end
214
-
215
215
  end
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require "spec_helper"
3
3
 
4
- describe Blacklight::Solr::Response::GroupResponse do
5
-
4
+ RSpec.describe Blacklight::Solr::Response::GroupResponse, api: true do
6
5
  let(:response) do
7
6
  create_response(sample_response)
8
7
  end
@@ -12,7 +11,7 @@ describe Blacklight::Solr::Response::GroupResponse do
12
11
  end
13
12
 
14
13
  describe "groups" do
15
- it "should return an array of Groups" do
14
+ it "returns an array of Groups" do
16
15
  expect(response.grouped).to be_a Array
17
16
 
18
17
  expect(group.groups).to have(2).items
@@ -20,8 +19,7 @@ describe Blacklight::Solr::Response::GroupResponse do
20
19
  expect(group).to be_a Blacklight::Solr::Response::Group
21
20
  end
22
21
  end
23
- it "should include a list of SolrDocuments" do
24
-
22
+ it "includes a list of SolrDocuments" do
25
23
  group.groups.each do |group|
26
24
  group.docs.each do |doc|
27
25
  expect(doc).to be_a SolrDocument
@@ -29,9 +27,9 @@ describe Blacklight::Solr::Response::GroupResponse do
29
27
  end
30
28
  end
31
29
  end
32
-
30
+
33
31
  describe "total" do
34
- it "should return the ngroups value" do
32
+ it "returns the ngroups value" do
35
33
  expect(group.total).to eq 3
36
34
  end
37
35
  end
@@ -41,25 +39,25 @@ describe Blacklight::Solr::Response::GroupResponse do
41
39
  expect(group).to respond_to :aggregations
42
40
  end
43
41
  end
44
-
42
+
45
43
  describe "rows" do
46
- it "should get the rows from the response" do
44
+ it "gets the rows from the response" do
47
45
  expect(group.rows).to eq 3
48
46
  end
49
47
  end
50
48
 
51
49
  describe "group_field" do
52
- it "should be the field name for the current group" do
50
+ it "is the field name for the current group" do
53
51
  expect(group.group_field).to eq "result_group_ssi"
54
52
  end
55
53
  end
56
54
 
57
55
  describe "group_limit" do
58
- it "should be the number of documents to return for a group" do
56
+ it "is the number of documents to return for a group" do
59
57
  expect(group.group_limit).to eq 5
60
58
  end
61
59
  end
62
-
60
+
63
61
  describe "empty?" do
64
62
  it "uses the total from this object" do
65
63
  expect(group.empty?).to be false
@@ -72,14 +70,10 @@ def create_response(response, params = {})
72
70
  end
73
71
 
74
72
  def sample_response
75
- {"responseHeader" => {"params" =>{"rows" => 3, "group.limit" => 5}},
76
- "grouped" =>
77
- {'result_group_ssi' =>
78
- {'groups' => [{'groupValue'=>"Group 1", 'doclist'=>{'numFound'=>2, 'docs'=>[{:id=>1}]}},
79
- {'groupValue'=>"Group 2", 'doclist'=>{'numFound'=>3, 'docs'=>[{:id=>2}, :id=>3]}}
80
- ],
81
- 'ngroups' => "3"
82
- }
83
- }
84
- }
73
+ { "responseHeader" => { "params" => { "rows" => 3, "group.limit" => 5 } },
74
+ "grouped" =>
75
+ { 'result_group_ssi' =>
76
+ { 'groups' => [{ 'groupValue' => "Group 1", 'doclist' => { 'numFound' => 2, 'docs' => [{ id: 1 }] } },
77
+ { 'groupValue' => "Group 2", 'doclist' => { 'numFound' => 3, 'docs' => [{ id: 2 }, id: 3] } }],
78
+ 'ngroups' => "3" } } }
85
79
  end