commonwealth-vlr-engine 0.0.1

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 (361) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +91 -0
  3. data/.gitmodules +3 -0
  4. data/Gemfile +20 -0
  5. data/LICENSE +202 -0
  6. data/README.md +38 -0
  7. data/Rakefile +43 -0
  8. data/app/assets/images/commonwealth-vlr-engine/bplLoginButton.png +0 -0
  9. data/app/assets/images/commonwealth-vlr-engine/dc_audio-icon.png +0 -0
  10. data/app/assets/images/commonwealth-vlr-engine/dc_collection-icon.png +0 -0
  11. data/app/assets/images/commonwealth-vlr-engine/dc_image-icon.png +0 -0
  12. data/app/assets/images/commonwealth-vlr-engine/dc_institution-icon.png +0 -0
  13. data/app/assets/images/commonwealth-vlr-engine/dc_moving-image-icon.png +0 -0
  14. data/app/assets/images/commonwealth-vlr-engine/dc_text-icon.png +0 -0
  15. data/app/assets/images/commonwealth-vlr-engine/facebookLoginButton.png +0 -0
  16. data/app/assets/images/commonwealth-vlr-engine/loading-wdl-grid.gif +0 -0
  17. data/app/assets/images/commonwealth-vlr-engine/loading-wdl.gif +0 -0
  18. data/app/assets/images/commonwealth-vlr-engine/loading.gif +0 -0
  19. data/app/assets/images/commonwealth-vlr-engine/openseadragon/fullpage_grouphover.png +0 -0
  20. data/app/assets/images/commonwealth-vlr-engine/openseadragon/fullpage_hover.png +0 -0
  21. data/app/assets/images/commonwealth-vlr-engine/openseadragon/fullpage_pressed.png +0 -0
  22. data/app/assets/images/commonwealth-vlr-engine/openseadragon/fullpage_rest.png +0 -0
  23. data/app/assets/images/commonwealth-vlr-engine/openseadragon/home_grouphover.png +0 -0
  24. data/app/assets/images/commonwealth-vlr-engine/openseadragon/home_hover.png +0 -0
  25. data/app/assets/images/commonwealth-vlr-engine/openseadragon/home_pressed.png +0 -0
  26. data/app/assets/images/commonwealth-vlr-engine/openseadragon/home_rest.png +0 -0
  27. data/app/assets/images/commonwealth-vlr-engine/openseadragon/next_grouphover.png +0 -0
  28. data/app/assets/images/commonwealth-vlr-engine/openseadragon/next_hover.png +0 -0
  29. data/app/assets/images/commonwealth-vlr-engine/openseadragon/next_pressed.png +0 -0
  30. data/app/assets/images/commonwealth-vlr-engine/openseadragon/next_rest.png +0 -0
  31. data/app/assets/images/commonwealth-vlr-engine/openseadragon/previous_grouphover.png +0 -0
  32. data/app/assets/images/commonwealth-vlr-engine/openseadragon/previous_hover.png +0 -0
  33. data/app/assets/images/commonwealth-vlr-engine/openseadragon/previous_pressed.png +0 -0
  34. data/app/assets/images/commonwealth-vlr-engine/openseadragon/previous_rest.png +0 -0
  35. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateleft_grouphover.png +0 -0
  36. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateleft_hover.png +0 -0
  37. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateleft_pressed.png +0 -0
  38. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateleft_rest.png +0 -0
  39. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateright_grouphover.png +0 -0
  40. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateright_hover.png +0 -0
  41. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateright_pressed.png +0 -0
  42. data/app/assets/images/commonwealth-vlr-engine/openseadragon/rotateright_rest.png +0 -0
  43. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomin_grouphover.png +0 -0
  44. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomin_hover.png +0 -0
  45. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomin_pressed.png +0 -0
  46. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomin_rest.png +0 -0
  47. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomout_grouphover.png +0 -0
  48. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomout_hover.png +0 -0
  49. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomout_pressed.png +0 -0
  50. data/app/assets/images/commonwealth-vlr-engine/openseadragon/zoomout_rest.png +0 -0
  51. data/app/assets/images/commonwealth-vlr-engine/vlr_logo_img.png +0 -0
  52. data/app/assets/javascripts/blacklight_gallery.js +1 -0
  53. data/app/assets/javascripts/blacklight_google_analytics/blacklight_google_analytics.js.erb +165 -0
  54. data/app/assets/javascripts/bootstrap-accessibility-plugin/bootstrap-accessibility.js +586 -0
  55. data/app/assets/javascripts/commonwealth-vlr-engine.js +22 -0
  56. data/app/assets/javascripts/commonwealth-vlr-engine/collection_facets.js +5 -0
  57. data/app/assets/javascripts/commonwealth-vlr-engine/disable_dropdown_nav.js +21 -0
  58. data/app/assets/javascripts/commonwealth-vlr-engine/feedback_alerts.js.erb +19 -0
  59. data/app/assets/javascripts/commonwealth-vlr-engine/folder_tools.js +26 -0
  60. data/app/assets/javascripts/commonwealth-vlr-engine/multi_img_viewer.js.erb +20 -0
  61. data/app/assets/javascripts/commonwealth-vlr-engine/ocr_search_utils.js.erb +32 -0
  62. data/app/assets/javascripts/commonwealth-vlr-engine/volumes_list.js +5 -0
  63. data/app/assets/javascripts/openseadragon.js +2 -0
  64. data/app/assets/javascripts/respond/respond.min.js +6 -0
  65. data/app/assets/javascripts/wdl-viewer/fd-slider.js +1303 -0
  66. data/app/assets/javascripts/wdl-viewer/jquery-deparam.js +113 -0
  67. data/app/assets/javascripts/wdl-viewer/jquery.ba-throttle-debounce.min.js +9 -0
  68. data/app/assets/javascripts/wdl-viewer/jquery.hammer.min.js +7 -0
  69. data/app/assets/javascripts/wdl-viewer/modernizr-wdl.min.js +3 -0
  70. data/app/assets/javascripts/wdl-viewer/wdl-search.js +33 -0
  71. data/app/assets/javascripts/wdl-viewer/wdl-viewer_commonwealth.js +1147 -0
  72. data/app/assets/stylesheets/blacklight_advanced_search.css +5 -0
  73. data/app/assets/stylesheets/blacklight_gallery.css +1 -0
  74. data/app/assets/stylesheets/blacklight_maps.css +1 -0
  75. data/app/assets/stylesheets/bootstrap-accessibility-plugin/bootstrap-accessibility.css +105 -0
  76. data/app/assets/stylesheets/commonwealth-vlr-engine/advanced_search.scss +139 -0
  77. data/app/assets/stylesheets/commonwealth-vlr-engine/basic_search.scss +47 -0
  78. data/app/assets/stylesheets/commonwealth-vlr-engine/book_viewer.scss +576 -0
  79. data/app/assets/stylesheets/commonwealth-vlr-engine/carousel.scss +94 -0
  80. data/app/assets/stylesheets/commonwealth-vlr-engine/cmmnwlth_defaults.scss +45 -0
  81. data/app/assets/stylesheets/commonwealth-vlr-engine/cmmnwlth_shared.scss +75 -0
  82. data/app/assets/stylesheets/commonwealth-vlr-engine/collections.scss +563 -0
  83. data/app/assets/stylesheets/commonwealth-vlr-engine/commonwealth-vlr-engine.css +32 -0
  84. data/app/assets/stylesheets/commonwealth-vlr-engine/facets.scss +111 -0
  85. data/app/assets/stylesheets/commonwealth-vlr-engine/feedback.scss +10 -0
  86. data/app/assets/stylesheets/commonwealth-vlr-engine/folders.scss +276 -0
  87. data/app/assets/stylesheets/commonwealth-vlr-engine/footer.scss +47 -0
  88. data/app/assets/stylesheets/commonwealth-vlr-engine/header.scss +329 -0
  89. data/app/assets/stylesheets/commonwealth-vlr-engine/home.scss +269 -0
  90. data/app/assets/stylesheets/commonwealth-vlr-engine/index.scss +580 -0
  91. data/app/assets/stylesheets/commonwealth-vlr-engine/institutions.scss +246 -0
  92. data/app/assets/stylesheets/commonwealth-vlr-engine/pages.scss +31 -0
  93. data/app/assets/stylesheets/commonwealth-vlr-engine/search_inside.scss +172 -0
  94. data/app/assets/stylesheets/commonwealth-vlr-engine/searches.scss +55 -0
  95. data/app/assets/stylesheets/commonwealth-vlr-engine/show.scss +840 -0
  96. data/app/assets/stylesheets/commonwealth-vlr-engine/signin.scss +43 -0
  97. data/app/assets/stylesheets/commonwealth-vlr-engine/users.scss +18 -0
  98. data/app/assets/stylesheets/commonwealth-vlr-engine/vlr_dependencies.css +8 -0
  99. data/app/assets/stylesheets/ie_fixes.css +16 -0
  100. data/app/assets/stylesheets/openseadragon.css +1 -0
  101. data/app/assets/stylesheets/wdl-viewer/fd-slider.min.css +2 -0
  102. data/app/controllers/blacklight_advanced_search/advanced_controller.rb +66 -0
  103. data/app/controllers/bookmarks_controller.rb +38 -0
  104. data/app/controllers/collections_controller.rb +128 -0
  105. data/app/controllers/commonwealth_vlr_engine/application_controller.rb +8 -0
  106. data/app/controllers/feedback_controller.rb +39 -0
  107. data/app/controllers/folder_items_actions_controller.rb +72 -0
  108. data/app/controllers/folder_items_controller.rb +90 -0
  109. data/app/controllers/folders_controller.rb +132 -0
  110. data/app/controllers/iiif_manifest_controller.rb +74 -0
  111. data/app/controllers/image_viewer_controller.rb +34 -0
  112. data/app/controllers/institutions_controller.rb +62 -0
  113. data/app/controllers/ocr_search_controller.rb +78 -0
  114. data/app/controllers/pages_controller.rb +5 -0
  115. data/app/controllers/users/omniauth_callbacks_controller.rb +10 -0
  116. data/app/controllers/users/registrations_controller.rb +3 -0
  117. data/app/controllers/users/sessions_controller.rb +3 -0
  118. data/app/controllers/users_controller.rb +27 -0
  119. data/app/helpers/blacklight_maps_helper.rb +3 -0
  120. data/app/helpers/collections_helper.rb +3 -0
  121. data/app/helpers/commonwealth_vlr_engine/application_helper.rb +200 -0
  122. data/app/helpers/commonwealth_vlr_engine/blacklight_helper.rb +35 -0
  123. data/app/helpers/commonwealth_vlr_engine/blacklight_url_helper.rb +53 -0
  124. data/app/helpers/commonwealth_vlr_engine/catalog_helper.rb +414 -0
  125. data/app/helpers/commonwealth_vlr_engine/collections_helper_behavior.rb +19 -0
  126. data/app/helpers/commonwealth_vlr_engine/component_helper.rb +22 -0
  127. data/app/helpers/commonwealth_vlr_engine/facets_helper.rb +20 -0
  128. data/app/helpers/commonwealth_vlr_engine/feedback_helper_behavior.rb +14 -0
  129. data/app/helpers/commonwealth_vlr_engine/folders_helper_behavior.rb +9 -0
  130. data/app/helpers/commonwealth_vlr_engine/image_viewer_helper_behavior.rb +14 -0
  131. data/app/helpers/commonwealth_vlr_engine/institutions_helper_behavior.rb +31 -0
  132. data/app/helpers/commonwealth_vlr_engine/layout_helper.rb +22 -0
  133. data/app/helpers/commonwealth_vlr_engine/ocr_search_helper_behavior.rb +48 -0
  134. data/app/helpers/commonwealth_vlr_engine/pages_helper_behavior.rb +38 -0
  135. data/app/helpers/commonwealth_vlr_engine/vlr_blacklight_maps_helper_behavior.rb +59 -0
  136. data/app/helpers/feedback_helper.rb +3 -0
  137. data/app/helpers/folders_helper.rb +3 -0
  138. data/app/helpers/image_viewer_helper.rb +3 -0
  139. data/app/helpers/institutions_helper.rb +3 -0
  140. data/app/helpers/ocr_search_helper.rb +3 -0
  141. data/app/helpers/pages_helper.rb +3 -0
  142. data/app/mailers/notifier.rb +5 -0
  143. data/app/models/carousel_slide.rb +7 -0
  144. data/app/models/record_mailer.rb +18 -0
  145. data/app/models/user.rb +15 -0
  146. data/app/views/advanced/_advanced_search_date.html.erb +23 -0
  147. data/app/views/advanced/_advanced_search_facets.html.erb +5 -0
  148. data/app/views/advanced/_advanced_search_fields.html.erb +39 -0
  149. data/app/views/advanced/_advanced_search_form.html.erb +51 -0
  150. data/app/views/advanced/_advanced_search_help.html.erb +13 -0
  151. data/app/views/advanced/_facet_layout.html.erb +9 -0
  152. data/app/views/advanced/_facet_limit.html.erb +15 -0
  153. data/app/views/advanced/index.html.erb +29 -0
  154. data/app/views/blacklight_advanced_search/_facet_limit.html.erb +12 -0
  155. data/app/views/bookmarks/_tools.html.erb +25 -0
  156. data/app/views/bookmarks/index.html.erb +64 -0
  157. data/app/views/bookmarks/update.js.erb +1 -0
  158. data/app/views/bpluser/folders/_folder.html.erb +36 -0
  159. data/app/views/catalog/_add_this.html.erb +10 -0
  160. data/app/views/catalog/_az_links.html.erb +15 -0
  161. data/app/views/catalog/_basic_search.html.erb +67 -0
  162. data/app/views/catalog/_citation.html.erb +50 -0
  163. data/app/views/catalog/_constraints.html.erb +26 -0
  164. data/app/views/catalog/_document_collections_gallery.html.erb +7 -0
  165. data/app/views/catalog/_facet_limit_series.html.erb +21 -0
  166. data/app/views/catalog/_facets.html.erb +31 -0
  167. data/app/views/catalog/_facets_series.html.erb +4 -0
  168. data/app/views/catalog/_folder_item_control.html.erb +64 -0
  169. data/app/views/catalog/_index_collections_gallery.html.erb +12 -0
  170. data/app/views/catalog/_index_gallery.html.erb +11 -0
  171. data/app/views/catalog/_index_header_default.html.erb +22 -0
  172. data/app/views/catalog/_index_list_collection.html.erb +33 -0
  173. data/app/views/catalog/_index_list_default.html.erb +13 -0
  174. data/app/views/catalog/_index_map_institutions.html.erb +10 -0
  175. data/app/views/catalog/_index_masonry.html.erb +8 -0
  176. data/app/views/catalog/_index_slideshow.html.erb +18 -0
  177. data/app/views/catalog/_more_like_this.html.erb +9 -0
  178. data/app/views/catalog/_opengraph.html.erb +16 -0
  179. data/app/views/catalog/_previous_next_doc.html.erb +22 -0
  180. data/app/views/catalog/_results_pagination.html.erb +9 -0
  181. data/app/views/catalog/_search_form.html.erb +23 -0
  182. data/app/views/catalog/_search_header.html.erb +5 -0
  183. data/app/views/catalog/_show_default.html.erb +75 -0
  184. data/app/views/catalog/_show_main_content.html.erb +27 -0
  185. data/app/views/catalog/_show_more_like_this.html.erb +15 -0
  186. data/app/views/catalog/_show_partials/_show_book_viewer_link.html.erb +25 -0
  187. data/app/views/catalog/_show_partials/_show_default_img.html.erb +32 -0
  188. data/app/views/catalog/_show_partials/_show_default_metadata.html.erb +486 -0
  189. data/app/views/catalog/_show_partials/_show_default_simple_img_viewer.html.erb +45 -0
  190. data/app/views/catalog/_show_partials/_show_downloads.html.erb +14 -0
  191. data/app/views/catalog/_show_partials/_show_flagged_notice.html.erb +29 -0
  192. data/app/views/catalog/_show_partials/_show_multi_img.html.erb +42 -0
  193. data/app/views/catalog/_show_partials/_show_multi_img_pagination.html.erb +20 -0
  194. data/app/views/catalog/_show_partials/_show_oai_item_img.html.erb +5 -0
  195. data/app/views/catalog/_show_partials/_show_oai_item_link.html.erb +8 -0
  196. data/app/views/catalog/_show_partials/_show_prev_next_carousel_links.html.erb +17 -0
  197. data/app/views/catalog/_show_partials/_show_volumes.html.erb +52 -0
  198. data/app/views/catalog/_show_sidebar.html.erb +1 -0
  199. data/app/views/catalog/_show_tools.html.erb +42 -0
  200. data/app/views/catalog/_zero_results.html.erb +20 -0
  201. data/app/views/catalog/email.html.erb +6 -0
  202. data/app/views/catalog/index.html.erb +17 -0
  203. data/app/views/catalog/metadata_view.html.erb +7 -0
  204. data/app/views/catalog/show.html.erb +13 -0
  205. data/app/views/collections/_search_form_collection.html.erb +23 -0
  206. data/app/views/collections/index.html.erb +30 -0
  207. data/app/views/collections/show.html.erb +116 -0
  208. data/app/views/devise/confirmations/new.html.erb +14 -0
  209. data/app/views/devise/mailer/reset_password_instructions.html.erb +13 -0
  210. data/app/views/devise/passwords/edit.html.erb +33 -0
  211. data/app/views/devise/passwords/new.html.erb +31 -0
  212. data/app/views/devise/registrations/edit.html.erb +83 -0
  213. data/app/views/devise/registrations/new.html.erb +53 -0
  214. data/app/views/devise/sessions/new.html.erb +75 -0
  215. data/app/views/devise/shared/_links.erb +29 -0
  216. data/app/views/feedback/complete.html.erb +9 -0
  217. data/app/views/feedback/show.html.erb +61 -0
  218. data/app/views/folder_items/create.js.erb +1 -0
  219. data/app/views/folder_items/destroy.js.erb +1 -0
  220. data/app/views/folder_items/item_actions.js.erb +2 -0
  221. data/app/views/folder_items/update.js.erb +1 -0
  222. data/app/views/folders/_in_folder.html.erb +2 -0
  223. data/app/views/folders/_new_edit_form_fields.html.erb +36 -0
  224. data/app/views/folders/edit.html.erb +25 -0
  225. data/app/views/folders/index.html.erb +73 -0
  226. data/app/views/folders/new.html.erb +27 -0
  227. data/app/views/folders/public_list.html.erb +44 -0
  228. data/app/views/folders/show.html.erb +98 -0
  229. data/app/views/image_viewer/_book_viewer_help.html.erb +125 -0
  230. data/app/views/image_viewer/_render_book_viewer.html.erb +185 -0
  231. data/app/views/image_viewer/book_viewer.html.erb +57 -0
  232. data/app/views/image_viewer/show.js.erb +19 -0
  233. data/app/views/institutions/_intro_text.html.erb +1 -0
  234. data/app/views/institutions/_map_institutions_search.html.erb +9 -0
  235. data/app/views/institutions/_search_form_institution.html.erb +24 -0
  236. data/app/views/institutions/index.html.erb +31 -0
  237. data/app/views/institutions/show.html.erb +104 -0
  238. data/app/views/layouts/_google_analytics.html.erb +9 -0
  239. data/app/views/layouts/book_viewer.html.erb +37 -0
  240. data/app/views/layouts/commonwealth-vlr-engine.html.erb +59 -0
  241. data/app/views/notifier/feedback.text.erb +6 -0
  242. data/app/views/ocr_search/_index_ocr_list.html.erb +17 -0
  243. data/app/views/ocr_search/_search_form_ocr.html.erb +23 -0
  244. data/app/views/ocr_search/_snippets_more.html.erb +15 -0
  245. data/app/views/ocr_search/_zero_results_ocr.html.erb +9 -0
  246. data/app/views/ocr_search/index.html.erb +49 -0
  247. data/app/views/pages/_carousel.html.erb +46 -0
  248. data/app/views/pages/_home_partials/_banner.html.erb +23 -0
  249. data/app/views/pages/_home_partials/_browse.html.erb +55 -0
  250. data/app/views/pages/_home_partials/_context.html.erb +24 -0
  251. data/app/views/pages/_home_partials/_home_content.html.erb +14 -0
  252. data/app/views/pages/about.html.erb +10 -0
  253. data/app/views/pages/about_site.html.erb +6 -0
  254. data/app/views/pages/explore.html.erb +32 -0
  255. data/app/views/pages/home.html.erb +3 -0
  256. data/app/views/record_mailer/email_record.text.erb +7 -0
  257. data/app/views/saved_searches/index.html.erb +60 -0
  258. data/app/views/search_history/index.html.erb +59 -0
  259. data/app/views/shared/_error_messages.html.erb +9 -0
  260. data/app/views/shared/_flash_msg_maintenance.html.erb +6 -0
  261. data/app/views/shared/_folder_item_actions.html.erb +66 -0
  262. data/app/views/shared/_folder_tools.html.erb +4 -0
  263. data/app/views/shared/_footer.html.erb +14 -0
  264. data/app/views/shared/_header_navbar.html.erb +34 -0
  265. data/app/views/shared/_nav_links.html.erb +58 -0
  266. data/app/views/shared/_search_form_header.html.erb +16 -0
  267. data/app/views/shared/_tools.html.erb +14 -0
  268. data/app/views/shared/_user_util_links.html.erb +43 -0
  269. data/app/views/users/show.html.erb +33 -0
  270. data/commonwealth-vlr-engine.gemspec +47 -0
  271. data/config/initializers/patch_blacklight_advanced_search.rb +74 -0
  272. data/config/initializers/patch_blacklight_maps.rb +20 -0
  273. data/config/jetty.yml +7 -0
  274. data/config/locales/commonwealth-vlr-engine.en.yml +463 -0
  275. data/config/routes.rb +92 -0
  276. data/lib/commonwealth-vlr-engine.rb +55 -0
  277. data/lib/commonwealth-vlr-engine/commonwealth_search_builder.rb +66 -0
  278. data/lib/commonwealth-vlr-engine/controller.rb +69 -0
  279. data/lib/commonwealth-vlr-engine/controller_override.rb +238 -0
  280. data/lib/commonwealth-vlr-engine/engine.rb +40 -0
  281. data/lib/commonwealth-vlr-engine/finder.rb +285 -0
  282. data/lib/commonwealth-vlr-engine/iiif_manifest.rb +189 -0
  283. data/lib/commonwealth-vlr-engine/notifier.rb +33 -0
  284. data/lib/commonwealth-vlr-engine/pages.rb +33 -0
  285. data/lib/commonwealth-vlr-engine/render_constraints_override.rb +57 -0
  286. data/lib/commonwealth-vlr-engine/route_sets.rb +49 -0
  287. data/lib/commonwealth-vlr-engine/routes.rb +21 -0
  288. data/lib/commonwealth-vlr-engine/version.rb +3 -0
  289. data/lib/generators/commonwealth_vlr_engine/controller_generator.rb +92 -0
  290. data/lib/generators/commonwealth_vlr_engine/environment_generator.rb +49 -0
  291. data/lib/generators/commonwealth_vlr_engine/install_generator.rb +57 -0
  292. data/lib/generators/commonwealth_vlr_engine/localassets_generator.rb +29 -0
  293. data/lib/generators/commonwealth_vlr_engine/model_generator.rb +65 -0
  294. data/lib/generators/commonwealth_vlr_engine/routes_generator.rb +39 -0
  295. data/lib/generators/commonwealth_vlr_engine/templates/commonwealth_vlr_engine.css.scss +4 -0
  296. data/lib/generators/commonwealth_vlr_engine/templates/config/contact_emails.yml.sample +13 -0
  297. data/lib/generators/commonwealth_vlr_engine/templates/config/fedora.yml.sample +6 -0
  298. data/lib/generators/commonwealth_vlr_engine/templates/config/geojson_static_file.yml.sample +11 -0
  299. data/lib/generators/commonwealth_vlr_engine/templates/config/google_analytics.yml.sample +10 -0
  300. data/lib/generators/commonwealth_vlr_engine/templates/config/iiif_server.yml.sample +10 -0
  301. data/lib/generators/commonwealth_vlr_engine/templates/config/initializers/a_load_commonwealth_vlr_configs.rb +14 -0
  302. data/lib/generators/commonwealth_vlr_engine/templates/config/initializers/devise.rb +269 -0
  303. data/lib/generators/commonwealth_vlr_engine/templates/config/initializers/secret_token.rb +8 -0
  304. data/lib/generators/commonwealth_vlr_engine/templates/config/locales/blacklight.en.yml +44 -0
  305. data/lib/generators/commonwealth_vlr_engine/templates/config/locales/devise.en.yml +12 -0
  306. data/lib/generators/commonwealth_vlr_engine/templates/config/omniauth-facebook.yml.sample +14 -0
  307. data/lib/generators/commonwealth_vlr_engine/templates/config/omniauth-polaris.yml.sample +20 -0
  308. data/lib/generators/commonwealth_vlr_engine/templates/config/vlr.yml +13 -0
  309. data/lib/generators/commonwealth_vlr_engine/yml_generator.rb +29 -0
  310. data/lib/railties/commonwealth_vlr_engine.rake +6 -0
  311. data/solr_conf/conf/schema.xml +476 -0
  312. data/solr_conf/conf/solrconfig.xml +286 -0
  313. data/spec/controllers/catalog_controller_spec.rb +67 -0
  314. data/spec/controllers/collections_controller_spec.rb +127 -0
  315. data/spec/controllers/feedback_controller_spec.rb +51 -0
  316. data/spec/controllers/folder_items_actions_controller_spec.rb +99 -0
  317. data/spec/controllers/folder_items_controller_spec.rb +90 -0
  318. data/spec/controllers/folders_controller_spec.rb +368 -0
  319. data/spec/controllers/iiif_manifest_controller_spec.rb +85 -0
  320. data/spec/controllers/image_viewer_controller_spec.rb +50 -0
  321. data/spec/controllers/institutions_controller_spec.rb +64 -0
  322. data/spec/controllers/ocr_search_controller_spec.rb +71 -0
  323. data/spec/controllers/pages_controller_spec.rb +58 -0
  324. data/spec/controllers/users_controller_spec.rb +62 -0
  325. data/spec/features/catalog/_az_links_spec.rb +27 -0
  326. data/spec/features/catalog/_show_partials/_show_book_viewer_link_spec.rb +47 -0
  327. data/spec/features/catalog/_show_partials/_show_default_simple_img_viewer_spec.rb +19 -0
  328. data/spec/features/catalog/_show_partials/_show_flagged_notice_spec.rb +23 -0
  329. data/spec/features/catalog/_show_partials/_show_multi_img_spec.rb +18 -0
  330. data/spec/features/catalog/_show_partials/_show_volumes_spec.rb +24 -0
  331. data/spec/features/collections/index_spec.rb +35 -0
  332. data/spec/features/feedback/show_spec.rb +47 -0
  333. data/spec/features/image_viewer/book_viewer_spec.rb +67 -0
  334. data/spec/features/institutions/index_spec.rb +31 -0
  335. data/spec/features/institutions/map_view_spec.rb +37 -0
  336. data/spec/features/more_like_this_search_spec.rb +23 -0
  337. data/spec/features/ocr_search/index_spec.rb +89 -0
  338. data/spec/fixtures/sample_rss_feed.xml +56 -0
  339. data/spec/fixtures/sample_solr_documents.yml +2748 -0
  340. data/spec/helpers/application_helper_spec.rb +114 -0
  341. data/spec/helpers/catalog_helper_spec.rb +386 -0
  342. data/spec/helpers/collections_helper_spec.rb +28 -0
  343. data/spec/helpers/component_helper_spec.rb +34 -0
  344. data/spec/helpers/folders_helper_spec.rb +31 -0
  345. data/spec/helpers/image_viewer_helper_spec.rb +15 -0
  346. data/spec/helpers/institutions_helper_spec.rb +53 -0
  347. data/spec/helpers/ocr_search_helper_spec.rb +70 -0
  348. data/spec/helpers/pages_helper_spec.rb +21 -0
  349. data/spec/lib/commonwealth-vlr-engine/commonwealth_search_builder_spec.rb +101 -0
  350. data/spec/lib/commonwealth-vlr-engine/controller_override_spec.rb +41 -0
  351. data/spec/lib/commonwealth-vlr-engine/controller_spec.rb +33 -0
  352. data/spec/lib/commonwealth-vlr-engine/finder_spec.rb +140 -0
  353. data/spec/lib/commonwealth-vlr-engine/iiif_manifest_spec.rb +157 -0
  354. data/spec/lib/commonwealth-vlr-engine/render_constraints_override_spec.rb +97 -0
  355. data/spec/mailers/notifier_spec.rb +31 -0
  356. data/spec/models/carousel_slide_spec.rb +38 -0
  357. data/spec/spec_helper.rb +40 -0
  358. data/spec/tasks/vlr_engine_rake_spec.rb +28 -0
  359. data/spec/test_app_templates/lib/generators/test_app_generator.rb +23 -0
  360. data/tasks/vlr_engine.rake +46 -0
  361. metadata +788 -0
@@ -0,0 +1,114 @@
1
+ require 'spec_helper'
2
+
3
+ describe ApplicationHelper do
4
+
5
+ let(:image_pid) { 'bpl-dev:h702q641c' }
6
+
7
+ describe '#render_format' do
8
+ it 'should return the right value' do
9
+ expect(helper.render_format('Albums')).to eq('Albums/Scrapbooks')
10
+ expect(helper.render_format('Correspondence')).to eq('Letters/Correspondence')
11
+ end
12
+ end
13
+
14
+ describe '#render_format_index' do
15
+ let(:args) { {document: {genre_field: 'Maps'}, field: :genre_field} }
16
+ it 'should return the right value' do
17
+ expect(helper.render_format_index(args)).to eq('Maps/Atlases')
18
+ end
19
+ end
20
+
21
+ describe '#render_object_icon_path' do
22
+ it 'should return the right value' do
23
+ expect(helper.render_object_icon_path('sound recording')).to eq('commonwealth-vlr-engine/dc_audio-icon.png')
24
+ expect(helper.render_object_icon_path('dfsdsdg')).to eq('commonwealth-vlr-engine/dc_text-icon.png')
25
+ end
26
+ end
27
+
28
+ describe '#link_to_facet' do
29
+
30
+ it 'should create a link to catalog#index with the facet params and display value' do
31
+ expect(helper.link_to_facet('foo', 'bar_ssim', 'baz')).to include('search?f%5Bbar_ssim%5D%5B%5D=foo">baz')
32
+ end
33
+
34
+ it 'should use render_format if the field_name is "genre_basic_ssim"' do
35
+ expect(helper.link_to_facet('Albums', 'genre_basic_ssim')).to include('search?f%5Bgenre_basic_ssim%5D%5B%5D=Albums">Albums/Scrapbooks')
36
+ end
37
+
38
+ end
39
+
40
+ describe '#link_to_facets' do
41
+ it 'should create a link to catalog#index with the facet params' do
42
+ expect(helper.link_to_facets(['foo', 'baz'], ['bar_ssim', 'quux_ssim'])).to include('f%5Bbar_ssim%5D%5B%5D=foo&f%5Bquux_ssim%5D%5B%5D=baz')
43
+ end
44
+ end
45
+
46
+ describe '#link_to_county_facet' do
47
+ it 'should create a link to catalog#index with the facet params and display value' do
48
+ expect(helper.link_to_county_facet('Foo', 'county_ssim')).to include('f%5Bcounty_ssim%5D%5B%5D=Foo+%28county%29">Foo County')
49
+ end
50
+ end
51
+
52
+ describe '#datastream_disseminator_url' do
53
+ it 'should create a path to the Fedora datastream' do
54
+ expect(helper.datastream_disseminator_url(image_pid, 'accessMaster')).to eq("#{FEDORA_URL['url']}/objects/#{image_pid}/datastreams/accessMaster/content")
55
+ end
56
+ end
57
+
58
+ describe '#iiif_image_tag' do
59
+ it 'should create an image tag with a IIIF URI as the href' do
60
+ expect(helper.iiif_image_tag(image_pid, {})).to include("#{IIIF_SERVER['url']}#{image_pid}/full/full/0/default.jpg")
61
+ end
62
+ end
63
+
64
+ describe '#iiif_image_url' do
65
+ it 'should return a IIIF URI' do
66
+ expect(helper.iiif_image_url(image_pid, {size: 'pct:50', region: '0,0,100,100'})).to include("#{IIIF_SERVER['url']}#{image_pid}/0,0,100,100/pct:50/0/default.jpg")
67
+ end
68
+ end
69
+
70
+ describe '#iiif_square_img_path' do
71
+ it 'should return a IIIF URI to a square image' do
72
+ expect(helper.iiif_square_img_path(image_pid, '300')).to include("#{IIIF_SERVER['url']}#{image_pid}/0,476,1496,1496/300,300/0/default.jpg")
73
+ end
74
+ end
75
+
76
+ describe '#get_image_metadata' do
77
+
78
+ it 'should return a hash with the height and width of the image' do
79
+ expect(helper.get_image_metadata(image_pid)).to eq({height: 2448, width: 1496})
80
+ end
81
+
82
+ describe 'when IIIF server is unresponsive' do
83
+ it 'should return a hash with the height and width of the image set to 0' do
84
+ expect(helper.get_image_metadata('bpl-dev:xyz1234')).to eq({height: 0, width: 0})
85
+ end
86
+ end
87
+
88
+ end
89
+
90
+ describe 'content_for(:head) helpers' do
91
+
92
+ # TODO: replace these placeholders with real specs
93
+
94
+ describe '#insert_opengraph_markup' do
95
+ it 'should render the catalog/opengraph partial' #do
96
+ #expect(helper.insert_opengraph_markup).to eq(???)
97
+ #end
98
+ end
99
+
100
+ describe '#insert_google_analytics' do
101
+ it 'should render the layouts/google_analytics partial' #do
102
+ #expect(helper.insert_google_analytics).to eq(???})
103
+ #end
104
+ end
105
+
106
+ end
107
+
108
+ describe '#osd_nav_images' do
109
+ it 'should return a hash with the path to the OpenSeadragon control images' do
110
+ expect(JSON.parse(helper.osd_nav_images('path/to/directory'))['zoomIn']['REST']).to eq('/images/path/to/directory/zoomin_rest.png')
111
+ end
112
+ end
113
+
114
+ end
@@ -0,0 +1,386 @@
1
+ require 'spec_helper'
2
+
3
+ describe CatalogHelper do
4
+
5
+ include Blacklight::SearchHelper
6
+
7
+ class CatalogHelperTestClass < CatalogController
8
+ cattr_accessor :blacklight_config
9
+
10
+ include Blacklight::SearchHelper
11
+ include CommonwealthVlrEngine::Finder
12
+
13
+ def initialize blacklight_config
14
+ self.blacklight_config = blacklight_config
15
+ end
16
+
17
+ end
18
+
19
+ let(:blacklight_config) { CatalogController.blacklight_config }
20
+ let(:catalog_helper_test_class) { CatalogHelperTestClass.new blacklight_config }
21
+ let(:item_pid) { 'bpl-dev:h702q6403' }
22
+ let(:image_pid) { 'bpl-dev:h702q641c' }
23
+ let (:collection_pid) { 'bpl-dev:h702q636h' }
24
+ let(:document) { Blacklight.default_index.search({:q => "id:\"#{item_pid}\"", :rows => 1}).documents.first }
25
+ let(:files_hash) { catalog_helper_test_class.get_files(item_pid) }
26
+
27
+ before(:each) do
28
+ allow(helper).to receive_messages(blacklight_config: blacklight_config)
29
+ end
30
+
31
+ describe 'Creative Commons license helpers' do
32
+
33
+ let(:license) { 'This work is licensed for use under a Creative Commons Attribution Non-Commercial No Derivatives License (CC BY-NC-ND).' }
34
+ let (:cc_url) { 'http://creativecommons.org/licenses/by-nc-nd/3.0' }
35
+
36
+ describe '#cc_terms_code' do
37
+ it 'should return the right value' do
38
+ expect(helper.cc_terms_code(license)).to eq('by-nc-nd')
39
+ end
40
+ end
41
+
42
+ describe '#cc_url' do
43
+ it 'should return the right value' do
44
+ expect(helper.cc_url(license)).to eq(cc_url)
45
+ end
46
+ end
47
+
48
+ describe '#render_cc_license' do
49
+ it 'should render the CC link and image' do
50
+ expect(helper.render_cc_license(license)).to include('href="' + cc_url)
51
+ expect(helper.render_cc_license(license)).to include('src="//i.creativecommons.org/l/')
52
+ end
53
+ end
54
+
55
+ end
56
+
57
+ describe '#collection_gallery_url' do
58
+
59
+ it 'should return a thumbnail datastream if this is an OAI-harvested item' do
60
+ expect(helper.collection_gallery_url({exemplary_image_ssi: 'oai-dev:123456'},'300')).to include('oai-dev:123456/datastreams/thumbnail300/content')
61
+ end
62
+
63
+ it 'should return a IIIF URL if this is a repository item' do
64
+ expect(helper.collection_gallery_url({exemplary_image_ssi: image_pid},'300')).to include("#{IIIF_SERVER['url']}#{image_pid}/0,476,1496,1496/300,300/0/default.jpg")
65
+ end
66
+
67
+ it 'should return the icon path if there is no exemplary_image_ssi value' do
68
+ expect(helper.collection_gallery_url({},'300')).to include('dc_collection-icon.png')
69
+ end
70
+
71
+ end
72
+
73
+ describe '#collection_icon_path' do
74
+ it 'should return the right value' do
75
+ expect(helper.collection_icon_path).to include('dc_collection-icon.png')
76
+ end
77
+ end
78
+
79
+ describe 'download_links helpers' do
80
+
81
+ before do
82
+ # copy :images to :documents, since we don't have any non-image items to test with at the moment
83
+ files_hash[:documents] = files_hash[:images]
84
+ @download_links = helper.create_download_links(document, files_hash, 'link_class')
85
+ end
86
+
87
+ describe '#create_download_links' do
88
+
89
+ it 'should return an array of links' do
90
+ expect(@download_links.length).to eq(2)
91
+ expect(@download_links.first.match(/\A<a[a-z =\\"_]*href=/)).to be_truthy
92
+ end
93
+
94
+ it 'should link to the productionMaster datastream' do
95
+ expect(@download_links.first).to include("href=\"#{FEDORA_URL['url']}/objects/#{image_pid}/datastreams/productionMaster/content")
96
+ end
97
+
98
+ end
99
+
100
+ describe '#has_downloadable_files?' do
101
+ it 'should return true if there are documents, audio, or generic files' do
102
+ expect(helper.has_downloadable_files?(files_hash)).to be_truthy
103
+ end
104
+ end
105
+
106
+ describe '#ia_download_title' do
107
+ it 'should return the correct download title' do
108
+ expect(helper.ia_download_title('mobi')).to eq('Kindle')
109
+ expect(helper.ia_download_title('zip')).to eq('Daisy')
110
+ end
111
+ end
112
+
113
+ end
114
+
115
+ describe '#has_image_files?' do
116
+ it 'should return an array of ImageFile pids' do
117
+ expect(helper.has_image_files?(files_hash).length).to eq(2)
118
+ expect(helper.has_image_files?(files_hash).first).to eq(image_pid)
119
+ end
120
+ end
121
+
122
+ describe '#has_volumes?' do
123
+
124
+ let (:book_with_volumes_pid) { 'bpl-dev:3j334b469' }
125
+ let(:series_document) { Blacklight.default_index.search({:q => "id:\"#{book_with_volumes_pid}\"", :rows => 1}).documents.first }
126
+ let(:has_volumes_output) { catalog_helper_test_class.has_volumes?(series_document) }
127
+
128
+ it 'should return an array of hashes with the Volume documents and files' do
129
+ expect(has_volumes_output.length).to eq(2)
130
+ expect(has_volumes_output[0][:vol_doc].class).to eq(SolrDocument)
131
+ expect(has_volumes_output[0][:vol_files][:ereader]).to_not be_empty
132
+ end
133
+
134
+ end
135
+
136
+ describe 'collection link helpers' do
137
+
138
+ let(:doc_with_two_cols) { Blacklight.default_index.search({:q => 'id:"bpl-dev:g445cd14k"', :rows => 1}).documents.first }
139
+
140
+ describe '#index_collection_link' do
141
+
142
+ describe 'for an item with one collection affiliation' do
143
+ it 'should render the collection link' do
144
+ expect(helper.index_collection_link({document: document})).to include('<a href="/collections/' + collection_pid)
145
+ end
146
+ end
147
+
148
+ describe 'for an item with two collection affiliations' do
149
+ it 'should render two collection links' do
150
+ expect(helper.index_collection_link({document: doc_with_two_cols}).scan(/<a href="\/collections/).length).to eq(2)
151
+ end
152
+ end
153
+
154
+ end
155
+
156
+ describe '#setup_collection_links' do
157
+
158
+ describe 'for an item with one collection affiliation' do
159
+ it 'should return a single link' do
160
+ expect(helper.setup_collection_links(document).length).to eq(1)
161
+ end
162
+ end
163
+
164
+ describe 'for an item with two collection affiliations' do
165
+ it 'should render two collection links' do
166
+ expect(helper.setup_collection_links(doc_with_two_cols).length).to eq(2)
167
+ end
168
+ end
169
+
170
+ end
171
+
172
+ end
173
+
174
+ describe '#index_relation_base_icon' do
175
+
176
+ let(:coll_doc) { Blacklight.default_index.search({:q => 'id:"' + collection_pid + '"', :rows => 1}).documents.first }
177
+
178
+ before do
179
+ allow(helper).to receive(:document_index_view_type).and_return('index')
180
+ allow(helper).to receive(:controller_name).and_return('catalog')
181
+ end
182
+
183
+ it 'should return a collection icon' do
184
+ expect(helper.index_relation_base_icon(coll_doc)).to include('dc_collection-icon.png')
185
+ end
186
+
187
+ end
188
+
189
+ describe '#index_slideshow_img_url' do
190
+ it 'should return a IIIF image URL if there is an exemplary image' do
191
+ expect(helper.index_slideshow_img_url(document)).to eq("#{IIIF_SERVER['url']}#{image_pid}/full/,500/0/default.jpg")
192
+ end
193
+ end
194
+
195
+ describe '#index_title_length' do
196
+ it 'should return the default length if no params[:view] is present' do
197
+ expect(helper.index_title_length).to eq(130)
198
+ end
199
+ end
200
+
201
+ describe '#institution_icon_path' do
202
+ it 'should return the right value' do
203
+ expect(helper.institution_icon_path).to include('dc_institution-icon.png')
204
+ end
205
+ end
206
+
207
+ describe '#link_to_az_value' do
208
+ it 'should create a link with the correct letter, field, and path' do
209
+ expect(helper.link_to_az_value('X', 'some_field_name', 'collections_path')).to include('collections?q=some_field_name%3AX%2A')
210
+ end
211
+ end
212
+
213
+ describe '#normalize_date' do
214
+ it 'should return normalized date values' do
215
+ expect(helper.normalize_date('2015-07-05')).to eq('July 5, 2015')
216
+ expect(helper.normalize_date('2015-07')).to eq('July 2015')
217
+ end
218
+ end
219
+
220
+ describe '#render_hiergo_subject' do
221
+
222
+ before { @rendered_hiergeo = helper.render_hiergo_subject(document[:subject_hiergeo_geojson_ssm].first, ' | ') }
223
+
224
+ it 'should return a set of links to geographic subjects' do
225
+ expect(@rendered_hiergeo.scan(/href=\"\/search\?f%5Bsubject_geographic_ssim/).length).to eq(3)
226
+ end
227
+
228
+ it 'should join the links using the separator' do
229
+ expect(@rendered_hiergeo.scan(/<span> \| <\/span>/).length).to eq(2)
230
+ end
231
+
232
+ it 'should add the county label to the county value' do
233
+ expect(@rendered_hiergeo).to include(' (county)')
234
+ end
235
+
236
+ end
237
+
238
+ describe '#render_item_breadcrumb' do
239
+ it 'should render the output of #setup_collection_links()' do
240
+ expect(helper.render_item_breadcrumb(document)).to include('<a href="/collections/' + collection_pid)
241
+ end
242
+ end
243
+
244
+ describe 'title helpers' do
245
+
246
+ describe '#render_full_title' do
247
+ let(:doc_with_subtitle) { Blacklight.default_index.search({:q => 'id:"bpl-dev:00000003t"', :rows => 1}).documents.first }
248
+ it 'should render the title correctly' do
249
+ expect(helper.render_full_title(doc_with_subtitle)).to include('Massachusetts : based')
250
+ end
251
+ end
252
+
253
+ describe '#render_main_title' do
254
+ it 'should render the title correctly' do
255
+ expect(helper.render_main_title({title_info_primary_tsi: 'Foo', title_info_partnum_tsi: 'vol.2'})).to eq('Foo. vol.2')
256
+ end
257
+ end
258
+
259
+ describe '#render_volume_title' do
260
+ it 'should return the correct value' do
261
+ expect(helper.render_volume_title({title_info_partnum_tsi: 'vol.2', title_info_partname_tsi: 'Foo'})).to eq('Vol.2: Foo')
262
+ end
263
+ end
264
+
265
+ end
266
+
267
+ describe '#render_mlt_search_link' do
268
+ it 'should render a search link with the mlt_id param' do
269
+ expect(helper.render_mlt_search_link(document).match(/href=[a-z"\\\/?]*mlt_id=[a-z0-9]+/)).to be_truthy
270
+ end
271
+ end
272
+
273
+ describe '#render_mods_dates' do
274
+ it 'should return an array of date values' do
275
+ expect(helper.render_mods_dates(document).first).not_to be_nil
276
+ end
277
+ end
278
+
279
+ describe '#render_mods_date' do
280
+
281
+ describe 'date with start, end, and qualifier' do
282
+ it 'should return the correct date value' do
283
+ expect(helper.render_mods_date('1984', '1985', 'approximate')).to eq('[ca. 1984–1985]')
284
+ end
285
+ end
286
+
287
+ describe 'copyright date' do
288
+ it 'should return the correct date value' do
289
+ expect(helper.render_mods_date('1984', nil, nil, 'copyrightDate')).to eq('c1984')
290
+ end
291
+ end
292
+
293
+ end
294
+
295
+ describe '#render_mods_xml_record' do
296
+ before { @mods_xml_doc = helper.render_mods_xml_record(item_pid) }
297
+ it 'should return the XML document for the MODS record' do
298
+ expect(@mods_xml_doc.class).to eq(REXML::Document)
299
+ expect(@mods_xml_doc.to_s).to include('<mods:title>Beauregard</mods:title>')
300
+ end
301
+ end
302
+
303
+ describe '#return_oai_inst_name' do
304
+ it 'should return the institution name' do
305
+ expect(helper.return_oai_inst_name(document)).to eq('Boston Public Library')
306
+ end
307
+ end
308
+
309
+ describe '#setup_names_roles' do
310
+
311
+ let(:doc_with_names) { Blacklight.default_index.search({:q => 'id:"bpl-dev:df65v788h"', :rows => 1}).documents.first }
312
+ before { @names, @roles = helper.setup_names_roles(doc_with_names) }
313
+
314
+ it 'should return two arrays of values' do
315
+ expect(@names.length).to eq(2)
316
+ expect(@roles.first).not_to be_nil
317
+ end
318
+
319
+ it 'should have the correct values in the arrays' do
320
+ expect(@names[0]).to include('Niccolo')
321
+ expect(@roles[0]).to eq('Cartographer')
322
+ expect(@names[1]).to include('Antonio')
323
+ expect(@roles[1]).to eq('Creator')
324
+ end
325
+
326
+ end
327
+
328
+ describe '#should_autofocus_on_search_box?' do
329
+ it 'should return false' do
330
+ expect(helper.should_autofocus_on_search_box?).to be_falsey
331
+ end
332
+ end
333
+
334
+ describe 'thumbnail creation helpers' do
335
+
336
+ describe '#create_thumb_img_element' do
337
+ it 'should return an image tag with the thumbnail image' do
338
+ expect(helper.create_thumb_img_element(document).match(/\A<img[\s\S]+\/>\z/)).to be_truthy
339
+ expect(helper.create_thumb_img_element(document)).to include("src=\"#{FEDORA_URL['url']}/objects/#{image_pid}/datastreams/thumbnail300/content")
340
+ end
341
+ end
342
+
343
+ describe '#thumbnail_url' do
344
+
345
+ it 'should return the datastream path if there is an exemplary_image_ssi value' do
346
+ expect(helper.thumbnail_url(document)).to eq("#{FEDORA_URL['url']}/objects/#{image_pid}/datastreams/thumbnail300/content")
347
+ end
348
+
349
+ describe 'with no exemplary image' do
350
+
351
+ before { document.delete(:exemplary_image_ssi) }
352
+
353
+ it 'should return the proper icon if there is a type_of_resource_ssim value' do
354
+ expect(helper.thumbnail_url(document)).to include('dc_image-icon.png')
355
+ end
356
+
357
+ describe 'with no type_of_resource_ssim value' do
358
+
359
+ before do
360
+ document.delete(:type_of_resource_ssim)
361
+ document[blacklight_config.index.display_type_field.to_sym] = 'Collection'
362
+ end
363
+
364
+ it 'should return the collection icon' do
365
+ expect(helper.thumbnail_url(document)).to include('dc_collection-icon.png')
366
+ end
367
+
368
+ end
369
+
370
+ end
371
+
372
+ describe 'flagged item' do
373
+
374
+ before { document[blacklight_config.flagged_field.to_sym] = true }
375
+
376
+ it 'should return the icon rather than the exemplary image' do
377
+ expect(helper.thumbnail_url(document)).to include('dc_image-icon.png')
378
+ end
379
+
380
+ end
381
+
382
+ end
383
+
384
+ end
385
+
386
+ end