blacklight 6.24.0 → 7.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.npmignore +23 -0
  4. data/.rubocop.yml +15 -3
  5. data/.rubocop_todo.yml +242 -379
  6. data/.solr_wrapper.yml +1 -1
  7. data/.travis.yml +20 -24
  8. data/Gemfile +1 -4
  9. data/README.md +21 -4
  10. data/Rakefile +1 -2
  11. data/VERSION +1 -1
  12. data/app/assets/images/blacklight/list.svg +1 -0
  13. data/app/assets/images/blacklight/search.svg +1 -0
  14. data/app/assets/javascripts/blacklight/blacklight.js +496 -56
  15. data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
  16. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +3 -1
  17. data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
  18. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
  19. data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
  20. data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
  21. data/app/assets/stylesheets/blacklight/_facets.scss +74 -92
  22. data/app/assets/stylesheets/blacklight/_header.scss +35 -48
  23. data/app/assets/stylesheets/blacklight/_icons.scss +29 -0
  24. data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
  25. data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
  26. data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
  27. data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
  28. data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
  29. data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
  30. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
  31. data/app/builders/blacklight/action_builder.rb +56 -0
  32. data/app/controllers/bookmarks_controller.rb +2 -2
  33. data/app/controllers/catalog_controller.rb +2 -2
  34. data/app/controllers/concerns/blacklight/base.rb +0 -33
  35. data/app/controllers/concerns/blacklight/bookmarks.rb +20 -37
  36. data/app/controllers/concerns/blacklight/catalog.rb +254 -213
  37. data/app/controllers/concerns/blacklight/controller.rb +117 -133
  38. data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
  39. data/app/controllers/concerns/blacklight/search_context.rb +10 -14
  40. data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
  41. data/app/controllers/concerns/blacklight/token_based_user.rb +6 -10
  42. data/app/helpers/blacklight/blacklight_helper_behavior.rb +32 -118
  43. data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
  44. data/app/helpers/blacklight/component_helper_behavior.rb +19 -19
  45. data/app/helpers/blacklight/configuration_helper_behavior.rb +25 -54
  46. data/app/helpers/blacklight/facets_helper_behavior.rb +40 -39
  47. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
  48. data/app/helpers/blacklight/icon_helper_behavior.rb +16 -0
  49. data/app/helpers/blacklight/layout_helper_behavior.rb +3 -10
  50. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +6 -6
  51. data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
  52. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +18 -11
  53. data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
  54. data/app/helpers/blacklight/url_helper_behavior.rb +21 -27
  55. data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
  56. data/app/javascript/blacklight/autofocus.js +20 -0
  57. data/app/javascript/blacklight/bookmark_toggle.js +25 -0
  58. data/app/javascript/blacklight/checkbox_submit.js +133 -0
  59. data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
  60. data/app/javascript/blacklight/core.js +39 -0
  61. data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
  62. data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +63 -63
  63. data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -2
  64. data/app/models/blacklight/facet_paginator.rb +3 -3
  65. data/app/models/blacklight/icon.rb +53 -0
  66. data/app/models/blacklight/solr/facet_paginator.rb +3 -3
  67. data/app/models/blacklight/suggest_search.rb +15 -4
  68. data/app/models/bookmark.rb +4 -9
  69. data/app/models/concerns/blacklight/configurable.rb +13 -13
  70. data/app/models/concerns/blacklight/document.rb +8 -42
  71. data/app/models/concerns/blacklight/document/active_model_shim.rb +8 -11
  72. data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
  73. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
  74. data/app/models/concerns/blacklight/document/email.rb +1 -1
  75. data/app/models/concerns/blacklight/document/extensions.rb +5 -5
  76. data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
  77. data/app/models/concerns/blacklight/document/sms.rb +1 -1
  78. data/app/models/concerns/blacklight/solr/document.rb +7 -8
  79. data/app/models/concerns/blacklight/suggest/response.rb +3 -5
  80. data/app/models/concerns/blacklight/user.rb +6 -6
  81. data/app/models/record_mailer.rb +5 -6
  82. data/app/models/search.rb +4 -7
  83. data/app/presenters/blacklight/field_presenter.rb +5 -5
  84. data/app/presenters/blacklight/index_presenter.rb +34 -71
  85. data/app/presenters/blacklight/json_presenter.rb +7 -4
  86. data/app/presenters/blacklight/link_alternate_presenter.rb +1 -1
  87. data/app/presenters/blacklight/rendering/abstract_step.rb +5 -5
  88. data/app/presenters/blacklight/rendering/helper_method.rb +8 -8
  89. data/app/presenters/blacklight/rendering/join.rb +3 -3
  90. data/app/presenters/blacklight/rendering/link_to_facet.rb +19 -19
  91. data/app/presenters/blacklight/rendering/microdata.rb +3 -3
  92. data/app/presenters/blacklight/rendering/pipeline.rb +5 -5
  93. data/app/presenters/blacklight/search_bar_presenter.rb +37 -0
  94. data/app/presenters/blacklight/show_presenter.rb +20 -69
  95. data/app/presenters/blacklight/thumbnail_presenter.rb +72 -0
  96. data/app/services/blacklight/document_factory.rb +11 -0
  97. data/app/services/blacklight/field_retriever.rb +24 -24
  98. data/app/services/blacklight/search_service.rb +154 -0
  99. data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
  100. data/app/views/blacklight/nav/_search_history.html.erb +1 -1
  101. data/app/views/bookmarks/_tools.html.erb +2 -2
  102. data/app/views/bookmarks/index.html.erb +2 -2
  103. data/app/views/catalog/_bookmark_control.html.erb +26 -10
  104. data/app/views/catalog/_citation.html.erb +18 -23
  105. data/app/views/catalog/_constraints.html.erb +5 -8
  106. data/app/views/catalog/_constraints_element.html.erb +6 -6
  107. data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +2 -2
  108. data/app/views/catalog/_document.html.erb +5 -3
  109. data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +0 -0
  110. data/app/views/catalog/_document_action.html.erb +2 -1
  111. data/app/views/catalog/_email_form.html.erb +8 -4
  112. data/app/views/catalog/_facet_index_navigation.html.erb +3 -3
  113. data/app/views/catalog/_facet_layout.html.erb +5 -7
  114. data/app/views/catalog/_facet_limit.html.erb +3 -2
  115. data/app/views/catalog/_facet_pagination.html.erb +10 -10
  116. data/app/views/catalog/_facet_pivot.html.erb +2 -2
  117. data/app/views/catalog/_facets.html.erb +8 -12
  118. data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +0 -0
  119. data/app/views/catalog/_home_text.html.erb +32 -36
  120. data/app/views/catalog/_index.html.erb +12 -0
  121. data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +2 -2
  122. data/app/views/catalog/_per_page_widget.html.erb +6 -7
  123. data/app/views/catalog/_previous_next_doc.html.erb +6 -14
  124. data/app/views/catalog/_search_form.html.erb +12 -8
  125. data/app/views/catalog/_search_header.html.erb +0 -3
  126. data/app/views/catalog/_search_results.html.erb +4 -0
  127. data/app/views/catalog/_show.html.erb +10 -0
  128. data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
  129. data/app/views/catalog/_show_main_content.html.erb +4 -4
  130. data/app/views/catalog/_show_sidebar.html.erb +3 -3
  131. data/app/views/catalog/_show_tools.html.erb +9 -11
  132. data/app/views/catalog/_sms_form.html.erb +8 -4
  133. data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
  134. data/app/views/catalog/_sort_widget.html.erb +7 -7
  135. data/app/views/catalog/_thumbnail.html.erb +5 -0
  136. data/app/views/catalog/_view_type_group.html.erb +2 -2
  137. data/app/views/catalog/citation.html.erb +1 -1
  138. data/app/views/catalog/citation.js.erb +9 -1
  139. data/app/views/catalog/email.html.erb +5 -5
  140. data/app/views/catalog/email_success.html.erb +11 -9
  141. data/app/views/catalog/facet.html.erb +5 -6
  142. data/app/views/catalog/index.atom.builder +10 -15
  143. data/app/views/catalog/index.html.erb +9 -11
  144. data/app/views/catalog/index.json.jbuilder +65 -3
  145. data/app/views/catalog/index.rss.builder +5 -5
  146. data/app/views/catalog/opensearch.xml.builder +10 -10
  147. data/app/views/catalog/show.html.erb +11 -6
  148. data/app/views/catalog/sms.html.erb +2 -3
  149. data/app/views/catalog/sms_success.html.erb +11 -10
  150. data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
  151. data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
  152. data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
  153. data/app/views/kaminari/blacklight/_next_page.html.erb +4 -4
  154. data/app/views/kaminari/blacklight/_page.html.erb +3 -3
  155. data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
  156. data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
  157. data/app/views/layouts/blacklight.html.erb +14 -41
  158. data/app/views/layouts/blacklight/base.html.erb +43 -0
  159. data/app/views/layouts/catalog_result.html.erb +11 -0
  160. data/app/views/search_history/index.html.erb +16 -21
  161. data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
  162. data/app/views/shared/_header_navbar.html.erb +8 -13
  163. data/app/views/shared/_modal.html.erb +6 -0
  164. data/app/views/shared/_user_util_links.html.erb +22 -0
  165. data/blacklight.gemspec +10 -11
  166. data/config/locales/blacklight.de.yml +0 -30
  167. data/config/locales/blacklight.en.yml +1 -27
  168. data/config/locales/blacklight.es.yml +0 -30
  169. data/config/locales/blacklight.fr.yml +0 -30
  170. data/config/locales/blacklight.hu.yml +210 -0
  171. data/config/locales/blacklight.it.yml +0 -30
  172. data/config/locales/blacklight.nl.yml +210 -0
  173. data/config/locales/blacklight.pt-BR.yml +6 -32
  174. data/config/locales/blacklight.sq.yml +1 -28
  175. data/config/locales/blacklight.zh.yml +0 -25
  176. data/config/routes.rb +3 -10
  177. data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
  178. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
  179. data/lib/blacklight.rb +4 -5
  180. data/lib/blacklight/abstract_repository.rb +9 -21
  181. data/lib/blacklight/configuration.rb +82 -89
  182. data/lib/blacklight/configuration/context.rb +1 -1
  183. data/lib/blacklight/configuration/facet_field.rb +16 -9
  184. data/lib/blacklight/configuration/field.rb +32 -3
  185. data/lib/blacklight/configuration/fields.rb +41 -48
  186. data/lib/blacklight/configuration/search_field.rb +2 -2
  187. data/lib/blacklight/configuration/sort_field.rb +2 -2
  188. data/lib/blacklight/configuration/view_config.rb +4 -0
  189. data/lib/blacklight/engine.rb +6 -10
  190. data/lib/blacklight/exceptions.rb +4 -7
  191. data/lib/blacklight/nested_open_struct_with_hash_access.rb +107 -0
  192. data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
  193. data/lib/blacklight/parameters.rb +1 -1
  194. data/lib/blacklight/routes/searchable.rb +1 -0
  195. data/lib/blacklight/search_builder.rb +26 -35
  196. data/lib/blacklight/search_state.rb +8 -8
  197. data/lib/blacklight/solr/repository.rb +3 -36
  198. data/lib/blacklight/solr/request.rb +1 -1
  199. data/lib/blacklight/solr/response.rb +29 -30
  200. data/lib/blacklight/solr/response/facets.rb +29 -31
  201. data/lib/blacklight/solr/response/group.rb +3 -3
  202. data/lib/blacklight/solr/response/group_response.rb +1 -1
  203. data/lib/blacklight/solr/response/more_like_this.rb +2 -2
  204. data/lib/blacklight/solr/response/response.rb +2 -2
  205. data/lib/blacklight/solr/response/spelling.rb +3 -3
  206. data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
  207. data/lib/blacklight/version.rb +1 -1
  208. data/lib/generators/blacklight/assets_generator.rb +8 -8
  209. data/lib/generators/blacklight/controller_generator.rb +4 -5
  210. data/lib/generators/blacklight/document_generator.rb +1 -1
  211. data/lib/generators/blacklight/install_generator.rb +18 -21
  212. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  213. data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +4 -6
  214. data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
  215. data/lib/generators/blacklight/templates/blacklight.scss +0 -2
  216. data/lib/generators/blacklight/templates/catalog_controller.rb +52 -51
  217. data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
  218. data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
  219. data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
  220. data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
  221. data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
  222. data/lib/generators/blacklight/templates/solr/conf/schema.xml +390 -0
  223. data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
  224. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
  225. data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
  226. data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
  227. data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
  228. data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
  229. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
  230. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
  231. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
  232. data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
  233. data/lib/generators/blacklight/test_support_generator.rb +10 -10
  234. data/lib/generators/blacklight/user_generator.rb +3 -6
  235. data/lib/railties/blacklight.rake +19 -14
  236. data/package-lock.json +2057 -0
  237. data/package.json +28 -0
  238. data/spec/controllers/alternate_controller_spec.rb +1 -1
  239. data/spec/controllers/application_controller_spec.rb +1 -1
  240. data/spec/controllers/blacklight/base_spec.rb +1 -1
  241. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
  242. data/spec/controllers/blacklight/facet_spec.rb +1 -1
  243. data/spec/controllers/blacklight/search_fields_spec.rb +1 -13
  244. data/spec/controllers/bookmarks_controller_spec.rb +1 -36
  245. data/spec/controllers/catalog_controller_spec.rb +153 -53
  246. data/spec/controllers/search_history_controller_spec.rb +2 -2
  247. data/spec/features/alternate_controller_spec.rb +1 -1
  248. data/spec/features/autocomplete_spec.rb +2 -2
  249. data/spec/features/bookmarks_spec.rb +10 -10
  250. data/spec/features/did_you_mean_spec.rb +3 -9
  251. data/spec/features/facets_spec.rb +11 -11
  252. data/spec/features/record_view_spec.rb +1 -6
  253. data/spec/features/search_context_spec.rb +2 -2
  254. data/spec/features/search_filters_spec.rb +41 -41
  255. data/spec/features/search_formats_spec.rb +1 -1
  256. data/spec/features/search_history_spec.rb +1 -26
  257. data/spec/features/search_pagination_spec.rb +1 -1
  258. data/spec/features/search_results_spec.rb +3 -4
  259. data/spec/features/search_sort_spec.rb +2 -2
  260. data/spec/features/search_spec.rb +5 -10
  261. data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
  262. data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +70 -65
  263. data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +7 -8
  264. data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +1 -1
  265. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
  266. data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -15
  267. data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +2 -3
  268. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +80 -0
  269. data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +9 -9
  270. data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +4 -2
  271. data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +11 -15
  272. data/spec/helpers/blacklight_helper_spec.rb +36 -141
  273. data/spec/helpers/catalog_helper_spec.rb +37 -56
  274. data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +3 -3
  275. data/spec/lib/blacklight/configuration/facet_field_spec.rb +11 -0
  276. data/spec/lib/blacklight/configuration/field_spec.rb +12 -0
  277. data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
  278. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +153 -0
  279. data/spec/lib/blacklight/parameters_spec.rb +1 -1
  280. data/spec/lib/blacklight/search_state_spec.rb +2 -2
  281. data/spec/lib/blacklight_spec.rb +1 -1
  282. data/spec/lib/tasks/blacklight_task_spec.rb +1 -1
  283. data/spec/models/blacklight/configurable_spec.rb +15 -16
  284. data/spec/models/blacklight/configuration/context_spec.rb +1 -1
  285. data/spec/models/blacklight/configuration_spec.rb +146 -135
  286. data/spec/models/blacklight/document/active_model_shim_spec.rb +11 -1
  287. data/spec/models/blacklight/document/cache_key_spec.rb +1 -1
  288. data/spec/models/blacklight/document/dublin_core_spec.rb +5 -5
  289. data/spec/models/blacklight/document/email_spec.rb +3 -3
  290. data/spec/models/blacklight/document/sms_spec.rb +3 -3
  291. data/spec/models/blacklight/document_spec.rb +3 -16
  292. data/spec/models/blacklight/facet_paginator_spec.rb +1 -1
  293. data/spec/models/blacklight/icon_spec.rb +34 -0
  294. data/spec/models/blacklight/search_builder_spec.rb +33 -27
  295. data/spec/models/blacklight/solr/document_spec.rb +18 -7
  296. data/spec/models/blacklight/solr/facet_paginator_spec.rb +1 -1
  297. data/spec/models/blacklight/solr/repository_spec.rb +32 -27
  298. data/spec/models/blacklight/solr/request_spec.rb +1 -1
  299. data/spec/models/blacklight/solr/response/facets_spec.rb +1 -1
  300. data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -1
  301. data/spec/models/blacklight/solr/response/group_spec.rb +1 -1
  302. data/spec/models/blacklight/solr/response_spec.rb +9 -6
  303. data/spec/models/blacklight/solr/search_builder_spec.rb +35 -48
  304. data/spec/models/blacklight/suggest/response_spec.rb +4 -5
  305. data/spec/models/blacklight/suggest_search_spec.rb +14 -7
  306. data/spec/models/blacklight/user_spec.rb +1 -1
  307. data/spec/models/bookmark_spec.rb +1 -1
  308. data/spec/models/record_mailer_spec.rb +2 -2
  309. data/spec/models/search_spec.rb +1 -1
  310. data/spec/models/solr_document_spec.rb +3 -3
  311. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +72 -0
  312. data/spec/presenters/index_presenter_spec.rb +70 -143
  313. data/spec/presenters/pipeline_spec.rb +4 -4
  314. data/spec/presenters/show_presenter_spec.rb +83 -145
  315. data/spec/presenters/thumbnail_presenter_spec.rb +171 -0
  316. data/spec/routing/catalog_routing_spec.rb +1 -17
  317. data/spec/services/blacklight/search_service_spec.rb +446 -0
  318. data/spec/spec_helper.rb +22 -9
  319. data/spec/test_app_templates/Gemfile.extra +2 -5
  320. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  321. data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -3
  322. data/spec/views/catalog/_constraints_element.html.erb_spec.rb +8 -8
  323. data/spec/views/catalog/_document.html.erb_spec.rb +7 -7
  324. data/spec/views/catalog/_document_list.html.erb_spec.rb +1 -1
  325. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
  326. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
  327. data/spec/views/catalog/_facets.html.erb_spec.rb +2 -2
  328. data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +1 -1
  329. data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +4 -4
  330. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +4 -27
  331. data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
  332. data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +1 -1
  333. data/spec/views/catalog/_show_sidebar.erb_spec.rb +3 -3
  334. data/spec/views/catalog/_show_tools.html.erb_spec.rb +3 -3
  335. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -1
  336. data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +3 -3
  337. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +5 -1
  338. data/spec/views/catalog/email_success.html.erb_spec.rb +9 -0
  339. data/spec/views/catalog/facet.html.erb_spec.rb +1 -1
  340. data/spec/views/catalog/facet.json.jbuilder_spec.rb +1 -1
  341. data/spec/views/catalog/index.atom.builder_spec.rb +2 -2
  342. data/spec/views/catalog/index.html.erb_spec.rb +4 -7
  343. data/spec/views/catalog/index.json.jbuilder_spec.rb +66 -21
  344. data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
  345. data/spec/views/catalog/show.html.erb_spec.rb +2 -2
  346. data/spec/views/catalog/sms_success.html.erb_spec.rb +9 -0
  347. data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -4
  348. data/tasks/blacklight.rake +10 -8
  349. data/template.demo.rb +1 -11
  350. metadata +171 -189
  351. data/app/assets/javascripts/blacklight/autofocus.js +0 -16
  352. data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
  353. data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -139
  354. data/app/assets/javascripts/blacklight/core.js +0 -30
  355. data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
  356. data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
  357. data/app/controllers/concerns/blacklight/search_helper.rb +0 -161
  358. data/app/controllers/concerns/blacklight/suggest.rb +0 -25
  359. data/app/controllers/saved_searches_controller.rb +0 -4
  360. data/app/controllers/suggest_controller.rb +0 -4
  361. data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
  362. data/app/helpers/blacklight/render_partials_helper.rb +0 -205
  363. data/app/helpers/blacklight_configuration_helper.rb +0 -4
  364. data/app/helpers/blacklight_url_helper.rb +0 -4
  365. data/app/helpers/component_helper.rb +0 -4
  366. data/app/helpers/facets_helper.rb +0 -4
  367. data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
  368. data/app/helpers/layout_helper.rb +0 -4
  369. data/app/helpers/render_constraints_helper.rb +0 -4
  370. data/app/helpers/search_history_constraints_helper.rb +0 -4
  371. data/app/helpers/suggest_helper.rb +0 -4
  372. data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
  373. data/app/presenters/blacklight/document_presenter.rb +0 -153
  374. data/app/views/_user_util_links.html.erb +0 -26
  375. data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
  376. data/app/views/catalog/_index_default.html.erb +0 -12
  377. data/app/views/catalog/_show_default.html.erb +0 -10
  378. data/app/views/catalog/_thumbnail_default.html.erb +0 -5
  379. data/app/views/saved_searches/index.html.erb +0 -32
  380. data/app/views/shared/_ajax_modal.html.erb +0 -6
  381. data/lib/blacklight/utils.rb +0 -183
  382. data/lib/generators/blacklight/solr4_generator.rb +0 -31
  383. data/solr/conf/schema.xml +0 -627
  384. data/solr/conf/solrconfig.xml +0 -411
  385. data/spec/controllers/blacklight/search_helper_spec.rb +0 -489
  386. data/spec/controllers/saved_searches_controller_spec.rb +0 -32
  387. data/spec/controllers/suggest_controller_spec.rb +0 -17
  388. data/spec/features/saved_searches_spec.rb +0 -47
  389. data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
  390. data/spec/lib/blacklight/utils_spec.rb +0 -167
  391. data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
  392. data/spec/presenters/document_presenter_spec.rb +0 -438
  393. data/spec/support/backport_test.rb +0 -14
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'generators/blacklight/solr5_generator'
2
+ require 'generators/blacklight/solr_generator'
3
3
 
4
- describe Blacklight::Solr5Generator do
4
+ RSpec.describe Blacklight::SolrGenerator do
5
5
  let(:destination) { Dir.mktmpdir }
6
6
 
7
7
  describe "#solr_wrapper_config" do
@@ -57,4 +57,4 @@ describe Blacklight::Solr5Generator do
57
57
  end
58
58
  end
59
59
  end
60
- end
60
+ end
@@ -0,0 +1,11 @@
1
+ RSpec.describe Blacklight::Configuration::FacetField do
2
+ describe 'link_to_search' do
3
+ subject { described_class.new(link_to_search: true) }
4
+
5
+ it 'is deprecated' do
6
+ expect(Deprecation).to receive(:warn)
7
+ expect(subject.normalize!)
8
+ expect(subject.link_to_facet).to eq true
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ RSpec.describe Blacklight::Configuration::Field do
2
+ subject { described_class.new(key: key, label: label) }
3
+ let(:key) { 'some_key' }
4
+ let(:label) { 'some label' }
5
+
6
+ describe '#display_label' do
7
+ it "looks up the label to display for the given document and field" do
8
+ allow(I18n).to receive(:t).with(:"blacklight.search.fields.my_context.some_key", default: [:"blacklight.search.fields.some_key", label, subject.default_label]).and_return('x')
9
+ expect(subject.display_label('my_context')).to eq 'x'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Blacklight::NestedOpenStructWithHashAccess do
4
+ describe "#deep_dup" do
5
+ it "preserves the current class" do
6
+ expect(described_class.new(described_class).deep_dup).to be_a_kind_of described_class
7
+ end
8
+
9
+ it "preserves the default proc" do
10
+ nested = described_class.new Hash
11
+
12
+ copy = nested.deep_dup
13
+ copy.a[:b] = 1
14
+ expect(copy.a[:b]).to eq 1
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,153 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Blacklight::OpenStructWithHashAccess do
4
+ it "provides hash-like accessors for OpenStruct data" do
5
+ a = described_class.new :foo => :bar, :baz => 1
6
+
7
+ expect(a[:foo]).to eq :bar
8
+ expect(a[:baz]).to eq 1
9
+ expect(a[:asdf]).to be_nil
10
+ end
11
+
12
+ it "provides hash-like writers for OpenStruct data" do
13
+ a = described_class.new :foo => :bar, :baz => 1
14
+
15
+ a[:asdf] = 'qwerty'
16
+ expect(a.asdf).to eq 'qwerty'
17
+
18
+ end
19
+
20
+ it "treats symbols and strings interchangeably in hash access" do
21
+ h = described_class.new
22
+
23
+ h["string"] = "value"
24
+ expect(h[:string]).to eq "value"
25
+ expect(h.string).to eq "value"
26
+
27
+ h[:symbol] = "value"
28
+ expect(h["symbol"]).to eq "value"
29
+ expect(h.symbol).to eq "value"
30
+ end
31
+
32
+ describe "internal hash table" do
33
+ before do
34
+ @h = described_class.new
35
+ @h[:a] = 1
36
+ @h[:b] = 2
37
+ end
38
+
39
+ it "exposes the internal hash table" do
40
+ expect(@h.to_h).to be_a_kind_of(Hash)
41
+ expect(@h.to_h[:a]).to eq 1
42
+ end
43
+
44
+ it "exposes keys" do
45
+ expect(@h.keys).to include(:a, :b)
46
+ end
47
+
48
+ end
49
+
50
+ describe "#key?" do
51
+ subject do
52
+ h = described_class.new
53
+ h[:a] = 1
54
+ h[:b] = 2
55
+ h
56
+ end
57
+
58
+ it "is true if the key exists" do
59
+ expect(subject.key? :a).to eq true
60
+ end
61
+
62
+ it "is false if the key does not exist" do
63
+ expect(subject.key? :c).to eq false
64
+ end
65
+ end
66
+
67
+ describe "#replace" do
68
+ subject { described_class.new a: 1 }
69
+
70
+ it "can use #replace to reorder the hash" do
71
+ subject.replace b: 1
72
+ expect(subject.b).to eq 1
73
+ end
74
+ end
75
+
76
+ describe "#sort_by" do
77
+ subject { described_class.new c: 3, b:1, a: 2 }
78
+
79
+ it "sorts the underlying hash" do
80
+ sorted = subject.sort_by { |k,v| v }
81
+ expect(sorted.keys).to match_array [:b, :a, :c]
82
+ end
83
+ end
84
+
85
+ describe "#sort_by!" do
86
+ subject { described_class.new c: 3, b:1, a: 2 }
87
+
88
+ it "sorts the underlying hash" do
89
+ subject.sort_by! { |k,v| v }
90
+ expect(subject.keys).to match_array [:b, :a, :c]
91
+ end
92
+ end
93
+
94
+ describe "#merge" do
95
+
96
+ before do
97
+ @h = described_class.new
98
+ @h[:a] = 1
99
+ @h[:b] = 2
100
+ end
101
+
102
+ it "merges the object with a hash" do
103
+ expect(@h.merge(:a => 'a')[:a]).to eq 'a'
104
+ end
105
+
106
+ it "merges the object with another struct" do
107
+ expect(@h.merge(described_class.new(:a => 'a'))[:a]).to eq 'a'
108
+ end
109
+ end
110
+
111
+
112
+ describe "#merge!" do
113
+
114
+ before do
115
+ @h = described_class.new
116
+ @h[:a] = 1
117
+ @h[:b] = 2
118
+ end
119
+
120
+ it "merges the object with a hash" do
121
+ @h.merge!(:a => 'a')
122
+ expect(@h[:a]).to eq 'a'
123
+ end
124
+
125
+ it "merges the object with another struct" do
126
+ @h.merge!(described_class.new(:a => 'a'))
127
+ expect(@h[:a]).to eq 'a'
128
+ end
129
+ end
130
+
131
+ describe "#to_json" do
132
+ subject { described_class.new a: 1, b: 2}
133
+
134
+ it "serializes as json" do
135
+ expect(subject.to_json).to eq ({a: 1, b:2}).to_json
136
+ end
137
+ end
138
+
139
+ describe "#deep_dup" do
140
+ subject { described_class.new a: 1, b: { c: 1} }
141
+
142
+ it "duplicates nested hashes" do
143
+ copy = subject.deep_dup
144
+ copy.a = 2
145
+ copy.b[:c] = 2
146
+
147
+ expect(subject.a).to eq 1
148
+ expect(subject.b[:c]).to eq 1
149
+ expect(copy.a).to eq 2
150
+ expect(copy.b[:c]).to eq 2
151
+ end
152
+ end
153
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe Blacklight::Parameters do
3
+ RSpec.describe Blacklight::Parameters do
4
4
  describe "sanitize_search_params" do
5
5
  subject { described_class.sanitize(params) }
6
6
 
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe Blacklight::SearchState do
3
+ RSpec.describe Blacklight::SearchState do
4
4
  let(:blacklight_config) do
5
5
  Blacklight::Configuration.new.configure do |config|
6
- config.index.title_field = 'title_display'
6
+ config.index.title_field = 'title_tsim'
7
7
  config.index.display_type_field = 'format'
8
8
  end
9
9
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe Blacklight do
3
+ RSpec.describe Blacklight do
4
4
  context 'root' do
5
5
  let(:blroot) { File.expand_path(File.join(__FILE__, '..', '..', '..' )) }
6
6
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require 'rake'
3
3
 
4
- describe "blacklight:delete_old_searches" do
4
+ RSpec.describe "blacklight:delete_old_searches" do
5
5
 
6
6
  before do
7
7
  @rake = Rake::Application.new
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe "Blacklight::Configurable" do
3
+ RSpec.describe "Blacklight::Configurable" do
4
4
 
5
5
  describe "inheritence" do
6
6
  before(:all) do
@@ -17,19 +17,19 @@ describe "Blacklight::Configurable" do
17
17
  end
18
18
  end
19
19
  end
20
- it "inherits the configuration when subclassed" do
20
+ it "inherits the configuration when subclassed" do
21
21
  expect(TestCaseInheritence::Child.blacklight_config.list).to include(1,2,3)
22
22
  end
23
-
24
- it "inherited version should be a deep copy, not original" do
23
+
24
+ it "inherited version should be a deep copy, not original" do
25
25
  expect(TestCaseInheritence::Child.blacklight_config).to_not be(TestCaseInheritence::Parent.blacklight_config)
26
-
26
+
27
27
  TestCaseInheritence::Child.blacklight_config.list << "child_only"
28
28
 
29
29
 
30
- expect(TestCaseInheritence::Child.blacklight_config.list).to include("child_only")
30
+ expect(TestCaseInheritence::Child.blacklight_config.list).to include("child_only")
31
31
  expect(TestCaseInheritence::Parent.blacklight_config.list).to_not include("child_only")
32
- end
32
+ end
33
33
  end
34
34
 
35
35
  describe "default configuration" do
@@ -56,15 +56,15 @@ describe "Blacklight::Configurable" do
56
56
  a.send(:include, Blacklight::Configurable)
57
57
  expect(a.blacklight_config.a).to eq 1
58
58
  end
59
-
59
+
60
60
  it "has configure_blacklight convenience method" do
61
61
  klass = Class.new
62
62
  klass.send(:include, Blacklight::Configurable)
63
-
63
+
64
64
  klass.configure_blacklight do |config|
65
65
  config.my_key = 'value'
66
- end
67
-
66
+ end
67
+
68
68
  expect(klass.blacklight_config.my_key).to eq 'value'
69
69
  end
70
70
 
@@ -75,11 +75,11 @@ describe "Blacklight::Configurable" do
75
75
 
76
76
  instance = klass.new
77
77
  instance.blacklight_config = Blacklight::Configuration.new
78
-
78
+
79
79
  expect(instance.blacklight_config).to_not eq klass.blacklight_config
80
80
  expect(instance.blacklight_config.foo).to be_nil
81
81
  end
82
-
82
+
83
83
  it "allows instance to set it's own config seperate from class" do
84
84
  # this is built into class_attribute; we spec it both to document it,
85
85
  # and to ensure we preserve this feature if we change implementation
@@ -89,7 +89,7 @@ describe "Blacklight::Configurable" do
89
89
  klass.blacklight_config.foo = "bar"
90
90
  klass.blacklight_config.bar = []
91
91
  klass.blacklight_config.bar << "asd"
92
-
92
+
93
93
  instance = klass.new
94
94
  instance.blacklight_config.bar << "123"
95
95
  expect(instance.blacklight_config).to_not eq klass.blacklight_config
@@ -111,7 +111,6 @@ describe "Blacklight::Configurable" do
111
111
  expect(klass.blacklight_config.foo).to eq "bar"
112
112
  expect(klass2.blacklight_config.foo).to eq "asdf"
113
113
  end
114
-
114
+
115
115
  end
116
116
  end
117
-
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe Blacklight::Configuration::Context do
3
+ RSpec.describe Blacklight::Configuration::Context do
4
4
 
5
5
  subject { described_class.new(context) }
6
6
  let(:context) { double }
@@ -1,23 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe "Blacklight::Configuration" do
3
+ RSpec.describe "Blacklight::Configuration" do
4
4
 
5
- before(:each) do
6
- @config = config
5
+ let(:config) do
6
+ Blacklight::Configuration.new
7
7
  end
8
8
 
9
- let(:config) { Blacklight::Configuration.new }
10
-
11
9
  it "supports arbitrary configuration values" do
12
- @config.a = 1
10
+ config.a = 1
13
11
 
14
- expect(@config.a).to eq 1
15
- expect(@config[:a]).to eq 1
12
+ expect(config.a).to eq 1
13
+ expect(config[:a]).to eq 1
16
14
  end
17
15
 
18
16
  describe "initialization" do
19
17
  it "is an OpenStructWithHashAccess" do
20
- expect(@config).to be_a_kind_of Blacklight::OpenStructWithHashAccess
18
+ expect(config).to be_a_kind_of Blacklight::OpenStructWithHashAccess
21
19
  end
22
20
 
23
21
  it "accepts a block for configuration" do
@@ -33,46 +31,45 @@ describe "Blacklight::Configuration" do
33
31
 
34
32
  describe "defaults" do
35
33
  it "has a hash of default rsolr query parameters" do
36
- expect(@config.default_solr_params).to be_a_kind_of Hash
34
+ expect(config.default_solr_params).to be_a_kind_of Hash
37
35
  end
38
36
 
39
37
  it "has openstruct values for show and index parameters" do
40
- expect(@config.show).to be_a_kind_of OpenStruct
41
- expect(@config.index).to be_a_kind_of OpenStruct
38
+ expect(config.show).to be_a_kind_of OpenStruct
39
+ expect(config.index).to be_a_kind_of OpenStruct
42
40
  end
43
41
 
44
42
  it "has ordered hashes for field configuration" do
45
- expect(@config.facet_fields).to be_a_kind_of ActiveSupport::OrderedHash
46
- expect(@config.index_fields).to be_a_kind_of ActiveSupport::OrderedHash
47
- expect(@config.show_fields).to be_a_kind_of ActiveSupport::OrderedHash
48
- expect(@config.search_fields).to be_a_kind_of ActiveSupport::OrderedHash
49
- expect(@config.show_fields).to be_a_kind_of ActiveSupport::OrderedHash
50
- expect(@config.search_fields).to be_a_kind_of ActiveSupport::OrderedHash
51
- expect(@config.sort_fields).to be_a_kind_of ActiveSupport::OrderedHash
43
+ expect(config.facet_fields).to be_a_kind_of ActiveSupport::OrderedHash
44
+ expect(config.index_fields).to be_a_kind_of ActiveSupport::OrderedHash
45
+ expect(config.show_fields).to be_a_kind_of ActiveSupport::OrderedHash
46
+ expect(config.search_fields).to be_a_kind_of ActiveSupport::OrderedHash
47
+ expect(config.show_fields).to be_a_kind_of ActiveSupport::OrderedHash
48
+ expect(config.search_fields).to be_a_kind_of ActiveSupport::OrderedHash
49
+ expect(config.sort_fields).to be_a_kind_of ActiveSupport::OrderedHash
52
50
  end
53
-
54
51
  end
55
52
 
56
53
  describe "#connection_config" do
57
54
  let(:custom_config) { double }
58
55
  it "has the global blacklight configuration" do
59
- expect(@config.connection_config).to eq Blacklight.connection_config
56
+ expect(config.connection_config).to eq Blacklight.connection_config
60
57
  end
61
58
  it "is overridable with custom configuration" do
62
- @config.connection_config = custom_config
63
- expect(@config.connection_config).to eq custom_config
59
+ config.connection_config = custom_config
60
+ expect(config.connection_config).to eq custom_config
64
61
  end
65
62
  end
66
63
 
67
64
  describe "config.index.respond_to" do
68
65
  it "has a list of additional formats for index requests to respond to" do
69
- @config.index.respond_to.xml = true
66
+ config.index.respond_to.xml = true
70
67
 
71
- @config.index.respond_to.csv = { :layout => false }
68
+ config.index.respond_to.csv = { :layout => false }
72
69
 
73
- @config.index.respond_to.yaml = lambda { render plain: "" }
70
+ config.index.respond_to.yaml = lambda { render plain: "" }
74
71
 
75
- expect(@config.index.respond_to.keys).to eq [:xml, :csv, :yaml]
72
+ expect(config.index.respond_to.keys).to eq [:xml, :csv, :yaml]
76
73
  end
77
74
  end
78
75
 
@@ -86,25 +83,46 @@ describe "Blacklight::Configuration" do
86
83
  end
87
84
  end
88
85
 
86
+ describe "for_display_type" do
87
+ let(:mock_field) { Blacklight::Configuration::IndexField.new }
88
+ let(:image) { SolrDocument.new(format: 'Image') }
89
+ let(:sound) { SolrDocument.new(format: 'Sound') }
90
+ it "adds fields just for a certain type" do
91
+ config.for_display_type "Image" do |c|
92
+ c.add_index_field :dimensions
93
+ end
94
+ config.add_index_field :title
95
+
96
+ expect(config.index_fields_for(image)).to have_key 'dimensions'
97
+ expect(config.index_fields_for(image)).to have_key 'title'
98
+ expect(config.index_fields_for(sound)).not_to have_key 'dimensions'
99
+ expect(config.index_fields_for(image)).to have_key 'title'
100
+ expect(config.index_fields).not_to have_key 'dimensions'
101
+ end
102
+ end
103
+
89
104
  describe "inheritable_copy" do
105
+ let(:klass) { Class.new }
106
+ let(:config_copy) { config.inheritable_copy(klass) }
107
+
108
+
90
109
  it "provides a deep copy of the configuration" do
91
- config_copy = @config.inheritable_copy
92
110
  config_copy.a = 1
93
111
 
94
112
  @mock_facet = Blacklight::Configuration::FacetField.new
95
113
  config_copy.add_facet_field "dummy_field", @mock_facet
96
114
 
97
- expect(@config.a).to be_nil
98
- expect(@config.facet_fields).to_not include(@mock_facet)
115
+ expect(config.a).to be_nil
116
+ expect(config.facet_fields).to_not include(@mock_facet)
99
117
  end
100
118
 
101
119
  context "when model classes are customised" do
102
- it "does not dup response_model or document_model" do
103
- @config.response_model = Hash
104
- @config.document_model = Array
105
-
106
- config_copy = @config.inheritable_copy
120
+ before do
121
+ config.response_model = Hash
122
+ config.document_model = Array
123
+ end
107
124
 
125
+ it "does not dup response_model or document_model" do
108
126
  expect(config_copy.response_model).to eq Hash
109
127
  expect(config_copy.document_model).to eq Array
110
128
  end
@@ -112,32 +130,26 @@ describe "Blacklight::Configuration" do
112
130
 
113
131
  context "when model classes are not set" do
114
132
  it "leaves response_model and document_model empty" do
115
- config_copy = @config.inheritable_copy
116
-
117
133
  expect(config_copy.fetch(:response_model, nil)).to be_nil
118
134
  expect(config_copy.fetch(:document_model, nil)).to be_nil
119
135
  end
120
136
 
121
137
  it "returns default classes" do
122
- config_copy = @config.inheritable_copy
123
-
124
138
  expect(config_copy.response_model).to eq Blacklight::Solr::Response
125
139
  expect(config_copy.document_model).to eq SolrDocument
126
140
  end
127
141
  end
128
142
 
129
143
  it "provides cloned copies of mutable data structures" do
130
- @config.a = { value: 1 }
131
- @config.b = [1,2,3]
132
-
133
- config_copy = @config.inheritable_copy
144
+ config.a = { value: 1 }
145
+ config.b = [1,2,3]
134
146
 
135
147
  config_copy.a[:value] = 2
136
148
  config_copy.b << 5
137
149
 
138
- expect(@config.a[:value]).to eq 1
150
+ expect(config.a[:value]).to eq 1
139
151
  expect(config_copy.a[:value]).to eq 2
140
- expect(@config.b).to match_array [1,2,3]
152
+ expect(config.b).to match_array [1,2,3]
141
153
  expect(config_copy.b).to match_array [1,2,3,5]
142
154
  end
143
155
  end
@@ -172,201 +184,200 @@ describe "Blacklight::Configuration" do
172
184
 
173
185
  describe "add_facet_field" do
174
186
  it "accepts field name and hash form arg" do
175
- @config.add_facet_field('format', :label => "Format", :limit => true)
187
+ config.add_facet_field('format', :label => "Format", :limit => true)
176
188
 
177
- expect(@config.facet_fields["format"]).to_not be_nil
178
- expect(@config.facet_fields["format"]["label"]).to eq "Format"
179
- expect(@config.facet_fields["format"]["limit"]).to be true
189
+ expect(config.facet_fields["format"]).to_not be_nil
190
+ expect(config.facet_fields["format"]["label"]).to eq "Format"
191
+ expect(config.facet_fields["format"]["limit"]).to be true
180
192
  end
181
193
 
182
194
  it "accepts FacetField obj arg" do
183
- @config.add_facet_field("format", Blacklight::Configuration::FacetField.new( :label => "Format"))
195
+ config.add_facet_field("format", Blacklight::Configuration::FacetField.new( :label => "Format"))
184
196
 
185
- expect(@config.facet_fields["format"]).to_not be_nil
186
- expect(@config.facet_fields["format"]["label"]).to eq "Format"
197
+ expect(config.facet_fields["format"]).to_not be_nil
198
+ expect(config.facet_fields["format"]["label"]).to eq "Format"
187
199
  end
188
200
 
189
201
  it "accepts field name and block form" do
190
- @config.add_facet_field("format") do |facet|
202
+ config.add_facet_field("format") do |facet|
191
203
  facet.label = "Format"
192
204
  facet.limit = true
193
205
  end
194
206
 
195
- expect(@config.facet_fields["format"]).to_not be_nil
196
- expect(@config.facet_fields["format"].limit).to be true
207
+ expect(config.facet_fields["format"]).to_not be_nil
208
+ expect(config.facet_fields["format"].limit).to be true
197
209
  end
198
210
 
199
211
  it "accepts block form" do
200
- @config.add_facet_field do |facet|
212
+ config.add_facet_field do |facet|
201
213
  facet.field = "format"
202
214
  facet.label = "Format"
203
215
  end
204
216
 
205
- expect(@config.facet_fields['format']).to_not be_nil
217
+ expect(config.facet_fields['format']).to_not be_nil
206
218
  end
207
219
 
208
220
  it "accepts a configuration hash" do
209
- @config.add_facet_field :field => 'format', :label => 'Format'
210
- expect(@config.facet_fields['format']).to_not be_nil
221
+ config.add_facet_field :field => 'format', :label => 'Format'
222
+ expect(config.facet_fields['format']).to_not be_nil
211
223
  end
212
224
 
213
225
  it "accepts array form" do
214
- @config.add_facet_field([{ :field => 'format', :label => 'Format'}, { :field => 'publication_date', :label => 'Publication Date' }])
226
+ config.add_facet_field([{ :field => 'format', :label => 'Format'}, { :field => 'publication_date', :label => 'Publication Date' }])
215
227
 
216
- expect(@config.facet_fields).to have(2).fields
228
+ expect(config.facet_fields).to have(2).fields
217
229
  end
218
230
 
219
231
  it "accepts array form with a block" do
220
232
  expect do |b|
221
- @config.add_facet_field([{ :field => 'format', :label => 'Format'}, { :field => 'publication_date', :label => 'Publication Date' }], &b)
233
+ config.add_facet_field([{ :field => 'format', :label => 'Format'}, { :field => 'publication_date', :label => 'Publication Date' }], &b)
222
234
  end.to yield_control.twice
223
235
  end
224
236
 
225
-
226
237
  it "creates default label from titleized solr field" do
227
- @config.add_facet_field("publication_date")
238
+ config.add_facet_field("publication_date")
228
239
 
229
- expect(@config.facet_fields["publication_date"].label).to eq "Publication Date"
240
+ expect(config.facet_fields["publication_date"].label).to eq "Publication Date"
230
241
  end
231
242
 
232
243
  it "allows you to not show the facet in the facet bar" do
233
- @config.add_facet_field("publication_date", :show=>false)
244
+ config.add_facet_field("publication_date", :show=>false)
234
245
 
235
- expect(@config.facet_fields["publication_date"]['show']).to be false
246
+ expect(config.facet_fields["publication_date"]['show']).to be false
236
247
  end
237
248
 
238
249
  it "raises on nil solr field name" do
239
- expect { @config.add_facet_field(nil) }.to raise_error ArgumentError
250
+ expect { config.add_facet_field(nil) }.to raise_error ArgumentError
240
251
  end
241
252
 
242
253
  it "looks up and match field names" do
243
- allow(config).to receive_messages(reflected_fields: {
254
+ allow(config).to receive_messages(luke_fields: {
244
255
  "some_field_facet" => {},
245
256
  "another_field_facet" => {},
246
257
  "a_facet_field" => {},
247
258
  })
248
259
  expect { |b| config.add_facet_field match: /_facet$/, &b }.to yield_control.twice
249
260
 
250
- expect(@config.facet_fields.keys).to eq ["some_field_facet", "another_field_facet"]
261
+ expect(config.facet_fields.keys).to eq ["some_field_facet", "another_field_facet"]
251
262
  end
252
263
 
253
264
  it "takes wild-carded field names and dereference them to solr fields" do
254
- allow(config).to receive(:reflected_fields).and_return(
265
+ allow(config).to receive_messages(luke_fields: {
255
266
  "some_field_facet" => {},
256
267
  "another_field_facet" => {},
257
- "a_facet_field" => {}
258
- )
268
+ "a_facet_field" => {},
269
+ })
259
270
  expect { |b| config.add_facet_field "*_facet", &b }.to yield_control.twice
260
271
 
261
- expect(@config.facet_fields.keys).to eq ["some_field_facet", "another_field_facet"]
272
+ expect(config.facet_fields.keys).to eq ["some_field_facet", "another_field_facet"]
262
273
  end
263
274
 
264
275
  describe "if/unless conditions with legacy show parameter" do
265
276
  it "is hidden if the if condition is false" do
266
- expect(@config.add_facet_field("hidden", if: false).if).to eq false
267
- expect(@config.add_facet_field("hidden_with_legacy", if: false, show: true).if).to eq false
277
+ expect(config.add_facet_field("hidden", if: false).if).to eq false
278
+ expect(config.add_facet_field("hidden_with_legacy", if: false, show: true).if).to eq false
268
279
  end
269
280
 
270
281
  it "is true if the if condition is true" do
271
- expect(@config.add_facet_field("hidden", if: true).if).to eq true
272
- expect(@config.add_facet_field("hidden_with_legacy", if: true, show: false).if).to eq true
282
+ expect(config.add_facet_field("hidden", if: true).if).to eq true
283
+ expect(config.add_facet_field("hidden_with_legacy", if: true, show: false).if).to eq true
273
284
  end
274
285
 
275
286
  it "is true if the if condition is missing" do
276
- expect(@config.add_facet_field("hidden", show: true).if).to eq true
287
+ expect(config.add_facet_field("hidden", show: true).if).to eq true
277
288
  end
278
289
  end
279
290
  end
280
291
 
281
292
  describe "add_index_field" do
282
293
  it "takes hash form" do
283
- @config.add_index_field("title_display", :label => "Title")
294
+ config.add_index_field("title_tsim", :label => "Title")
284
295
 
285
- expect(@config.index_fields["title_display"]).to_not be_nil
286
- expect(@config.index_fields["title_display"].label).to eq "Title"
296
+ expect(config.index_fields["title_tsim"]).to_not be_nil
297
+ expect(config.index_fields["title_tsim"].label).to eq "Title"
287
298
  end
288
299
  it "takes IndexField param" do
289
- @config.add_index_field("title_display", Blacklight::Configuration::IndexField.new(:field => "title_display", :label => "Title"))
300
+ config.add_index_field("title_tsim", Blacklight::Configuration::IndexField.new(:field => "title_display", :label => "Title"))
290
301
 
291
- expect(@config.index_fields["title_display"]).to_not be_nil
292
- expect(@config.index_fields["title_display"].label).to eq "Title"
302
+ expect(config.index_fields["title_tsim"]).to_not be_nil
303
+ expect(config.index_fields["title_tsim"].label).to eq "Title"
293
304
  end
294
305
  it "takes block form" do
295
- @config.add_index_field("title_display") do |field|
306
+ config.add_index_field("title_tsim") do |field|
296
307
  field.label = "Title"
297
308
  end
298
- expect(@config.index_fields["title_display"]).to_not be_nil
299
- expect(@config.index_fields["title_display"].label).to eq "Title"
309
+ expect(config.index_fields["title_tsim"]).to_not be_nil
310
+ expect(config.index_fields["title_tsim"].label).to eq "Title"
300
311
  end
301
312
 
302
313
  it "creates default label from titleized field" do
303
- @config.add_index_field("title_display")
314
+ config.add_index_field("title_tsim")
304
315
 
305
- expect(@config.index_fields["title_display"].label).to eq "Title Display"
316
+ expect(config.index_fields["title_tsim"].label).to eq "Title Tsim"
306
317
  end
307
318
 
308
319
  it "raises on nil solr field name" do
309
- expect { @config.add_index_field(nil) }.to raise_error ArgumentError
320
+ expect { config.add_index_field(nil) }.to raise_error ArgumentError
310
321
  end
311
322
 
312
323
  it "takes wild-carded field names and dereference them to solr fields" do
313
- allow(config).to receive(:reflected_fields).and_return(
324
+ allow(config).to receive_messages(luke_fields: {
314
325
  "some_field_display" => {},
315
326
  "another_field_display" => {},
316
- "a_facet_field" => {}
317
- )
327
+ "a_facet_field" => {},
328
+ })
318
329
  config.add_index_field "*_display"
319
330
 
320
- expect(@config.index_fields.keys).to eq ["some_field_display", "another_field_display"]
331
+ expect(config.index_fields.keys).to eq ["some_field_display", "another_field_display"]
321
332
  end
322
333
 
323
334
  it "queries solr and get live values for match fields", integration: true do
324
- @config.add_index_field match: /title.+display/
325
- expect(@config.index_fields.keys).to include "subtitle_display", "subtitle_vern_display", "title_display", "title_vern_display"
335
+ config.add_index_field match: /title.+sim/
336
+ expect(config.index_fields.keys).to include "subtitle_tsim", "subtitle_vern_ssim", "title_tsim", "title_vern_ssim"
326
337
  end
327
338
  end
328
339
 
329
340
  describe "add_show_field" do
330
341
  it "takes hash form" do
331
- @config.add_show_field("title_display", :label => "Title")
342
+ config.add_show_field("title_tsim", :label => "Title")
332
343
 
333
- expect(@config.show_fields["title_display"]).to_not be_nil
334
- expect(@config.show_fields["title_display"].label).to eq "Title"
344
+ expect(config.show_fields["title_tsim"]).to_not be_nil
345
+ expect(config.show_fields["title_tsim"].label).to eq "Title"
335
346
  end
336
347
  it "takes ShowField argument" do
337
- @config.add_show_field("title_display", Blacklight::Configuration::ShowField.new(:field => "title_display", :label => "Title"))
348
+ config.add_show_field("title_tsim", Blacklight::Configuration::ShowField.new(:field => "title_display", :label => "Title"))
338
349
 
339
- expect(@config.show_fields["title_display"]).to_not be_nil
340
- expect(@config.show_fields["title_display"].label).to eq "Title"
350
+ expect(config.show_fields["title_tsim"]).to_not be_nil
351
+ expect(config.show_fields["title_tsim"].label).to eq "Title"
341
352
  end
342
353
  it "takes block form" do
343
- @config.add_show_field("title_display") do |f|
354
+ config.add_show_field("title_tsim") do |f|
344
355
  f.label = "Title"
345
356
  end
346
357
 
347
- expect(@config.show_fields["title_display"]).to_not be_nil
348
- expect(@config.show_fields["title_display"].label).to eq "Title"
358
+ expect(config.show_fields["title_tsim"]).to_not be_nil
359
+ expect(config.show_fields["title_tsim"].label).to eq "Title"
349
360
  end
350
361
 
351
362
  it "creates default label humanized from field" do
352
- @config.add_show_field("my_custom_field")
363
+ config.add_show_field("my_custom_field")
353
364
 
354
- expect(@config.show_fields["my_custom_field"].label).to eq "My Custom Field"
365
+ expect(config.show_fields["my_custom_field"].label).to eq "My Custom Field"
355
366
  end
356
367
 
357
368
  it "raises on nil solr field name" do
358
- expect { @config.add_show_field(nil) }.to raise_error ArgumentError
369
+ expect { config.add_show_field(nil) }.to raise_error ArgumentError
359
370
  end
360
371
 
361
372
  it "takes wild-carded field names and dereference them to solr fields" do
362
- allow(config).to receive(:reflected_fields).and_return(
373
+ allow(config).to receive_messages(luke_fields: {
363
374
  "some_field_display" => {},
364
375
  "another_field_display" => {},
365
- "a_facet_field" => {}
366
- )
376
+ "a_facet_field" => {},
377
+ })
367
378
  config.add_show_field "*_display"
368
379
 
369
- expect(@config.show_fields.keys).to eq ["some_field_display", "another_field_display"]
380
+ expect(config.show_fields.keys).to eq ["some_field_display", "another_field_display"]
370
381
  end
371
382
 
372
383
  end
@@ -424,28 +435,28 @@ describe "Blacklight::Configuration" do
424
435
  end
425
436
 
426
437
  it "raises on nil key" do
427
- expect {@config.add_search_field(nil, :foo => "bar")}.to raise_error ArgumentError
438
+ expect {config.add_search_field(nil, :foo => "bar")}.to raise_error ArgumentError
428
439
  end
429
440
 
430
441
  it "creates default label from titleized field key" do
431
- @config.add_search_field("author_name")
442
+ config.add_search_field("author_name")
432
443
 
433
- expect(@config.search_fields["author_name"].label).to eq "Author Name"
444
+ expect(config.search_fields["author_name"].label).to eq "Author Name"
434
445
  end
435
446
 
436
447
  describe "if/unless conditions with legacy include_in_simple_search" do
437
448
  it "is hidden if the if condition is false" do
438
- expect(@config.add_search_field("hidden", if: false).if).to eq false
439
- expect(@config.add_search_field("hidden_with_legacy", if: false, include_in_simple_search: true).if).to eq false
449
+ expect(config.add_search_field("hidden", if: false).if).to eq false
450
+ expect(config.add_search_field("hidden_with_legacy", if: false, include_in_simple_search: true).if).to eq false
440
451
  end
441
452
 
442
453
  it "is true if the if condition is true" do
443
- expect(@config.add_search_field("hidden", if: true).if).to eq true
444
- expect(@config.add_search_field("hidden_with_legacy", if: true, include_in_simple_search: false).if).to eq true
454
+ expect(config.add_search_field("hidden", if: true).if).to eq true
455
+ expect(config.add_search_field("hidden_with_legacy", if: true, include_in_simple_search: false).if).to eq true
445
456
  end
446
457
 
447
458
  it "is true if the if condition is missing" do
448
- expect(@config.add_search_field("hidden", include_in_simple_search: true).if).to eq true
459
+ expect(config.add_search_field("hidden", include_in_simple_search: true).if).to eq true
449
460
  end
450
461
  end
451
462
  end
@@ -458,41 +469,41 @@ describe "Blacklight::Configuration" do
458
469
  end
459
470
 
460
471
  it "takes a two-arg form with a hash" do
461
- @config.add_sort_field("score desc, pub_date_sort desc, title_sort asc", :label => "relevance")
462
-
463
-
464
- expect(@config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
472
+ config.add_sort_field("score desc, pub_date_si desc, title_si asc", :label => "relevance")
473
+ expect(config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
465
474
  end
466
475
 
467
476
  it "takes a SortField object" do
468
- @config.add_sort_field(Blacklight::Configuration::SortField.new(:label => "relevance", :sort => "score desc, pub_date_sort desc, title_sort asc"
469
- ))
470
- expect(@config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
477
+ config.add_sort_field(
478
+ Blacklight::Configuration::SortField.new(label: "relevance",
479
+ sort: "score desc, pub_date_sort desc, title_sort asc")
480
+ )
481
+ expect(config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
471
482
  end
472
483
 
473
484
  it "takes block form" do
474
- @config.add_sort_field do |field|
485
+ config.add_sort_field do |field|
475
486
  field.label = "relevance"
476
- field.sort = "score desc, pub_date_sort desc, title_sort asc"
487
+ field.sort = "score desc, pub_date_si desc, title_si asc"
477
488
  end
478
489
 
479
- expect(@config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
490
+ expect(config.sort_fields.values.find{|f| f.label == "relevance"}).to_not be_nil
480
491
 
481
492
  end
482
493
  end
483
494
 
484
495
  describe "#default_search_field" do
485
496
  it "uses the field with a :default key" do
486
- @config.add_search_field('search_field_1')
487
- @config.add_search_field('search_field_2', :default => true)
497
+ config.add_search_field('search_field_1')
498
+ config.add_search_field('search_field_2', :default => true)
488
499
 
489
- expect(@config.default_search_field.key).to eq 'search_field_2'
500
+ expect(config.default_search_field.key).to eq 'search_field_2'
490
501
  end
491
502
  end
492
503
 
493
504
  describe "#facet_paginator_class" do
494
505
  it "defaults to Blacklight::Solr::FacetPaginator" do
495
- expect(@config.facet_paginator_class).to eq Blacklight::Solr::FacetPaginator
506
+ expect(config.facet_paginator_class).to eq Blacklight::Solr::FacetPaginator
496
507
  end
497
508
  end
498
509
  end