geoblacklight 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +195 -0
  3. data/.github/ISSUE_TEMPLATE.md +17 -0
  4. data/.gitignore +21 -0
  5. data/.gitmodules +0 -0
  6. data/.hound.yml +8 -0
  7. data/.jshintignore +2 -0
  8. data/.jshintrc +67 -0
  9. data/.rubocop.yml +99 -0
  10. data/.rubocop_todo.yml +196 -0
  11. data/.solr_wrapper +5 -0
  12. data/CODE_OF_CONDUCT.md +76 -0
  13. data/CONTRIBUTING.md +49 -0
  14. data/Gemfile +39 -0
  15. data/LICENSE.txt +13 -0
  16. data/README.md +39 -0
  17. data/Rakefile +125 -0
  18. data/app/assets/images/blacklight/arrow-circle-down.svg +4 -0
  19. data/app/assets/images/blacklight/baruch-cuny.svg +6 -0
  20. data/app/assets/images/blacklight/berkeley.svg +7 -0
  21. data/app/assets/images/blacklight/book.svg +6 -0
  22. data/app/assets/images/blacklight/bookmark.svg +6 -0
  23. data/app/assets/images/blacklight/cd-rom.svg +6 -0
  24. data/app/assets/images/blacklight/chicago.svg +7 -0
  25. data/app/assets/images/blacklight/columbia.svg +6 -0
  26. data/app/assets/images/blacklight/cornell.svg +8 -0
  27. data/app/assets/images/blacklight/dvd-rom.svg +6 -0
  28. data/app/assets/images/blacklight/email.svg +6 -0
  29. data/app/assets/images/blacklight/esri-globe.svg +34 -0
  30. data/app/assets/images/blacklight/geoblacklight-icons.json +2079 -0
  31. data/app/assets/images/blacklight/globe.svg +4 -0
  32. data/app/assets/images/blacklight/harvard.svg +6 -0
  33. data/app/assets/images/blacklight/home.svg +4 -0
  34. data/app/assets/images/blacklight/illinois.svg +7 -0
  35. data/app/assets/images/blacklight/image.svg +6 -0
  36. data/app/assets/images/blacklight/indiana.svg +6 -0
  37. data/app/assets/images/blacklight/iowa.svg +6 -0
  38. data/app/assets/images/blacklight/leaf.svg +6 -0
  39. data/app/assets/images/blacklight/lewis-clark.svg +8 -0
  40. data/app/assets/images/blacklight/line.svg +7 -0
  41. data/app/assets/images/blacklight/logo.svg +1 -0
  42. data/app/assets/images/blacklight/map-marker.svg +6 -0
  43. data/app/assets/images/blacklight/map.svg +6 -0
  44. data/app/assets/images/blacklight/maryland.svg +6 -0
  45. data/app/assets/images/blacklight/massgis.svg +6 -0
  46. data/app/assets/images/blacklight/metadata.svg +6 -0
  47. data/app/assets/images/blacklight/michigan-state.svg +7 -0
  48. data/app/assets/images/blacklight/michigan.svg +6 -0
  49. data/app/assets/images/blacklight/minnesota.svg +6 -0
  50. data/app/assets/images/blacklight/mit.svg +6 -0
  51. data/app/assets/images/blacklight/mixed.svg +8 -0
  52. data/app/assets/images/blacklight/multilinestring.svg +9 -0
  53. data/app/assets/images/blacklight/multipoint.svg +6 -0
  54. data/app/assets/images/blacklight/multipolygon.svg +9 -0
  55. data/app/assets/images/blacklight/nyu.svg +9 -0
  56. data/app/assets/images/blacklight/ohio-state.svg +8 -0
  57. data/app/assets/images/blacklight/pagelines-brands.svg +6 -0
  58. data/app/assets/images/blacklight/paper-map.svg +6 -0
  59. data/app/assets/images/blacklight/penn-state.svg +7 -0
  60. data/app/assets/images/blacklight/point.svg +6 -0
  61. data/app/assets/images/blacklight/polygon.svg +7 -0
  62. data/app/assets/images/blacklight/polyline.svg +9 -0
  63. data/app/assets/images/blacklight/princeton.svg +6 -0
  64. data/app/assets/images/blacklight/public.svg +6 -0
  65. data/app/assets/images/blacklight/purdue.svg +7 -0
  66. data/app/assets/images/blacklight/raster.svg +6 -0
  67. data/app/assets/images/blacklight/restricted.svg +6 -0
  68. data/app/assets/images/blacklight/sms.svg +6 -0
  69. data/app/assets/images/blacklight/stanford.svg +6 -0
  70. data/app/assets/images/blacklight/table.svg +6 -0
  71. data/app/assets/images/blacklight/tags.svg +4 -0
  72. data/app/assets/images/blacklight/texas.svg +6 -0
  73. data/app/assets/images/blacklight/tufts.svg +6 -0
  74. data/app/assets/images/blacklight/ucla.svg +6 -0
  75. data/app/assets/images/blacklight/uva.svg +6 -0
  76. data/app/assets/images/blacklight/web_services.svg +6 -0
  77. data/app/assets/images/blacklight/wisconsin.svg +6 -0
  78. data/app/assets/javascripts/geoblacklight/basemaps.js +85 -0
  79. data/app/assets/javascripts/geoblacklight/controls.js +1 -0
  80. data/app/assets/javascripts/geoblacklight/controls/opacity.js +6 -0
  81. data/app/assets/javascripts/geoblacklight/downloaders.js +1 -0
  82. data/app/assets/javascripts/geoblacklight/downloaders/downloader.js +61 -0
  83. data/app/assets/javascripts/geoblacklight/downloaders/hgl_downloader.js +32 -0
  84. data/app/assets/javascripts/geoblacklight/geoblacklight.js +42 -0
  85. data/app/assets/javascripts/geoblacklight/modules.js +1 -0
  86. data/app/assets/javascripts/geoblacklight/modules/collapse.js +7 -0
  87. data/app/assets/javascripts/geoblacklight/modules/download.js +11 -0
  88. data/app/assets/javascripts/geoblacklight/modules/geosearch.js +133 -0
  89. data/app/assets/javascripts/geoblacklight/modules/help_text.js +7 -0
  90. data/app/assets/javascripts/geoblacklight/modules/home.js +16 -0
  91. data/app/assets/javascripts/geoblacklight/modules/item.js +13 -0
  92. data/app/assets/javascripts/geoblacklight/modules/layer_opacity.js +68 -0
  93. data/app/assets/javascripts/geoblacklight/modules/metadata.js +15 -0
  94. data/app/assets/javascripts/geoblacklight/modules/metadata_download_button.js +53 -0
  95. data/app/assets/javascripts/geoblacklight/modules/relations.js +14 -0
  96. data/app/assets/javascripts/geoblacklight/modules/results.js +82 -0
  97. data/app/assets/javascripts/geoblacklight/modules/util.js +38 -0
  98. data/app/assets/javascripts/geoblacklight/templates/index_map_download.hbs +19 -0
  99. data/app/assets/javascripts/geoblacklight/templates/index_map_info.hbs +40 -0
  100. data/app/assets/javascripts/geoblacklight/viewers.js +1 -0
  101. data/app/assets/javascripts/geoblacklight/viewers/esri.js +77 -0
  102. data/app/assets/javascripts/geoblacklight/viewers/esri/dynamic_map_layer.js +85 -0
  103. data/app/assets/javascripts/geoblacklight/viewers/esri/feature_layer.js +76 -0
  104. data/app/assets/javascripts/geoblacklight/viewers/esri/image_map_layer.js +14 -0
  105. data/app/assets/javascripts/geoblacklight/viewers/esri/tiled_map_layer.js +50 -0
  106. data/app/assets/javascripts/geoblacklight/viewers/iiif.js +25 -0
  107. data/app/assets/javascripts/geoblacklight/viewers/index_map.js +70 -0
  108. data/app/assets/javascripts/geoblacklight/viewers/map.js +67 -0
  109. data/app/assets/javascripts/geoblacklight/viewers/oembed.js +13 -0
  110. data/app/assets/javascripts/geoblacklight/viewers/viewer.js +65 -0
  111. data/app/assets/javascripts/geoblacklight/viewers/wms.js +74 -0
  112. data/app/assets/stylesheets/geoblacklight/_blacklight_overrides.scss +51 -0
  113. data/app/assets/stylesheets/geoblacklight/_geoblacklight.scss +36 -0
  114. data/app/assets/stylesheets/geoblacklight/_styles.scss +4 -0
  115. data/app/assets/stylesheets/geoblacklight/application.scss +2 -0
  116. data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +93 -0
  117. data/app/assets/stylesheets/geoblacklight/modules/facets.scss +5 -0
  118. data/app/assets/stylesheets/geoblacklight/modules/geosearch.scss +29 -0
  119. data/app/assets/stylesheets/geoblacklight/modules/home.scss +28 -0
  120. data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +50 -0
  121. data/app/assets/stylesheets/geoblacklight/modules/index_maps.scss +7 -0
  122. data/app/assets/stylesheets/geoblacklight/modules/item.scss +26 -0
  123. data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.scss +87 -0
  124. data/app/assets/stylesheets/geoblacklight/modules/metadata.scss +31 -0
  125. data/app/assets/stylesheets/geoblacklight/modules/metadata_content.scss +43 -0
  126. data/app/assets/stylesheets/geoblacklight/modules/metadata_markup.scss +9 -0
  127. data/app/assets/stylesheets/geoblacklight/modules/metadata_missing.scss +7 -0
  128. data/app/assets/stylesheets/geoblacklight/modules/mixins.scss +5 -0
  129. data/app/assets/stylesheets/geoblacklight/modules/modal.scss +14 -0
  130. data/app/assets/stylesheets/geoblacklight/modules/relations.scss +15 -0
  131. data/app/assets/stylesheets/geoblacklight/modules/results.scss +68 -0
  132. data/app/assets/stylesheets/geoblacklight/modules/search_widgets.scss +5 -0
  133. data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +60 -0
  134. data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +70 -0
  135. data/app/assets/stylesheets/geoblacklight/modules/web_services.scss +5 -0
  136. data/app/controllers/download_controller.rb +114 -0
  137. data/app/controllers/relation_controller.rb +20 -0
  138. data/app/controllers/wms_controller.rb +15 -0
  139. data/app/helpers/arcgis_helper.rb +12 -0
  140. data/app/helpers/blacklight_helper.rb +9 -0
  141. data/app/helpers/carto_helper.rb +29 -0
  142. data/app/helpers/geoblacklight_helper.rb +323 -0
  143. data/app/models/concerns/geoblacklight/solr_document.rb +113 -0
  144. data/app/models/concerns/geoblacklight/solr_document/arcgis.rb +10 -0
  145. data/app/models/concerns/geoblacklight/solr_document/carto.rb +28 -0
  146. data/app/models/concerns/geoblacklight/solr_document/finder.rb +38 -0
  147. data/app/models/concerns/geoblacklight/solr_document/inspection.rb +15 -0
  148. data/app/models/concerns/geoblacklight/spatial_search_behavior.rb +69 -0
  149. data/app/presenters/geoblacklight/document_presenter.rb +23 -0
  150. data/app/views/catalog/_data_dictionary.html.erb +6 -0
  151. data/app/views/catalog/_document_action.html.erb +6 -0
  152. data/app/views/catalog/_document_split.html.erb +6 -0
  153. data/app/views/catalog/_download_generated_link.html.erb +4 -0
  154. data/app/views/catalog/_download_link.html.erb +3 -0
  155. data/app/views/catalog/_downloads_generated.html.erb +6 -0
  156. data/app/views/catalog/_downloads_primary.html.erb +14 -0
  157. data/app/views/catalog/_downloads_secondary.html.erb +39 -0
  158. data/app/views/catalog/_exports.html.erb +3 -0
  159. data/app/views/catalog/_facet_tag_item.html.erb +3 -0
  160. data/app/views/catalog/_facet_tag_layout.html.erb +2 -0
  161. data/app/views/catalog/_header_icons.html.erb +3 -0
  162. data/app/views/catalog/_home_text.html.erb +43 -0
  163. data/app/views/catalog/_icon_facet.html.erb +16 -0
  164. data/app/views/catalog/_index_split_default.html.erb +22 -0
  165. data/app/views/catalog/_metadata.html.erb +27 -0
  166. data/app/views/catalog/_relations_container.html.erb +1 -0
  167. data/app/views/catalog/_results_pagination.html.erb +12 -0
  168. data/app/views/catalog/_show_default_attribute_table.html.erb +19 -0
  169. data/app/views/catalog/_show_default_viewer_container.html.erb +12 -0
  170. data/app/views/catalog/_show_default_viewer_information.html.erb +4 -0
  171. data/app/views/catalog/_show_downloads.html.erb +34 -0
  172. data/app/views/catalog/_show_header_default.html.erb +4 -0
  173. data/app/views/catalog/_show_sidebar.html.erb +12 -0
  174. data/app/views/catalog/_show_tools.html.erb +25 -0
  175. data/app/views/catalog/_web_services.html.erb +8 -0
  176. data/app/views/catalog/_web_services_default.html.erb +8 -0
  177. data/app/views/catalog/_web_services_wfs.html.erb +8 -0
  178. data/app/views/catalog/_web_services_wms.html.erb +8 -0
  179. data/app/views/catalog/index.html.erb +13 -0
  180. data/app/views/catalog/metadata.html.erb +11 -0
  181. data/app/views/catalog/metadata/_content.html.erb +3 -0
  182. data/app/views/catalog/metadata/_markup.html.erb +8 -0
  183. data/app/views/catalog/metadata/_missing.html.erb +6 -0
  184. data/app/views/catalog/web_services.html.erb +10 -0
  185. data/app/views/download/hgl.html.erb +25 -0
  186. data/app/views/relation/_ancestors.html.erb +11 -0
  187. data/app/views/relation/_descendants.html.erb +18 -0
  188. data/app/views/relation/index.html.erb +13 -0
  189. data/app/views/relation/index.json.jbuilder +3 -0
  190. data/app/views/shared/_header_navbar.html.erb +38 -0
  191. data/config/initializers/rails_config.rb +3 -0
  192. data/config/locales/geoblacklight.en.yml +163 -0
  193. data/geoblacklight.gemspec +49 -0
  194. data/lib/generators/geoblacklight/install_generator.rb +105 -0
  195. data/lib/generators/geoblacklight/templates/Procfile +3 -0
  196. data/lib/generators/geoblacklight/templates/catalog_controller.rb +272 -0
  197. data/lib/generators/geoblacklight/templates/geoblacklight.js +10 -0
  198. data/lib/generators/geoblacklight/templates/geoblacklight.scss +4 -0
  199. data/lib/generators/geoblacklight/templates/package.json +14 -0
  200. data/lib/generators/geoblacklight/templates/settings.yml +127 -0
  201. data/lib/generators/geoblacklight/templates/webpacker.yml +67 -0
  202. data/lib/generators/geoblacklight/webpacker_generator.rb +35 -0
  203. data/lib/geoblacklight.rb +50 -0
  204. data/lib/geoblacklight/bounding_box.rb +45 -0
  205. data/lib/geoblacklight/catalog_helper_override.rb +13 -0
  206. data/lib/geoblacklight/constants.rb +28 -0
  207. data/lib/geoblacklight/download.rb +108 -0
  208. data/lib/geoblacklight/download/geojson_download.rb +22 -0
  209. data/lib/geoblacklight/download/geotiff_download.rb +20 -0
  210. data/lib/geoblacklight/download/hgl_download.rb +18 -0
  211. data/lib/geoblacklight/download/kmz_download.rb +22 -0
  212. data/lib/geoblacklight/download/shapefile_download.rb +20 -0
  213. data/lib/geoblacklight/engine.rb +27 -0
  214. data/lib/geoblacklight/exceptions.rb +27 -0
  215. data/lib/geoblacklight/geoblacklight_helper_behavior.rb +14 -0
  216. data/lib/geoblacklight/item_viewer.rb +54 -0
  217. data/lib/geoblacklight/metadata.rb +18 -0
  218. data/lib/geoblacklight/metadata/base.rb +93 -0
  219. data/lib/geoblacklight/metadata/fgdc.rb +14 -0
  220. data/lib/geoblacklight/metadata/html.rb +13 -0
  221. data/lib/geoblacklight/metadata/iso19139.rb +14 -0
  222. data/lib/geoblacklight/metadata_transformer.rb +33 -0
  223. data/lib/geoblacklight/metadata_transformer/base.rb +42 -0
  224. data/lib/geoblacklight/metadata_transformer/fgdc.rb +8 -0
  225. data/lib/geoblacklight/metadata_transformer/iso19139.rb +8 -0
  226. data/lib/geoblacklight/reference.rb +45 -0
  227. data/lib/geoblacklight/references.rb +132 -0
  228. data/lib/geoblacklight/relation/ancestors.rb +27 -0
  229. data/lib/geoblacklight/relation/descendants.rb +27 -0
  230. data/lib/geoblacklight/relation/relation_response.rb +24 -0
  231. data/lib/geoblacklight/routes.rb +7 -0
  232. data/lib/geoblacklight/routes/downloadable.rb +14 -0
  233. data/lib/geoblacklight/routes/exportable.rb +17 -0
  234. data/lib/geoblacklight/routes/wms.rb +13 -0
  235. data/lib/geoblacklight/version.rb +3 -0
  236. data/lib/geoblacklight/view_helper_override.rb +40 -0
  237. data/lib/geoblacklight/wms_layer.rb +35 -0
  238. data/lib/geoblacklight/wms_layer/feature_info_response.rb +32 -0
  239. data/lib/tasks/geoblacklight.rake +108 -0
  240. data/package.json +4 -0
  241. data/schema/format-values.md +50 -0
  242. data/schema/geoblacklight-schema-deprecated.md +39 -0
  243. data/schema/geoblacklight-schema.json +214 -0
  244. data/schema/geoblacklight-schema.md +323 -0
  245. data/schema/geometry-type-values.md +11 -0
  246. data/schema/references.md +23 -0
  247. data/schema/schema-commentary.md +198 -0
  248. data/schema/subjects.md +41 -0
  249. data/schema/type-values.md +10 -0
  250. data/solr/conf/_rest_managed.json +3 -0
  251. data/solr/conf/admin-extra.html +31 -0
  252. data/solr/conf/core.properties +5 -0
  253. data/solr/conf/elevate.xml +36 -0
  254. data/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  255. data/solr/conf/protwords.txt +21 -0
  256. data/solr/conf/schema.xml +198 -0
  257. data/solr/conf/scripts.conf +24 -0
  258. data/solr/conf/solrconfig.xml +243 -0
  259. data/solr/conf/spellings.txt +2 -0
  260. data/solr/conf/stopwords.txt +58 -0
  261. data/solr/conf/stopwords_en.txt +58 -0
  262. data/solr/conf/synonyms.txt +31 -0
  263. data/solr/conf/xslt/example.xsl +132 -0
  264. data/solr/conf/xslt/example_atom.xsl +67 -0
  265. data/solr/conf/xslt/example_rss.xsl +66 -0
  266. data/solr/conf/xslt/luke.xsl +337 -0
  267. data/spec/controllers/catalog_controller_spec.rb +82 -0
  268. data/spec/controllers/download_controller_spec.rb +120 -0
  269. data/spec/controllers/relation_controller_spec.rb +11 -0
  270. data/spec/controllers/wms_controller_spec.rb +34 -0
  271. data/spec/factories/user.rb +7 -0
  272. data/spec/features/bookmarks_spec.rb +10 -0
  273. data/spec/features/configurable_basemap_spec.rb +35 -0
  274. data/spec/features/data_dictionary_download_spec.rb +16 -0
  275. data/spec/features/download_layer_spec.rb +93 -0
  276. data/spec/features/empty_search_spec.rb +11 -0
  277. data/spec/features/esri_viewer_spec.rb +42 -0
  278. data/spec/features/exports_spec.rb +36 -0
  279. data/spec/features/help_text_spec.rb +8 -0
  280. data/spec/features/home_page_spec.rb +40 -0
  281. data/spec/features/iiif_viewer_spec.rb +8 -0
  282. data/spec/features/index_map_spec.rb +31 -0
  283. data/spec/features/layer_inspection_spec.rb +10 -0
  284. data/spec/features/layer_opacity_spec.rb +20 -0
  285. data/spec/features/layer_preview_spec.rb +17 -0
  286. data/spec/features/layer_with_no_references_spec.rb +8 -0
  287. data/spec/features/linkified_attribute_table_spec.rb +11 -0
  288. data/spec/features/metadata_panel_spec.rb +78 -0
  289. data/spec/features/missing_metadata_spec.rb +24 -0
  290. data/spec/features/oembed_spec.rb +9 -0
  291. data/spec/features/relations_spec.rb +51 -0
  292. data/spec/features/saved_searches_spec.rb +13 -0
  293. data/spec/features/search_bar_spec.rb +12 -0
  294. data/spec/features/search_results_map_spec.rb +55 -0
  295. data/spec/features/search_results_overlap_ratio_spec.rb +55 -0
  296. data/spec/features/search_spec.rb +14 -0
  297. data/spec/features/show_page_metadata_spec.rb +12 -0
  298. data/spec/features/sms_spec.rb +15 -0
  299. data/spec/features/split_view.html.erb_spec.rb +75 -0
  300. data/spec/features/suppressed_records_spec.rb +14 -0
  301. data/spec/features/web_services_modal_spec.rb +25 -0
  302. data/spec/fixtures/fgdc/harvard-g7064-s2-1834-k3.xml +1 -0
  303. data/spec/fixtures/iso19139/stanford-cg357zz0321.xml +581 -0
  304. data/spec/fixtures/mods/fb897vt9938.mods +111 -0
  305. data/spec/fixtures/mods/stanford-cg357zz0321.mods +113 -0
  306. data/spec/fixtures/solr_documents/README.md +40 -0
  307. data/spec/fixtures/solr_documents/actual-papermap1.json +23 -0
  308. data/spec/fixtures/solr_documents/actual-point1.json +37 -0
  309. data/spec/fixtures/solr_documents/actual-polygon1.json +23 -0
  310. data/spec/fixtures/solr_documents/actual-raster1.json +38 -0
  311. data/spec/fixtures/solr_documents/baruch_ancestor1.json +46 -0
  312. data/spec/fixtures/solr_documents/baruch_ancestor2.json +46 -0
  313. data/spec/fixtures/solr_documents/baruch_documentation_download.json +49 -0
  314. data/spec/fixtures/solr_documents/bbox-spans-180.json +20 -0
  315. data/spec/fixtures/solr_documents/cornell_html_metadata.json +42 -0
  316. data/spec/fixtures/solr_documents/esri-dynamic-layer-all-layers.json +38 -0
  317. data/spec/fixtures/solr_documents/esri-dynamic-layer-single-layer.json +40 -0
  318. data/spec/fixtures/solr_documents/esri-feature-layer.json +46 -0
  319. data/spec/fixtures/solr_documents/esri-image-map-layer.json +42 -0
  320. data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +22 -0
  321. data/spec/fixtures/solr_documents/esri-wms-layer.json +33 -0
  322. data/spec/fixtures/solr_documents/harvard_raster.json +44 -0
  323. data/spec/fixtures/solr_documents/iiif-eastern-hemisphere.json +30 -0
  324. data/spec/fixtures/solr_documents/index-map-polygon-no-downloadurl.json +37 -0
  325. data/spec/fixtures/solr_documents/index-map-polygon.json +37 -0
  326. data/spec/fixtures/solr_documents/index-map-stanford.json +37 -0
  327. data/spec/fixtures/solr_documents/index_map_point.json +27 -0
  328. data/spec/fixtures/solr_documents/metadata_no_dct_provenance_s.json +30 -0
  329. data/spec/fixtures/solr_documents/metadata_no_layer_geom_type_s.json +17 -0
  330. data/spec/fixtures/solr_documents/metadata_no_solr_geom.json +23 -0
  331. data/spec/fixtures/solr_documents/no_spatial.json +21 -0
  332. data/spec/fixtures/solr_documents/oembed.json +24 -0
  333. data/spec/fixtures/solr_documents/princeton-child1.json +30 -0
  334. data/spec/fixtures/solr_documents/princeton-child2.json +30 -0
  335. data/spec/fixtures/solr_documents/princeton-child3.json +30 -0
  336. data/spec/fixtures/solr_documents/princeton-child4.json +30 -0
  337. data/spec/fixtures/solr_documents/princeton-parent.json +25 -0
  338. data/spec/fixtures/solr_documents/public_direct_download.json +34 -0
  339. data/spec/fixtures/solr_documents/public_iiif_princeton.json +36 -0
  340. data/spec/fixtures/solr_documents/public_polygon_mit.json +27 -0
  341. data/spec/fixtures/solr_documents/restricted-line.json +37 -0
  342. data/spec/fixtures/solr_documents/umn_metro_result1.json +41 -0
  343. data/spec/fixtures/solr_documents/umn_state_result1.json +38 -0
  344. data/spec/fixtures/solr_documents/umn_state_result2.json +38 -0
  345. data/spec/fixtures/solr_documents/uva_slug_colon.json +25 -0
  346. data/spec/helpers/arcgis_helper_spec.rb +14 -0
  347. data/spec/helpers/carto_helper_spec.rb +11 -0
  348. data/spec/helpers/geoblacklight_helper_spec.rb +329 -0
  349. data/spec/javascripts/geoblacklight_spec.js +21 -0
  350. data/spec/javascripts/metadata_download_button_spec.js +14 -0
  351. data/spec/javascripts/spec_helper.js +32 -0
  352. data/spec/javascripts/util_spec.js +12 -0
  353. data/spec/lib/geoblacklight/bounding_box_spec.rb +27 -0
  354. data/spec/lib/geoblacklight/controller_override_spec.rb +1 -0
  355. data/spec/lib/geoblacklight/document_presenter_spec.rb +61 -0
  356. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +19 -0
  357. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +20 -0
  358. data/spec/lib/geoblacklight/download/hgl_download_spec.rb +60 -0
  359. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +20 -0
  360. data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +19 -0
  361. data/spec/lib/geoblacklight/download_spec.rb +177 -0
  362. data/spec/lib/geoblacklight/geoblacklight_helper_behavior_spec.rb +30 -0
  363. data/spec/lib/geoblacklight/item_viewer_spec.rb +63 -0
  364. data/spec/lib/geoblacklight/metadata/base_spec.rb +157 -0
  365. data/spec/lib/geoblacklight/metadata/html_spec.rb +18 -0
  366. data/spec/lib/geoblacklight/metadata_spec.rb +42 -0
  367. data/spec/lib/geoblacklight/metadata_transformer/base_spec.rb +35 -0
  368. data/spec/lib/geoblacklight/metadata_transformer/fgdc_spec.rb +23 -0
  369. data/spec/lib/geoblacklight/metadata_transformer/iso19139_spec.rb +23 -0
  370. data/spec/lib/geoblacklight/metadata_transformer_spec.rb +69 -0
  371. data/spec/lib/geoblacklight/reference_spec.rb +64 -0
  372. data/spec/lib/geoblacklight/references_spec.rb +216 -0
  373. data/spec/lib/geoblacklight/relation/ancestors_spec.rb +32 -0
  374. data/spec/lib/geoblacklight/relation/descendants_spec.rb +32 -0
  375. data/spec/lib/geoblacklight/relation/relation_response_spec.rb +43 -0
  376. data/spec/lib/geoblacklight/view_helper_override_spec.rb +37 -0
  377. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +50 -0
  378. data/spec/lib/geoblacklight/wms_layer_spec.rb +99 -0
  379. data/spec/models/concerns/geoblacklight/solr_document/carto_spec.rb +61 -0
  380. data/spec/models/concerns/geoblacklight/solr_document/finder_spec.rb +40 -0
  381. data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +16 -0
  382. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +251 -0
  383. data/spec/models/concerns/geoblacklight/spatial_search_behavior_spec.rb +84 -0
  384. data/spec/routing/catalog_routing_spec.rb +8 -0
  385. data/spec/spec_helper.rb +79 -0
  386. data/spec/support/backport_test_helpers.rb +45 -0
  387. data/spec/support/features.rb +5 -0
  388. data/spec/support/features/session_helpers.rb +20 -0
  389. data/spec/teaspoon_env.rb +213 -0
  390. data/spec/test_app_templates/Gemfile.extra +1 -0
  391. data/spec/test_app_templates/lib/generators/test_app_generator.rb +49 -0
  392. data/spec/test_app_templates/metadata/fgdc.html +129 -0
  393. data/spec/test_app_templates/metadata/fgdc.xml +145 -0
  394. data/spec/test_app_templates/metadata/iso.html +275 -0
  395. data/spec/test_app_templates/metadata/iso.xml +511 -0
  396. data/spec/test_app_templates/solr_documents +1 -0
  397. data/spec/views/catalog/_document_split.html.erb_spec.rb +5 -0
  398. data/spec/views/catalog/_index_split.html.erb_spec.rb +5 -0
  399. data/spec/views/catalog/_results_pagination.html.erb_spec.rb +9 -0
  400. data/spec/views/catalog/_show_downloads.html.erb_spec.rb +41 -0
  401. data/spec/views/catalog/_show_tools.html.erb_spec.rb +39 -0
  402. data/template.rb +19 -0
  403. data/vendor/assets/images/layers-2x.png +0 -0
  404. data/vendor/assets/images/layers.png +0 -0
  405. data/vendor/assets/images/marker-icon-2x.png +0 -0
  406. data/vendor/assets/images/marker-icon.png +0 -0
  407. data/vendor/assets/images/marker-shadow.png +0 -0
  408. data/vendor/assets/javascripts/esri-leaflet.js +5 -0
  409. data/vendor/assets/javascripts/esri-leaflet.js.map +1 -0
  410. data/vendor/assets/javascripts/leaflet-iiif.js +302 -0
  411. data/vendor/assets/javascripts/leaflet-src.js.map +1 -0
  412. data/vendor/assets/javascripts/leaflet.js.erb +13922 -0
  413. data/vendor/assets/javascripts/native.history.js +1 -0
  414. data/vendor/assets/javascripts/readmore.js +618 -0
  415. data/vendor/assets/javascripts/readmore.js.map +1 -0
  416. data/vendor/assets/stylesheets/leaflet-label.css +54 -0
  417. data/vendor/assets/stylesheets/leaflet.css +635 -0
  418. metadata +967 -0
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ describe CatalogController, type: :controller do
4
+ describe '#web_services' do
5
+ it 'returns a document based off an id' do
6
+ get :web_services, params: { id: 'mit-f6rqs4ucovjk2' }
7
+ expect(response.status).to eq 200
8
+ expect(assigns(:documents)).not_to be_nil
9
+ end
10
+ end
11
+
12
+ describe '.default_solr_params' do
13
+ it 'sets the number of rows returned by Solr to 10 and does not filter the results' do
14
+ get :index
15
+ expect(response.status).to eq 200
16
+ expect(assigns(:response).docs).not_to be_empty
17
+ expect(assigns(:response).docs.length).to eq 10
18
+ end
19
+
20
+ it 'sets the starting document index to 0' do
21
+ get :index
22
+ expect(response.status).to eq 200
23
+ expect(assigns(:response).docs).not_to be_empty
24
+ expect(assigns(:response).docs.first.id).to eq 'stanford-cg357zz0321'
25
+ end
26
+
27
+ context 'with altered default parameters' do
28
+ let(:blacklight_config) { Blacklight::Configuration.new }
29
+
30
+ before do
31
+ allow(controller).to receive_messages blacklight_config: blacklight_config
32
+ end
33
+
34
+ it 'sets the starting document index' do
35
+ blacklight_config.default_solr_params = { start: 2, 'q.alt' => '*:*' }
36
+ get :index
37
+ expect(response.status).to eq 200
38
+ expect(assigns(:response).docs).not_to be_empty
39
+ expect(assigns(:response).docs.first.id).to eq 'mit-001145244'
40
+ end
41
+
42
+ it 'filters using a default DisMax query when no query is provided by the client' do
43
+ blacklight_config.default_solr_params = { start: 10, 'q.alt' => '{!dismax}id:nyu' }
44
+ get :index
45
+ expect(response.status).to eq 200
46
+ expect(assigns(:response).docs).to be_empty
47
+ end
48
+ end
49
+
50
+ context 'with altered per page parameters' do
51
+ let(:blacklight_config) { Blacklight::Configuration.new }
52
+
53
+ before do
54
+ allow(controller).to receive_messages blacklight_config: blacklight_config
55
+ end
56
+
57
+ it 'alters the number of documents returned from Solr' do
58
+ blacklight_config.default_per_page = 20
59
+ get :index
60
+ expect(response.status).to eq 200
61
+ expect(assigns(:response).docs).not_to be_empty
62
+ expect(assigns(:response).docs.length).to eq 20
63
+ end
64
+ end
65
+ end
66
+
67
+ describe '#raw' do
68
+ it 'returns a JSON representation of a Solr Document' do
69
+ get :raw, params: { id: 'tufts-cambridgegrid100-04' }
70
+ expect(response.status).to eq 200
71
+ expect(response.body).not_to be_empty
72
+ response_values = JSON.parse(response.body)
73
+ expect(response_values).to include 'geoblacklight_version' => '1.0'
74
+ expect(response_values).to include 'dc_title_s' => '100 Foot Grid Cambridge MA 2004'
75
+ expect(response_values).to include 'dc_identifier_s' => 'urn:geodata.tufts.edu:Tufts.CambridgeGrid100_04'
76
+ expect(response_values).to include 'dc_rights_s' => 'Public'
77
+ expect(response_values).to include 'dct_provenance_s' => 'Tufts'
78
+ expect(response_values).to include 'layer_slug_s' => 'tufts-cambridgegrid100-04'
79
+ expect(response_values).to include 'solr_geom' => 'ENVELOPE(-71.163984, -71.052581, 42.408316, 42.34757)'
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,120 @@
1
+ require 'spec_helper'
2
+
3
+ describe DownloadController, type: :controller do
4
+ describe '#file' do
5
+ describe 'restricted file' do
6
+ it 'redirects to login for authentication' do
7
+ get :file, params: { id: 'stanford-cg357zz0321-shapefile', format: 'zip' }
8
+ expect(response.status).to eq 401
9
+ end
10
+ end
11
+ describe 'public file' do
12
+ it 'initiates download' do
13
+ allow(controller).to receive(:render) # Needed for testing with Rails 4
14
+ expect(controller).to receive(:send_file)
15
+ get :file, params: { id: 'mit-f6rqs4ucovjk2-shapefile', format: 'zip' }
16
+ end
17
+ end
18
+ end
19
+ describe '#show' do
20
+ describe 'restricted file' do
21
+ it 'redirects to login for authentication' do
22
+ get :show, params: { id: 'stanford-cg357zz0321', format: 'json' }
23
+ expect(response.status).to eq 401
24
+ end
25
+ end
26
+ describe 'public file' do
27
+ let(:shapefile_download) { instance_double(Geoblacklight::ShapefileDownload) }
28
+
29
+ before do
30
+ allow(Geoblacklight::ShapefileDownload).to receive(:new).and_return(shapefile_download)
31
+ end
32
+
33
+ it 'initiates download creation' do
34
+ allow(shapefile_download).to receive(:get).and_return('success')
35
+ get :show, params: { id: 'mit-f6rqs4ucovjk2', type: 'shapefile' }
36
+ expect(response.status).to eq 200
37
+ end
38
+ end
39
+
40
+ context 'when requesting GeoJSON files' do
41
+ let(:id) { 'tufts-cambridgegrid100-04' }
42
+ let(:type) { 'geojson' }
43
+ let(:geojson_download) { instance_double(Geoblacklight::GeojsonDownload) }
44
+
45
+ before do
46
+ allow(geojson_download).to receive(:get).and_return('file.json')
47
+ allow(Geoblacklight::GeojsonDownload).to receive(:new).and_return(geojson_download)
48
+ end
49
+
50
+ it 'downloads the files and notifies the user' do
51
+ expect(Geoblacklight::GeojsonDownload).to receive(:new)
52
+ get :show, params: { id: id, type: type }
53
+
54
+ expect(response.body).to include 'success'
55
+ expect(response.body).to include 'Your file file.json is ready for download'
56
+ end
57
+ end
58
+
59
+ context 'when requesting GeoTIFF files' do
60
+ let(:id) { 'tufts-cambridgegrid100-04' }
61
+ let(:type) { 'geotiff' }
62
+ let(:geotiff_download) { instance_double(Geoblacklight::GeotiffDownload) }
63
+
64
+ before do
65
+ allow(geotiff_download).to receive(:get).and_return('file.tiff')
66
+ allow(Geoblacklight::GeotiffDownload).to receive(:new).and_return(geotiff_download)
67
+ end
68
+
69
+ it 'downloads the files and notifies the user' do
70
+ expect(Geoblacklight::GeotiffDownload).to receive(:new)
71
+ get :show, params: { id: id, type: type }
72
+
73
+ expect(response.body).to include 'success'
74
+ expect(response.body).to include 'Your file file.tiff is ready for download'
75
+ end
76
+ end
77
+ end
78
+
79
+ describe '#hgl' do
80
+ let(:hgl_download) { instance_double(Geoblacklight::HglDownload) }
81
+
82
+ it 'requests file' do
83
+ allow(hgl_download).to receive(:get).and_return('success')
84
+ allow(Geoblacklight::HglDownload).to receive(:new).and_return(hgl_download)
85
+
86
+ get :hgl, params: { id: 'harvard-g7064-s2-1834-k3', email: 'foo@example.com' }
87
+ expect(response.status).to eq 200
88
+ end
89
+
90
+ it 'renders form' do
91
+ allow(Geoblacklight::HglDownload).to receive(:new).and_return(hgl_download)
92
+
93
+ get :hgl, params: { id: 'harvard-g7064-s2-1834-k3' }
94
+ expect(response).to render_template('hgl')
95
+ end
96
+
97
+ context 'when an error occurs while downloading a file' do
98
+ let(:exception) { Geoblacklight::Exceptions::ExternalDownloadFailed.new(url: nil) }
99
+
100
+ it 'uses the default error message when the exception does not have a URL' do
101
+ allow(Geoblacklight::HglDownload).to receive(:new).and_raise(exception)
102
+
103
+ get :hgl, params: { id: 'harvard-g7064-s2-1834-k3', email: 'foo@example.com' }
104
+ expect(response.body).to include('danger')
105
+ expect(response.body).to include('Sorry, the requested file could not be downloaded')
106
+ end
107
+ end
108
+
109
+ context 'when downloading the requested file fails' do
110
+ it 'flashes the error message' do
111
+ allow(hgl_download).to receive(:get).and_return(nil)
112
+ allow(Geoblacklight::HglDownload).to receive(:new).and_return(hgl_download)
113
+
114
+ get :hgl, params: { id: 'harvard-g7064-s2-1834-k3', email: 'foo@example.com' }
115
+ expect(response.body).to include('danger')
116
+ expect(response.body).to include('Sorry, the requested file could not be downloaded')
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe RelationController, type: :controller do
4
+ describe '#index' do
5
+ it 'returns a listing of related documents for a record' do
6
+ get :index, params: { id: 'nyu_2451_34502' }
7
+ expect(response.status).to eq 200
8
+ expect(assigns(:relations)).not_to be_nil
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe WmsController, type: :controller do
4
+ let(:wms_layer) { instance_double('Geoblacklight::WmsLayer') }
5
+ let(:feature_info) { { values: ['fid', 'layer:example'] } }
6
+ let(:params) do
7
+ { format: 'json', 'URL' => 'http://www.example.com/', 'LAYERS' => 'layer:example',
8
+ 'BBOX' => '-74, 40, -68, 43', 'WIDTH' => '500', 'HEIGHT' => '400',
9
+ 'QUERY_LAYERS' => 'layer:example', 'X' => '277', 'Y' => '195' }
10
+ end
11
+
12
+ before do
13
+ allow(Geoblacklight::WmsLayer).to receive(:new).and_return(wms_layer)
14
+ allow(wms_layer).to receive(:feature_info).and_return(feature_info)
15
+ end
16
+
17
+ describe '#handle' do
18
+ it 'returns feature info as json' do
19
+ get :handle, params: params
20
+ expect(response.body).to eq(feature_info.to_json)
21
+ end
22
+ end
23
+
24
+ describe '#wms_params' do
25
+ let(:wms_params) { controller.instance_eval { wms_params } }
26
+
27
+ it 'returns only permitted params' do
28
+ get :handle, params: params
29
+ expect(wms_params.to_h).not_to eq(params)
30
+ params.delete(:format)
31
+ expect(wms_params.to_h).to eq(params)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ FactoryBot.define do
2
+ factory :user do
3
+ sequence(:email) { |n| "user#{n}@example.com" }
4
+ password { 'password' }
5
+ password_confirmation { 'password' }
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Blacklight Bookmarks' do
4
+ scenario 'index has created bookmarks' do
5
+ visit solr_document_path 'nyu-2451-34564'
6
+ click_button 'Bookmark'
7
+ visit bookmarks_path
8
+ expect(page).to have_css '.document', count: 1
9
+ end
10
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Configurable basemap', js: true do
4
+ scenario 'defaults to positron' do
5
+ visit root_path
6
+ expect(page).to have_css "img[src*='carto']"
7
+ end
8
+ feature 'without provided basemap config' do
9
+ before do
10
+ CatalogController.blacklight_config.basemap_provider = nil
11
+ end
12
+ scenario 'has Carto map' do
13
+ visit root_path
14
+ expect(page).to have_css "img[src*='carto']"
15
+ end
16
+ end
17
+ feature 'using darkMatter' do
18
+ before do
19
+ CatalogController.blacklight_config.basemap_provider = 'darkMatter'
20
+ end
21
+ scenario 'has darkMatter map' do
22
+ visit root_path
23
+ expect(page).to have_css "img[src*='dark_all']"
24
+ end
25
+ end
26
+ feature 'using openstreetmapHot' do
27
+ before do
28
+ CatalogController.blacklight_config.basemap_provider = 'openstreetmapHot'
29
+ end
30
+ scenario 'has openstreetmapHot map' do
31
+ visit root_path
32
+ expect(page).to have_css "img[src*='hot']"
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Data dictionary download tool' do
4
+ feature 'when data_dictionary reference present' do
5
+ scenario 'shows up in tools' do
6
+ visit solr_document_path 'nyu_2451_34502'
7
+ expect(page).to have_css 'li.data_dictionary a', text: 'Documentation'
8
+ end
9
+ end
10
+ feature 'when data_dictionary reference absent' do
11
+ scenario 'download tool is not rendered' do
12
+ visit solr_document_path 'stanford-cg357zz0321'
13
+ expect(page).not_to have_css 'li.data_dictionary a', text: 'Documentation'
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,93 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Download layer' do
4
+ let(:shapefile_download) { instance_double(Geoblacklight::ShapefileDownload) }
5
+ let(:kmz_download) { instance_double(Geoblacklight::KmzDownload) }
6
+
7
+ before do
8
+ allow(Geoblacklight::ShapefileDownload).to receive(:new).and_return(shapefile_download)
9
+ allow(Geoblacklight::KmzDownload).to receive(:new).and_return(kmz_download)
10
+ end
11
+
12
+ scenario 'clicking initial shapefile download button should trigger download', js: true do
13
+ expect(shapefile_download).to receive(:get).and_return('mit-f6rqs4ucovjk2-shapefile.zip')
14
+ visit solr_document_path('mit-f6rqs4ucovjk2')
15
+ find('a[data-download-type="shapefile"]', text: 'Export').click
16
+ expect(page).to have_css(
17
+ 'a[href="/download/file/mit-f6rqs4ucovjk2-shapefile.zip"]',
18
+ text: 'Your file mit-f6rqs4ucovjk2-shapefile.zip is ready for download'
19
+ )
20
+ end
21
+ scenario 'failed download should return message with link to layer', js: true do
22
+ expect(shapefile_download).to receive(:get).and_raise(Geoblacklight::Exceptions::ExternalDownloadFailed.new(message: 'Failed', url: 'http://www.example.com/failed'))
23
+ visit solr_document_path('mit-f6rqs4ucovjk2')
24
+ find('a[data-download-type="shapefile"]', text: 'Export').click
25
+ expect(page).to have_css 'div.alert.alert-danger', text: 'Sorry, the requested file could not be downloaded. Try downloading it directly from:'
26
+ expect(page).to have_css 'a', text: 'http://www.example.com/failed'
27
+ end
28
+ scenario 'clicking kmz download button should trigger download', js: true do
29
+ expect(kmz_download).to receive(:get).and_return('mit-f6rqs4ucovjk2-kmz.kmz')
30
+ visit solr_document_path('mit-f6rqs4ucovjk2')
31
+ find('a[data-download-type="kmz"]', text: 'Export').click
32
+ expect(page).to have_css(
33
+ 'a[href="/download/file/mit-f6rqs4ucovjk2-kmz.kmz"]',
34
+ text: 'Your file mit-f6rqs4ucovjk2-kmz.kmz is ready for download'
35
+ )
36
+ end
37
+ scenario 'jpg download option should be present under toggle' do
38
+ visit solr_document_path('princeton-02870w62c')
39
+ expect(page).to have_css('li a', text: 'Original JPG')
40
+ end
41
+ scenario 'clicking jpg download button should redirect to external image' do
42
+ visit solr_document_path('princeton-02870w62c')
43
+ expect(page).to have_css("a.btn.btn-default[href='https://libimages.princeton.edu/loris/pudl0076/map_pownall/00000001.jp2/full/full/0/default.jpg']", text: 'Original JPG')
44
+ end
45
+ scenario 'options should be available under toggle' do
46
+ visit solr_document_path('mit-f6rqs4ucovjk2')
47
+ expect(page).to have_css('li a[data-download-type="shapefile"]', text: 'Export')
48
+ expect(page).to have_css('li a[data-download-type="kmz"]', text: 'Export')
49
+ end
50
+ scenario 'restricted layer should not have download available to non logged in user' do
51
+ visit solr_document_path('stanford-cg357zz0321')
52
+ expect(page).to have_css 'a', text: 'Login to View and Download'
53
+ expect(page).not_to have_css 'button', text: 'Download Shapefile'
54
+ end
55
+ scenario 'restricted layer should have download available to logged in user' do
56
+ sign_in
57
+ visit solr_document_path('stanford-cg357zz0321')
58
+ expect(page).not_to have_css 'a', text: 'Login to view and download'
59
+ expect(page).to have_css 'a[data-download-type="shapefile"]', text: 'Export'
60
+ end
61
+ scenario 'layer with direct download and wms/wfs should include all download types' do
62
+ sign_in
63
+ visit solr_document_path('stanford-cg357zz0321')
64
+ expect(page).to have_css 'h2', text: 'Downloads'
65
+ expect(page).to have_css 'a', text: 'Original Shapefile'
66
+ expect(page).to have_css 'h2', text: 'Export Formats'
67
+ expect(page).to have_css 'a', text: 'Export'
68
+ end
69
+ scenario 'clicking GeoTIFF button for Harvard layer should show email form', js: true do
70
+ visit solr_document_path('harvard-g7064-s2-1834-k3')
71
+ find('a[data-download-type="harvard-hgl"]', text: 'GeoTIFF').click
72
+ expect(page).to have_css('#hglRequest')
73
+ end
74
+ context 'with a successful request to the server' do
75
+ let(:hgl_download) { instance_double(Geoblacklight::HglDownload) }
76
+
77
+ xscenario 'submitting email form should trigger HGL request', js: true do
78
+ # There are currently difficulties with testing the HGL downloader
79
+ visit solr_document_path('harvard-g7064-s2-1834-k3')
80
+ find('a[data-download-type="harvard-hgl"]', text: 'Original GeoTIFF').click
81
+
82
+ allow_any_instance_of(Geoblacklight::HglDownload).to receive(:new).and_return(hgl_download)
83
+ allow(hgl_download).to receive(:get).and_return('success')
84
+
85
+ within '#hglRequest' do
86
+ fill_in('Email', with: 'foo@example.com')
87
+ click_button('Request')
88
+ end
89
+ expect(page).to have_css('.alert-success')
90
+ expect(page).to have_content('You should receive an email when your download is ready')
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Empty search' do
4
+ before do
5
+ visit root_path
6
+ end
7
+ scenario 'Entering empty search returns results page' do
8
+ click_button 'search'
9
+ expect(page).to have_css '#documents'
10
+ end
11
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'feature_layer reference', js: true do
4
+ scenario 'displays image map layer' do
5
+ visit solr_document_path '32653ed6-8d83-4692-8a06-bf13ffe2c018'
6
+ expect(page).to have_css '.leaflet-control-zoom', visible: true
7
+ expect(page).to have_css 'img.leaflet-image-layer', visible: true
8
+ end
9
+ scenario 'displays dynamic layer (all layers)' do
10
+ pending 'external service disabled cors access'
11
+ visit solr_document_path '90f14ff4-1359-4beb-b931-5cb41d20ab90'
12
+ expect(page).to have_css '.leaflet-control-zoom', visible: true
13
+ expect(page).to have_css 'img.leaflet-image-layer', visible: true
14
+ end
15
+ scenario 'displays dynamic layer (single layer)' do
16
+ visit solr_document_path '4669301e-b4b2-4c8b-bf40-01b968a2865b'
17
+ expect(page).to have_css '.leaflet-control-zoom', visible: true
18
+ expect(page).to have_css 'img.leaflet-image-layer', visible: true
19
+ end
20
+ scenario 'displays feature layer' do
21
+ pending 'cannot currently test for svg feature'
22
+ visit solr_document_path 'f406332e63eb4478a9560ad86ae90327_18'
23
+ expect(page).to have_css '.leaflet-control-zoom', visible: true
24
+ expect(Nokogiri::HTML.parse(page.body).css('g').length).to eq 23
25
+ fail
26
+ end
27
+ scenario 'displays image map layer' do
28
+ visit solr_document_path '32653ed6-8d83-4692-8a06-bf13ffe2c018'
29
+ expect(page).to have_css '.leaflet-control-zoom', visible: true
30
+ expect(page).to have_css 'img.leaflet-image-layer', visible: true
31
+ end
32
+ scenario 'displays tiled map layer' do
33
+ visit solr_document_path 'nyu-test-soil-survey-map'
34
+ expect(page).to have_css '.leaflet-control-zoom', visible: true
35
+ expect(page).to have_css 'img.leaflet-tile.leaflet-tile-loaded', visible: true
36
+ end
37
+ scenario 'displays Esri WMS layer' do
38
+ visit solr_document_path 'purdue-urn-f082acb1-b01e-4a08-9126-fd62a23fd9aa'
39
+ expect(page).to have_css '.leaflet-control-zoom', visible: true
40
+ expect(page).to have_css 'img.leaflet-tile.leaflet-tile-loaded', visible: true
41
+ end
42
+ end